Merge branch 'master' into 'disapp-sr'

# Conflicts:
#   app/src/main/res/values-sr/strings.xml
This commit is contained in:
Massimiliano 2018-12-23 21:02:33 +01:00
commit 2d5f83c7b8
30 changed files with 1697 additions and 164 deletions

View File

@ -0,0 +1,32 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="WizardSettings">
<option name="children">
<map>
<entry key="vectorWizard">
<value>
<PersistentState>
<option name="children">
<map>
<entry key="vectorAssetStep">
<value>
<PersistentState>
<option name="values">
<map>
<entry key="assetSourceType" value="FILE" />
<entry key="outputName" value="ic_notes" />
<entry key="sourceFile" value="$PROJECT_DIR$/../DisIcons/ic_notes.svg" />
</map>
</option>
</PersistentState>
</value>
</entry>
</map>
</option>
</PersistentState>
</value>
</entry>
</map>
</option>
</component>
</project>

View File

@ -3,7 +3,7 @@
[![Donate LiberaPay](https://img.shields.io/badge/donate-liberapay-orange.svg)](https://liberapay.com/Disroot)
---
#Disroot app
# Disroot app
Disroot is a platform providing online services based on principles of freedom, privacy, federation and decentralization.
This app is like your Swiss Army knife to the Disroot platform, made by the community for the community.
If you don't have a Disroot account you can still use this app to access all the Disroot services that do not require an account:
@ -17,11 +17,14 @@ If you don't have a Disroot account you can still use this app to access all th
The app may require you to install additional apps. We highly recommend you install F-Droid - a free and open source app marketplace - as not all apps can be found on Google's Play Store and F-Droid is more privacy oriented (no tracking, no account needed) you can download it [here](https://f-droid.org/FDroid.apk).
####Supported languages:
#### Supported languages:
* English
* Spanish
* French
* Italian
* Portuguese
* Dutch
* Serbian
---
### Licensing
@ -36,7 +39,7 @@ Android 4.1 or +
This app requires access to the Internet and to external storage to be able to upload and download files.
---
###contributors
### contributors
The project is always open for contributions and accepts pull requests.
* Massimiliano
* muppeth
@ -44,6 +47,7 @@ The project is always open for contributions and accepts pull requests.
* Fede
* Maryjane
* meaz
* userdebug
---
#### Resources

View File

@ -6,8 +6,8 @@ android {
applicationId "org.disroot.disrootapp"
minSdkVersion 15
targetSdkVersion 28
versionCode 9
versionName "0.9.4"
versionCode 13
versionName "1.1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
@ -44,3 +44,7 @@ dependencies {
repositories {
mavenCentral()
}
dependencies {
implementation 'com.android.support.constraint:constraint-layout:+'
}

View File

@ -1 +0,0 @@
[{"outputType":{"type":"APK"},"apkInfo":{"type":"MAIN","splits":[],"versionCode":6,"versionName":"0.9.1","enabled":true,"outputFile":"app-release.apk","fullName":"release","baseName":"release"},"path":"app-release.apk","properties":{}}]

View File

@ -4,20 +4,19 @@
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CAMERA" />
<application
android:allowBackup="true"
android:fullBackupContent="@xml/backup_descriptor"
android:hardwareAccelerated="true"
android:icon="@mipmap/ic_disroot"
android:label="@string/app_name"
android:theme="@style/DisTheme"
android:supportsRtl="true"
android:allowBackup="true"
android:fullBackupContent="@xml/backup_descriptor">
android:theme="@style/DisTheme">
<activity
android:name="org.disroot.disrootapp.ui.SplashScreenActivity"
android:name=".ui.SplashScreenActivity"
android:configChanges="orientation|screenSize"
android:label="@string/app_name">
<intent-filter>
@ -27,39 +26,42 @@
</intent-filter>
</activity>
<activity
android:name="org.disroot.disrootapp.ui.MainActivity"
android:name=".ui.MainActivity"
android:configChanges="orientation|screenSize"
android:hardwareAccelerated="true"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:host="*.disroot.org"
android:scheme="https" />
</intent-filter>
</activity>
<activity
android:name="org.disroot.disrootapp.ui.AboutActivity"
android:name=".ui.AboutActivity"
android:label="@string/title_activity_about"
android:theme="@style/DisTheme" />
<activity android:name="org.disroot.disrootapp.ui.WelcomeActivity" />
<activity android:name=".ui.WelcomeActivity" />
<activity
android:name=".ui.StateActivity"
android:label="@string/title_activity_state"
android:theme="@style/DisTheme" />
<activity
android:name=".ui.StateMessagesActivity"
android:label="@string/title_activity_state"
android:theme="@style/DisTheme" />
<activity
android:name="wsdfhjxc.taponium.MainActivity"
android:screenOrientation="portrait"
android:label="@string/title_activity_tap">
android:label="@string/title_activity_tap"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
</application>
</manifest>

View File

@ -1,16 +1,23 @@
package org.disroot.disrootapp.ui;
import android.Manifest;
import android.annotation.SuppressLint;
import android.annotation.TargetApi;
import android.app.AlertDialog;
import android.app.DownloadManager;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.graphics.Bitmap;
import android.graphics.Color;
import android.media.RingtoneManager;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Build;
import android.os.Bundle;
import android.os.Environment;
@ -20,8 +27,10 @@ import android.provider.MediaStore;
import android.support.annotation.NonNull;
import android.support.annotation.RequiresApi;
import android.support.v4.app.ActivityCompat;
import android.support.v4.app.NotificationCompat;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.app.AppCompatDelegate;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.KeyEvent;
@ -32,11 +41,14 @@ import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.TranslateAnimation;
import android.webkit.CookieManager;
import android.webkit.CookieSyncManager;
import android.webkit.DownloadListener;
import android.webkit.GeolocationPermissions;
import android.webkit.URLUtil;
import android.webkit.ValueCallback;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Button;
@ -44,6 +56,7 @@ import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.FrameLayout;
import android.widget.ImageButton;
import android.widget.ListView;
import android.widget.ProgressBar;
import android.widget.ScrollView;
import android.widget.Toast;
@ -51,7 +64,11 @@ import android.widget.Toast;
import org.disroot.disrootapp.R;
import org.disroot.disrootapp.utils.Constants;
import org.disroot.disrootapp.utils.HttpHandler;
import org.disroot.disrootapp.webviews.DisWebChromeClient;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.File;
import java.io.IOException;
@ -62,6 +79,8 @@ import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Timer;
import java.util.TimerTask;
import de.cketti.library.changelog.ChangeLog;
@ -93,7 +112,16 @@ public class MainActivity extends AppCompatActivity implements View.OnLongClickL
public static final String CONTENT_HASHTAG = "content://org.disroot.disrootapp.ui.mainactivity/";
private CookieManager cookieManager;
//status report
private ProgressDialog pDialog;
private ListView lv;
public SharedPreferences checkDate;
// URL to get data JSON
static String incidenturl0 ="https://state.disroot.org/api/v1/incidents?sort=id&order=desc";
ArrayList<HashMap<String, String>> messageList;
ArrayList<HashMap<String, String>> getDate;
@Override
public void onCreate(Bundle savedInstanceState) {
@ -159,14 +187,17 @@ public class MainActivity extends AppCompatActivity implements View.OnLongClickL
});
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
String k9 = "com.fsck.k9";
Intent mail = getPackageManager().getLaunchIntentForPackage(k9);
if(mail == null) {
mail = new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id="+k9));
}//first time tap check
//first time tap check
if (firstStart.getBoolean("firsttap", true)){
showFirstTap();
firstStart.edit().putBoolean("firsttap", false).apply();
return;
}
String k9 = "com.fsck.k9";
Intent mail = getPackageManager().getLaunchIntentForPackage(k9);
if(mail == null) {
showMailDialog();
return;
}
else startActivity(mail);
}
@ -184,14 +215,17 @@ public class MainActivity extends AppCompatActivity implements View.OnLongClickL
});
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
String nc = "com.nextcloud.client";
Intent cloud = getPackageManager().getLaunchIntentForPackage(nc);
if(cloud == null) {
cloud = new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id="+nc));
}//first time tap check
//first time tap check
if (firstStart.getBoolean("firsttap", true)){
showFirstTap();
firstStart.edit().putBoolean("firsttap", false).apply();
return;
}
String nc = "com.nextcloud.client";
Intent cloud = getPackageManager().getLaunchIntentForPackage(nc);
if(cloud == null) {
showCloudDialog();
return;
}
else startActivity(cloud);
}
@ -208,18 +242,20 @@ public class MainActivity extends AppCompatActivity implements View.OnLongClickL
});
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
String Diaspora = "com.github.dfa.diaspora_android";
Intent pod = getPackageManager().getLaunchIntentForPackage(Diaspora);
if(pod == null) {
pod = new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id="+Diaspora));
}//first time tap check
//first time tap check
if (firstStart.getBoolean("firsttap", true)){
showFirstTap();
firstStart.edit().putBoolean("firsttap", false).apply();
return;
}
String Diaspora = "com.github.dfa.diaspora_android";
Intent pod = getPackageManager().getLaunchIntentForPackage(Diaspora);
if(pod == null) {
showDiaDialog();
return;
}
else startActivity(pod);
}
});
button = findViewById(R.id.ForumBtn);//ForumBtn
@ -267,11 +303,13 @@ public class MainActivity extends AppCompatActivity implements View.OnLongClickL
return;
}
if((xmpp1 == null)&&(xmpp2 == null)) {
xmpp1 = new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id="+Conversations));
showChatDialog();
return;
}
/* if((xmpp1 == null)&&(xmpp2 != null)) { */
if((xmpp1 == null)&&(xmpp2 != null)) {//if(xmpp1 == null) {
startActivity(xmpp2);
return;
}
//need to change to give user choise || check.getBoolean("checkPix",false)
if((xmpp1 != null)&&(xmpp2 != null)) {
@ -303,15 +341,17 @@ public class MainActivity extends AppCompatActivity implements View.OnLongClickL
});
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
String Padland = "com.mikifus.padland";
Intent pad = getPackageManager().getLaunchIntentForPackage(Padland);
if(pad == null) {
pad = new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id="+Padland));
}
//first time tap check
if (firstStart.getBoolean("firsttap", true)){
showFirstTap();
firstStart.edit().putBoolean("firsttap", false).apply();
return;
}
String Padland = "com.mikifus.padland";
Intent pad = getPackageManager().getLaunchIntentForPackage(Padland);
if(pad == null) {
showPAdDialog();
return;
}
else startActivity(pad);
}
@ -382,10 +422,15 @@ public class MainActivity extends AppCompatActivity implements View.OnLongClickL
firstStart.edit().putBoolean("firsttap", false).apply();
return;
}
else
webView.loadUrl(Constants.URL_DisApp_UPLOAD);
webView.setVisibility(View.VISIBLE);
dashboard.setVisibility(View.GONE);
else {
Uri uri = Uri.parse(Constants.URL_DisApp_UPLOAD);
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
}
//workaround for crashing app
// webView.loadUrl(Constants.URL_DisApp_UPLOAD);
// webView.setVisibility(View.VISIBLE);
// dashboard.setVisibility(View.GONE);
}
});
@ -462,6 +507,32 @@ public class MainActivity extends AppCompatActivity implements View.OnLongClickL
});
button = findViewById(R.id.NotesBtn);//NotesBtn
button.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
showNotesInfo();
return true;
}
});
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
//first time tap check
if (firstStart.getBoolean("firsttap", true)){
showFirstTap();
firstStart.edit().putBoolean("firsttap", false).apply();
return;
}
String NotesApp = "it.niedermann.owncloud.notes";
Intent notes = getPackageManager().getLaunchIntentForPackage(NotesApp);
if(notes == null) {
showNotesDialog();
return;
}
else startActivity(notes);
}
});
button = findViewById(R.id.UserBtn);//UserBtn
button.setOnLongClickListener(new View.OnLongClickListener() {
@Override
@ -496,6 +567,7 @@ public class MainActivity extends AppCompatActivity implements View.OnLongClickL
});
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
Intent goState = new Intent(MainActivity.this, StateActivity.class);
//first time tap check
if (firstStart.getBoolean("firsttap", true)){
showFirstTap();
@ -503,9 +575,10 @@ public class MainActivity extends AppCompatActivity implements View.OnLongClickL
return;
}
else
webView.loadUrl(Constants.URL_DisApp_STATE);
webView.setVisibility(View.VISIBLE);
dashboard.setVisibility(View.GONE);
MainActivity.this.startActivity(goState);
//webView.loadUrl(Constants.URL_DisApp_STATE);
//webView.setVisibility(View.VISIBLE);
//dashboard.setVisibility(View.GONE);
}
});
@ -564,6 +637,29 @@ public class MainActivity extends AppCompatActivity implements View.OnLongClickL
return true;
}
});
//Status report
messageList = new ArrayList<>();
getDate = new ArrayList<>();
lv = findViewById(R.id.list);
checkDate = getSharedPreferences("storeDate", Context.MODE_PRIVATE);
//Check json for updates
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
new MainActivity.GetList().execute();
}
});
}
}, 100, 100000);//100000=100sec
}
//Dialog windows
@ -648,6 +744,25 @@ public class MainActivity extends AppCompatActivity implements View.OnLongClickL
});
builder.show();
}
private void showMailDialog(){
final ScrollView dashboard = findViewById(R.id.dashboard);
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setCancelable(false);
builder.setTitle(R.string.DiaInstallTitle);
builder.setMessage(getString(R.string.MailDialog));
builder.setPositiveButton(R.string.global_install, new DialogInterface.OnClickListener() {
String k9 = "com.fsck.k9";
Intent mail = getPackageManager().getLaunchIntentForPackage(k9);
@Override
public void onClick(DialogInterface dialog, int which) {
mail = new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + k9));
startActivity(mail);
}
});
builder.setNegativeButton(R.string.global_cancel , null);
builder.show();
}
//Cloud Info
private void showCloudInfo() {
final ScrollView dashboard = findViewById(R.id.dashboard);
@ -666,6 +781,25 @@ public class MainActivity extends AppCompatActivity implements View.OnLongClickL
});
builder.show();
}
private void showCloudDialog(){
final ScrollView dashboard = findViewById(R.id.dashboard);
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setCancelable(false);
builder.setTitle(R.string.DiaInstallTitle);
builder.setMessage(getString(R.string.CloudDialog));
builder.setPositiveButton(R.string.global_install, new DialogInterface.OnClickListener() {
String nc = "com.nextcloud.client";
Intent cloud = getPackageManager().getLaunchIntentForPackage(nc);
@Override
public void onClick(DialogInterface dialog, int which) {
cloud = new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + nc));
startActivity(cloud);
}
});
builder.setNegativeButton(R.string.global_cancel , null);
builder.show();
}
//Diaspora info
private void showDiaInfo() {
final ScrollView dashboard = findViewById(R.id.dashboard);
@ -684,6 +818,24 @@ public class MainActivity extends AppCompatActivity implements View.OnLongClickL
});
builder.show();
}
private void showDiaDialog(){
final ScrollView dashboard = findViewById(R.id.dashboard);
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setCancelable(false);
builder.setTitle(R.string.DiaInstallTitle);
builder.setMessage(getString(R.string.DiasporaDialog));
builder.setPositiveButton(R.string.global_install, new DialogInterface.OnClickListener() {
String Diaspora = "com.github.dfa.diaspora_android";
Intent pod = getPackageManager().getLaunchIntentForPackage(Diaspora);
@Override
public void onClick(DialogInterface dialog, int which) {
pod = new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + Diaspora));
startActivity(pod);
}
});
builder.setNegativeButton(R.string.global_cancel , null);
builder.show();
}
private void showForumInfo() {
final ScrollView dashboard = findViewById(R.id.dashboard);
@ -754,6 +906,24 @@ public class MainActivity extends AppCompatActivity implements View.OnLongClickL
});
builder.show();
}
private void showChatDialog(){
final ScrollView dashboard = findViewById(R.id.dashboard);
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setCancelable(false);
builder.setTitle(R.string.DiaInstallTitle);
builder.setMessage(getString(R.string.ChatDialog));
builder.setPositiveButton(R.string.global_install, new DialogInterface.OnClickListener() {
String Conversations = "eu.siacs.conversations";
Intent xmpp1 = getPackageManager().getLaunchIntentForPackage(Conversations);
@Override
public void onClick(DialogInterface dialog, int which) {
xmpp1 = new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + Conversations));
startActivity(xmpp1);
}
});
builder.setNegativeButton(R.string.global_cancel , null);
builder.show();
}
private void showPadInfo() {
final ScrollView dashboard = findViewById(R.id.dashboard);
@ -772,6 +942,24 @@ public class MainActivity extends AppCompatActivity implements View.OnLongClickL
});
builder.show();
}
private void showPAdDialog(){
final ScrollView dashboard = findViewById(R.id.dashboard);
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setCancelable(false);
builder.setTitle(R.string.DiaInstallTitle);
builder.setMessage(getString(R.string.ChatDialog));
builder.setPositiveButton(R.string.global_install, new DialogInterface.OnClickListener() {
String Padland = "com.mikifus.padland";
Intent pad = getPackageManager().getLaunchIntentForPackage(Padland);
@Override
public void onClick(DialogInterface dialog, int which) {
pad = new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + Padland));
startActivity(pad);
}
});
builder.setNegativeButton(R.string.global_cancel , null);
builder.show();
}
private void showCalcInfo() {
final ScrollView dashboard = findViewById(R.id.dashboard);
@ -881,6 +1069,43 @@ public class MainActivity extends AppCompatActivity implements View.OnLongClickL
builder.show();
}
//There is no extra info about Nextcoud notes yet
private void showNotesInfo() {
final ScrollView dashboard = findViewById(R.id.dashboard);
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setCancelable(false);
builder.setTitle(R.string.NotesTitle);
builder.setMessage(getString(R.string.NotesInfo));
builder.setPositiveButton(R.string.global_ok, null);
//builder.setNegativeButton(R.string.tell_more, new DialogInterface.OnClickListener() {
// @Override
// public void onClick(DialogInterface dialog, int which) {
// webView.loadUrl(Constants.URL_DisApp_NOTESHELP);
// webView.setVisibility(View.VISIBLE);
// dashboard.setVisibility(View.GONE);
// }
//});
builder.show();
}
private void showNotesDialog(){
final ScrollView dashboard = findViewById(R.id.dashboard);
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setCancelable(false);
builder.setTitle(R.string.DiaInstallTitle);
builder.setMessage(getString(R.string.NotesDialog));
builder.setPositiveButton(R.string.global_install, new DialogInterface.OnClickListener() {
String NotesApp = "it.niedermann.owncloud.notes";
Intent notes = getPackageManager().getLaunchIntentForPackage(NotesApp);
@Override
public void onClick(DialogInterface dialog, int which) {
notes = new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + NotesApp));
startActivity(notes);
}
});
builder.setNegativeButton(R.string.global_cancel , null);
builder.show();
}
private void showUserInfo() {
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setCancelable(false)
@ -1039,7 +1264,6 @@ public class MainActivity extends AppCompatActivity implements View.OnLongClickL
pbutton.setTextColor(Color.BLACK);
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
@ -1184,10 +1408,18 @@ public class MainActivity extends AppCompatActivity implements View.OnLongClickL
Intent goAbout = new Intent(MainActivity.this, AboutActivity.class);
MainActivity.this.startActivity(goAbout);
return true;
case R.id.action_exit: {
moveTaskToBack(true);
finish();
case R.id.action_clear_cookies: {
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){
CookieManager.getInstance().removeAllCookies(null);
}else{
CookieManager.getInstance().removeAllCookie();
}
}
return false;
case R.id.action_exit: {
moveTaskToBack(true);
finish();
return false;
}
default:
return super.onOptionsItemSelected(item);
@ -1208,9 +1440,33 @@ public class MainActivity extends AppCompatActivity implements View.OnLongClickL
webView.getSettings().setAllowFileAccess(true);
webView.getSettings().setLoadWithOverviewMode(true);
webView.getSettings().setUseWideViewPort(true);
webView.getSettings().setRenderPriority(WebSettings.RenderPriority.HIGH);
webView.getSettings().setAllowContentAccess(true);
// webView.loadUrl(Constants.URL_DisApp_MAIN_PAGE);
webView.setOnLongClickListener(this);
// webView.setVisibility(View.GONE);;
// webView.setVisibility(View.GONE);
//enable cookies
cookieManager = CookieManager.getInstance();
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
CookieSyncManager.createInstance(webView.getContext());
cookieManager.setAcceptCookie(true);
cookieManager.setAcceptThirdPartyCookies(webView,false);
AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
}
CookieSyncManager syncManager = CookieSyncManager.createInstance(webView.getContext());
CookieManager cookieManager = CookieManager.getInstance();
String cookieString = "cookie_name=cookie_value; path=/";
String baseUrl="disroot.org";
cookieManager.setCookie(baseUrl, cookieString);
syncManager.sync();
String cookies = cookieManager.getCookie(baseUrl);
if (cookies != null) {
cookieManager.setCookie(baseUrl, cookies);
for (String c : cookies.split(";")) {
}
}
//Make download possible
webView.setDownloadListener(new DownloadListener() {
@ -1263,7 +1519,7 @@ public class MainActivity extends AppCompatActivity implements View.OnLongClickL
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if(url.startsWith("https")&&url.contains("disroot")) {
if(url.startsWith("https")|url.startsWith("http")&&url.contains("disroot")&!url.contains("upload.disroot.org")) {
view.loadUrl(url);
return super.shouldOverrideUrlLoading(view, url);
}
@ -1273,8 +1529,6 @@ public class MainActivity extends AppCompatActivity implements View.OnLongClickL
return true;
}
}
});
}
@ -1589,4 +1843,110 @@ public class MainActivity extends AppCompatActivity implements View.OnLongClickL
intent.setType("text/plain");
startActivity(intent);
}
//status report
@SuppressLint("StaticFieldLeak")
class GetList extends AsyncTask<Void, Void, Void> {
@Override
protected Void doInBackground(Void... arg0) {
HttpHandler sh = new HttpHandler();
String jsonStrincidents0 = sh.makeServiceCall(incidenturl0);
Log.e(TAG, "Response from url: " + incidenturl0);
if (jsonStrincidents0 != null) {//Incidaetnts page
try {
JSONObject jsonObj = new JSONObject(jsonStrincidents0);
JSONArray data = jsonObj.getJSONArray("data");
int a=0;
JSONObject o = data.getJSONObject(a);
String callid = o.getString("id");
String updated = o.getString("updated_at");
HashMap<String, String> date = new HashMap<>();
date.put("id", callid);
date.put("updated", updated);
getDate.add(date);
String stateDate = date.put( "updated", updated );
String dateStored= checkDate.getString( "storeDate","" );
if (dateStored.equals( "" ))
{
checkDate.edit().putString( "storeDate", stateDate).apply();
//return null;
}
else if (!stateDate.equals( dateStored )&& !stateDate.equals( "" ))
{
checkDate.edit().putString( "storeDate", stateDate).apply();
Log.e(TAG, "date: " + dateStored);
Log.e(TAG, "date2: " + stateDate);
sendNotification();//Call notification
return null;
}
else
Log.e(TAG, "updated json");
return null;
} catch (final JSONException e) {
Log.e(TAG, "Json parsing error: " + e.getMessage());
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(),
"Json parsing error: " + e.getMessage(),
Toast.LENGTH_LONG)
.show();
}
});
}
}else {
Log.e(TAG, "Couldn't get json from server.");
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(),
"Couldn't get json from server. Check LogCat for possible errors!",
Toast.LENGTH_LONG)
.show();
}
});
}
return null;
}
}
//Notification
private void sendNotification() throws JSONException {
HttpHandler sh = new HttpHandler();
String jsonStrincidents0 = sh.makeServiceCall(incidenturl0);
JSONObject jsonObj = new JSONObject(jsonStrincidents0);
JSONArray data = jsonObj.getJSONArray("data");
int a=0;
JSONObject o = data.getJSONObject(a);
String name = o.getString( "name" );
String message = o.getString( "message" );
HashMap<String, String> date = new HashMap<>();
date.put("name", name);
date.put("message", message);
Log.e(TAG, "message: " + name);
Intent goState = new Intent(MainActivity.this, StateMessagesActivity.class);
PendingIntent launchStateMessages = PendingIntent.getActivity(MainActivity.this,0, goState, PendingIntent.FLAG_UPDATE_CURRENT);
NotificationCompat.Builder mBuilder =
new NotificationCompat.Builder(this)
.setAutoCancel( true )
.setSmallIcon(R.drawable.ic_state)
.setContentTitle( getString( R.string.NotificationTitle ) )
.setContentText(name)//get text Title from json :-)
.setContentInfo(message)//get text message from json :-)
.setContentIntent(launchStateMessages);
Uri alarmSound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
mBuilder.setSound(alarmSound)
.setVibrate(new long[]{50,500,100,300,50,300})
.setLights(Color.MAGENTA, 3000, 3000);
NotificationManager mNotificationManager =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.notify(001, mBuilder.build());
}
}

View File

@ -0,0 +1,310 @@
package org.disroot.disrootapp.ui;
import android.annotation.SuppressLint;
import android.app.ProgressDialog;
import android.content.Intent;
import android.graphics.Color;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.Toast;
import org.disroot.disrootapp.R;
import org.disroot.disrootapp.utils.HttpHandler;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.HashMap;
public class StateActivity extends AppCompatActivity {
Button button;
private String TAG = StateActivity.class.getSimpleName();
private ProgressDialog pDialog;
private ListView lv;
// URL to get data JSON
static String url = "https://state.disroot.org/api/v1/components?sort=status";
static String url1 = "https://state.disroot.org/api/v1/components?sort=status&page=2";
ArrayList<HashMap<String, String>> stateList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_state);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
toolbar.setNavigationIcon(R.drawable.ic_arrow_back);
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onBackPressed();
}
});
button = findViewById(R.id.StateMessageBtn);//StateMessageBtn
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
Intent goState = new Intent(StateActivity.this, StateMessagesActivity.class);
StateActivity.this.startActivity(goState);
}
});
stateList = new ArrayList<>();
lv = findViewById(R.id.list);
new GetList().execute();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_about, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_home) {
Intent goHome = new Intent(StateActivity.this, MainActivity.class);
StateActivity.this.startActivity(goHome);
return true;
}
return super.onOptionsItemSelected(item);
}
/**
* Async task class to get json by making HTTP call
*/
@SuppressLint("StaticFieldLeak")
class GetList extends AsyncTask<Void, Void, Void> {
@Override
protected void onPreExecute() {
super.onPreExecute();
// Showing progress dialog
pDialog = new ProgressDialog(StateActivity.this);
pDialog.setMessage("Loading…");
pDialog.setCancelable(false);
pDialog.show();
}
@Override
protected Void doInBackground(Void... arg0) {
HttpHandler sh = new HttpHandler();
// Making a request to url and getting response
String jsonStr0 = sh.makeServiceCall(url);
String jsonStr1 = sh.makeServiceCall(url1);
Log.e(TAG, "Response from url: " + jsonStr0);
if (jsonStr0 != null) {
try {
JSONObject jsonObj = new JSONObject(jsonStr0);
// Getting JSON Array node
JSONArray data = jsonObj.getJSONArray("data");
// looping through All data
for (int i = 0; i < data.length(); i++) {
JSONObject c = data.getJSONObject(i);
String id = c.getString("id");
String name = c.getString("name");
String description = c.getString("description");
String updated_at = c.getString("updated_at");
String lastUpdated = "Last Updated: " + updated_at;
String status_name = c.getString("status_name");
// tmp hash map for single service
HashMap<String, String> service = new HashMap<>();
// adding each child node to HashMap key => value
service.put("id", id);
service.put("name", name);
service.put("description", description);
service.put("updated_at", lastUpdated);
service.put("status_name", status_name);
// adding service to service list
stateList.add(service);
}
} catch (final JSONException e) {
Log.e(TAG, "Json parsing error: " + e.getMessage());
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(),
"Json parsing error: " + e.getMessage(),
Toast.LENGTH_LONG)
.show();
}
});
}
}if (jsonStr1 != null) {//next page
try {
JSONObject jsonObj = new JSONObject(jsonStr1);
// Getting JSON Array node
JSONArray data = jsonObj.getJSONArray("data");
// looping through All data
for (int i = 0; i < data.length(); i++) {
JSONObject c = data.getJSONObject(i);
String id = c.getString("id");
String name = c.getString("name");
String description = c.getString("description");
String updated_at = c.getString("updated_at");
String lastUpdated = "Last updated: " + updated_at;
String status_name = c.getString("status_name");
// tmp hash map for single service
HashMap<String, String> service = new HashMap<>();
// adding each child node to HashMap key => value
service.put("id", id);
service.put("name", name);
service.put("description", description);
service.put("updated_at", lastUpdated);
service.put("status_name", status_name);
// adding service to service list
stateList.add(service);
}
} catch (final JSONException e) {
Log.e(TAG, "Json parsing error: " + e.getMessage());
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(),
"Json parsing error: " + e.getMessage(),
Toast.LENGTH_LONG)
.show();
}
});
}
}else {
Log.e(TAG, "Couldn't get json from server.");
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(),
"Couldn't get json from server. Check LogCat for possible errors!",
Toast.LENGTH_LONG)
.show();
}
});
}
return null;
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
// Dismiss the progress dialog
if (pDialog.isShowing())
pDialog.dismiss();
//Updating parsed JSON data into ListView
ListAdapter adapter = new SimpleAdapter(
StateActivity.this, stateList,
R.layout.list_item, new String[]{"name", "description", "updated_at",
"status_name"}, new int[]{R.id.name,
R.id.description,R.id.updated_at, R.id.status_name})
//Change Color based on Status
{
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = super.getView(position, convertView, parent);
//Name Email
TextView nameMail = v.findViewById(R.id.name);
String nameMailValue = nameMail.getText().toString();
switch (nameMailValue) {
case "Email Service":
nameMail.setText(R.string.EmailService);
break;
default:
break;
}
//Name WebMail
TextView nameWebmail = v.findViewById(R.id.name);
String nameWebmailValue = nameWebmail.getText().toString();
switch (nameWebmailValue) {
case "WebMail Service":
nameWebmail.setText(R.string.WebmailService);
break;
default:
break;
}
//Name Cloud
TextView nameCloud = v.findViewById(R.id.name);
String nameCloudValue = nameCloud.getText().toString();
switch (nameCloudValue) {
case "WebMail Service":
nameCloud.setText(R.string.Cloud);
break;
default:
break;
}
//Make Last updated translatable
TextView updated = v.findViewById(R.id.updated_at);
String updatedValue = updated.getText().toString();
if (updatedValue.startsWith("Last Updated: ")){
updated.setText(updatedValue.replace("Last Updated: ",getText(R.string.LastUpdated)));
}
//Status
TextView status = v.findViewById(R.id.status_name);
String statusValue = status.getText().toString();
switch (statusValue) {
case "Operational":
status.setTextColor(Color.GREEN);
status.setText(R.string.Operational);
break;
case "Major Outage":
status.setTextColor(Color.RED);
status.setText(R.string.MajorOutage);
break;
case "Performance Issues":
status.setText(R.string.PerformanceIssues);
status.setTextColor(Color.YELLOW);
break;
}
return v;
}
};
lv.setAdapter(adapter);
}
}
}

View File

@ -0,0 +1,269 @@
package org.disroot.disrootapp.ui;
import android.annotation.SuppressLint;
import android.app.ProgressDialog;
import android.content.Intent;
import android.graphics.Color;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.Toast;
import org.disroot.disrootapp.R;
import org.disroot.disrootapp.utils.HttpHandler;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.HashMap;
public class StateMessagesActivity extends AppCompatActivity {
Button button;
private String TAG = StateMessagesActivity.class.getSimpleName();
private ProgressDialog pDialog;
private ListView lv;
// URL to get data JSON
static String incidenturl0 ="https://state.disroot.org/api/v1/incidents?sort=id&order=desc";
ArrayList<HashMap<String, String>> messageList;
ArrayList<HashMap<String, String>> getDate;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_state_messages);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
toolbar.setNavigationIcon(R.drawable.ic_arrow_back);
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onBackPressed();
}
});
button = findViewById(R.id.StateBtn);//StateBtn
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
Intent goState = new Intent(StateMessagesActivity.this, StateActivity.class);
StateMessagesActivity.this.startActivity(goState);
}
});
messageList = new ArrayList<>();
getDate = new ArrayList<>();
lv = findViewById(R.id.list);
new GetList().execute();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_about, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_home) {
Intent goHome = new Intent(StateMessagesActivity.this, MainActivity.class);
StateMessagesActivity.this.startActivity(goHome);
return true;
}
return super.onOptionsItemSelected(item);
}
/**
* Async task class to get json by making HTTP call
*/
@SuppressLint("StaticFieldLeak")
class GetList extends AsyncTask<Void, Void, Void> {
@Override
protected void onPreExecute() {
super.onPreExecute();
// Showing progress dialog
pDialog = new ProgressDialog(StateMessagesActivity.this);
pDialog.setMessage("Loading…");
pDialog.setCancelable(false);
pDialog.show();
}
@Override
protected Void doInBackground(Void... arg0) {
HttpHandler sh = new HttpHandler();
// Making a request to url and getting response
String jsonStrincidents0 = sh.makeServiceCall(incidenturl0);
Log.e(TAG, "Response from url: " + incidenturl0);
if (jsonStrincidents0 != null) {//Incidaetnts page
try {
JSONObject jsonObj = new JSONObject(jsonStrincidents0);
// Getting JSON Array node
JSONArray data = jsonObj.getJSONArray("data");
// looping through All data
for (int i = 0; i < data.length(); i++) {
JSONObject c = data.getJSONObject(i);
String id = c.getString("id");
String name = c.getString("name");
String message = c.getString("message");
String scheduled_at = c.getString("scheduled_at");
String scheduledAt = "Scheduled at: " + scheduled_at;
String updated_at = c.getString("updated_at");
String lastUpdated = "Last Updated: " + updated_at;
String human_status = c.getString("human_status");
// tmp hash map for single service
HashMap<String, String> service = new HashMap<>();
// adding each child node to HashMap key => value
service.put("id", id);
service.put("name", name);
service.put("message", message);
service.put("scheduled_at", scheduledAt);
service.put("updated_at", lastUpdated);
service.put("human_status", human_status);
// adding service to service list
messageList.add(service);
}
} catch (final JSONException e) {
Log.e(TAG, "Json parsing error: " + e.getMessage());
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(),
"Json parsing error: " + e.getMessage(),
Toast.LENGTH_LONG)
.show();
}
});
}
}else {
Log.e(TAG, "Couldn't get json from server.");
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(),
"Couldn't get json from server. Check LogCat for possible errors!",
Toast.LENGTH_LONG)
.show();
}
});
}
return null;
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
// Dismiss the progress dialog
if (pDialog.isShowing())
pDialog.dismiss();
//Updating parsed JSON data into ListView
ListAdapter adapter = new SimpleAdapter(
StateMessagesActivity.this, messageList,
R.layout.list_item, new String[]{"name","message", "updated_at", "scheduled_at", "human_status"}, new int[]{R.id.name, R.id.message,
R.id.updated_at, R.id.scheduled_at, R.id.human_status})
//Change Color based on Status
{
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = super.getView(position, convertView, parent);
//Name Email
TextView nameMail = v.findViewById(R.id.name);
String nameMailValue = nameMail.getText().toString();
switch (nameMailValue) {
case "Email Service":
nameMail.setText(R.string.EmailService);
break;
default:
break;
}
//Name WebMail
TextView nameWebmail = v.findViewById(R.id.name);
String nameWebmailValue = nameWebmail.getText().toString();
switch (nameWebmailValue) {
case "WebMail Service":
nameWebmail.setText(R.string.WebmailService);
break;
default:
break;
}
//Name Cloud
TextView nameCloud = v.findViewById(R.id.name);
String nameCloudValue = nameCloud.getText().toString();
switch (nameCloudValue) {
case "WebMail Service":
nameCloud.setText(R.string.Cloud);
break;
default:
break;
}
//Make Last updated translatable
TextView updated = v.findViewById(R.id.updated_at);
String updatedValue = updated.getText().toString();
if (updatedValue.startsWith("Last Updated: ")){
updated.setText(updatedValue.replace("Last Updated: ",getText(R.string.LastUpdated)));
}
//Make Scheduled at translatable
TextView scheduled = v.findViewById(R.id.scheduled_at);
String scheduledValue = scheduled.getText().toString();
if (scheduledValue.startsWith("Scheduled at: ")){
scheduled.setText(scheduledValue.replace("Scheduled at: ",getText(R.string.ScheduledAt)));
}
//Human_status
TextView humanStatus = v.findViewById(R.id.human_status);
String humanStatusValue = humanStatus.getText().toString();
switch (humanStatusValue) {
case "Fixed":
case "Scheduled":
humanStatus.setTextColor(Color.GREEN);
humanStatus.setText(R.string.Scheduled);
break;
case "Investigating":
case "Watching":
humanStatus.setTextColor(Color.YELLOW);
humanStatus.setText(R.string.Investigating);
break;
case "Identified":
humanStatus.setTextColor(Color.RED);
humanStatus.setText(R.string.Identified);
break;
}
return v;
}
};
lv.setAdapter(adapter);
}
}
}

View File

@ -7,6 +7,8 @@ public class Constants {
public static final long SPLASH_SCREEN_DURATION = 3000;
public static final long SPLASH_SCREEN_INTERVAL = 1000;
public static final String title_activity_state = "StateActivity";
public static final String URL_DisApp_FORUM = "https://forum.disroot.org/";
public static final String URL_DisApp_CALC = "https://calc.disroot.org";
public static final String URL_DisApp_BIN = "https://bin.disroot.org";
@ -15,7 +17,6 @@ public class Constants {
public static final String URL_DisApp_POLL = "https://poll.disroot.org";
public static final String URL_DisApp_BOARD = "https://board.disroot.org";
public static final String URL_DisApp_USER = "https://user.disroot.org";
public static final String URL_DisApp_STATE = "https://state.disroot.org";
public static final String URL_DisApp_HOWTO = "https://howto.disroot.org";
public static final String URL_DisApp_K9HELP = "https://howto.disroot.org/email/email-clients/mobile/androidk9";
public static final String URL_DisApp_XMPPHELP = "https://howto.disroot.org/xmpp/mobile/android";

View File

@ -0,0 +1,66 @@
package org.disroot.disrootapp.utils;
import android.util.Log;
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.ProtocolException;
import java.net.URL;
/**
* Created by Ravi Tamada on 01/09/16.
* www.androidhive.info
*/
public class HttpHandler {
private static final String TAG = HttpHandler.class.getSimpleName();
public HttpHandler() {
}
public String makeServiceCall(String reqUrl) {
String response = null;
try {
URL url = new URL(reqUrl);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
// read the response
InputStream in = new BufferedInputStream(conn.getInputStream());
response = convertStreamToString(in);
} catch (MalformedURLException e) {
Log.e(TAG, "MalformedURLException: " + e.getMessage());
} catch (ProtocolException e) {
Log.e(TAG, "ProtocolException: " + e.getMessage());
} catch (IOException e) {
Log.e(TAG, "IOException: " + e.getMessage());
} catch (Exception e) {
Log.e(TAG, "Exception: " + e.getMessage());
}
return response;
}
private String convertStreamToString(InputStream is) {
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
StringBuilder sb = new StringBuilder();
String line;
try {
while ((line = reader.readLine()) != null) {
sb.append(line).append('\n');
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return sb.toString();
}
}

View File

@ -0,0 +1,5 @@
<vector android:height="24dp" android:viewportHeight="48"
android:viewportWidth="48" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#ffffff"
android:pathData="m22.3998,36.7995 l8.4013,-9.6014h-19.2029l-8.4013,9.6014zM47.7286,9.8705c0.5001,1.1502 0.3,2.4754 -0.5251,3.4255L24.8001,38.8998C24.2,39.5999 23.3249,40 22.3998,40H3.1969C1.9467,40 0.7965,39.2749 0.2714,38.1247 -0.2287,36.9745 -0.0286,35.6493 0.7965,34.6992L23.1999,9.0953C23.8,8.3952 24.6751,7.9952 25.6002,7.9952h19.2029c1.2502,0 2.4004,0.7251 2.9254,1.8753z" android:strokeWidth="0.02500378"/>
</vector>

View File

@ -0,0 +1,5 @@
<vector android:height="24dp" android:viewportHeight="48"
android:viewportWidth="48" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillAlpha="1" android:fillColor="#ffffff"
android:pathData="m12.625,30.625c1.5833,1.5833 3.1667,3.1667 4.75,4.75C16.7225,35.8675 16.2613,36.8221 15.4785,37 14.5298,37.0938 13.6445,37.1243 14,35.9139 13.7931,35.3018 14.5052,33.7707 13.4569,34 12.638,34 11.819,34 11,34c0.0717,-0.8252 -0.2959,-1.8323 0.576,-2.326 0.3497,-0.3497 0.6993,-0.6993 1.049,-1.049zM25.5625,18.4375c0.4404,1.0323 -1.0119,1.6236 -1.5338,2.3775 -2.6393,2.5957 -5.1984,5.2858 -7.8881,7.8222 -1.765,0.1116 -0.1326,-1.6613 0.5426,-2.1643 2.7353,-2.6917 5.3904,-5.4778 8.1761,-8.1102 0.2171,-0.112 0.5279,-0.1278 0.7031,0.0748zM17,40C22.6667,34.3333 28.3333,28.6667 34,23 31,20 28,17 25,14 19.3333,19.6667 13.6667,25.3333 8,31c0,3 0,6 0,9 3,0 6,0 9,0zM36,21c1.1623,-1.2963 2.6604,-2.3418 3.5254,-3.8643C40.299,15.4271 39.0538,13.8707 37.819,12.819 36.3312,11.431 35.0305,9.8131 33.4025,8.5966 31.787,7.6805 30.0358,8.6954 29.011,9.989 28.3407,10.6593 27.6703,11.3297 27,12c3,3 6,6 9,9zM48,9c-0.0078,10.1543 0.0155,20.3089 -0.0117,30.463 -0.1188,4.9069 -4.8029,8.9754 -9.6671,8.537 -9.928,-0.0078 -19.8564,0.0155 -29.7842,-0.0117C3.6301,47.8695 -0.4383,43.1854 0,38.3212 0.0078,28.3932 -0.0155,18.4648 0.0117,8.537 0.1305,3.6301 4.8146,-0.4383 9.6788,0 19.6068,0.0078 29.5352,-0.0155 39.463,0.0117 44.1261,0.1593 48.0932,4.3318 48,9Z" android:strokeWidth="0.03125"/>
</vector>

View File

@ -194,13 +194,22 @@
android:gravity="center_horizontal"
android:id="@+id/group4"
android:layout_below="@+id/group3">
<Button
android:id="@+id/NotesBtn"
style="?android:attr/borderlessButtonStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:maxWidth="24dp"
android:drawableTop="@drawable/ic_notes"
android:text="@string/action_notes"
android:textColor="#ffffff" />
<Button
android:id="@+id/UserBtn"
style="?android:attr/borderlessButtonStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:maxWidth="24dp"
android:drawableTop="@drawable/ic_poll"
android:drawableTop="@drawable/ic_user"
android:text="@string/action_user"
android:textColor="#ffffff" />
@ -224,15 +233,47 @@
android:text="@string/action_howto"
android:textColor="#ffffff" />
<Button
android:id="@+id/AboudBtn"
style="?android:attr/borderlessButtonStyle"
android:layout_width="wrap_content"
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:maxWidth="24dp"
android:drawableTop="@drawable/ic_about"
android:text="@string/action_about"
android:textColor="#ffffff" />
android:gravity="center_horizontal"
android:id="@+id/group5"
android:layout_below="@+id/group4"><!-- android:gravity="center_horizontal" -->
<Button
android:id="@+id/AboudBtn"
style="?android:attr/borderlessButtonStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:maxWidth="24dp"
android:drawableTop="@drawable/ic_about"
android:text="@string/action_about"
android:textColor="#ffffff" />
<Button
android:id="@+id/Placeholder2"
style="?android:attr/borderlessButtonStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:maxWidth="24dp"
android:text=""
android:textColor="#ffffff" />
<Button
android:id="@+id/Placeholder3"
style="?android:attr/borderlessButtonStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:maxWidth="24dp"
android:text=""
android:textColor="#ffffff" />
<Button
android:id="@+id/Placeholder4"
style="?android:attr/borderlessButtonStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:maxWidth="24dp"
android:text=""
android:textColor="#ffffff" />
</LinearLayout>
</RelativeLayout>
</ScrollView>

View File

@ -0,0 +1,70 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
tools:context=".ui.StateActivity">
<android.support.design.widget.AppBarLayout
android:id="@+id/appbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="@dimen/appbar_padding_top"
android:theme="@style/DisTheme.AppBarOverlay">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:layout_weight="1"
android:background="?attr/colorPrimary"
app:layout_scrollFlags="scroll|enterAlways"
app:popupTheme="@style/DisTheme.PopupOverlay"
app:title="@string/app_state">
</android.support.v7.widget.Toolbar>
</android.support.design.widget.AppBarLayout>
<android.support.v7.widget.LinearLayoutCompat
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:background="#203140">
<Button
android:id="@+id/StateBtn"
android:shadowColor="@color/bg_primary_blue"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:maxWidth="24dp"
android:drawableTop="@drawable/ic_state"
android:drawableTint="@color/gray"
android:text="@string/state_btn"
android:layout_gravity="center"
android:layout_marginLeft="@android:dimen/app_icon_size"
android:layout_marginRight="@android:dimen/app_icon_size"
style="?android:attr/borderlessButtonStyle"
android:textColor="@color/gray"/>
<Button
android:id="@+id/StateMessageBtn"
android:shadowColor="@color/bg_primary_blue"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:maxWidth="24dp"
android:drawableTop="@drawable/ic_state"
android:text="@string/state_messages_btn"
android:layout_gravity="center"
android:layout_marginLeft="@android:dimen/app_icon_size"
android:layout_marginRight="@android:dimen/app_icon_size"
style="?android:attr/borderlessButtonStyle"
android:textColor="#ffffff"/>
</android.support.v7.widget.LinearLayoutCompat>
<ListView
android:id="@+id/list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#203140"/>
</LinearLayout>

View File

@ -0,0 +1,70 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
tools:context=".ui.StateActivity">
<android.support.design.widget.AppBarLayout
android:id="@+id/appbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="@dimen/appbar_padding_top"
android:theme="@style/DisTheme.AppBarOverlay">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:layout_weight="1"
android:background="?attr/colorPrimary"
app:layout_scrollFlags="scroll|enterAlways"
app:popupTheme="@style/DisTheme.PopupOverlay"
app:title="@string/app_state">
</android.support.v7.widget.Toolbar>
</android.support.design.widget.AppBarLayout>
<android.support.v7.widget.LinearLayoutCompat
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:background="#203140">
<Button
android:id="@+id/StateBtn"
android:shadowColor="@color/bg_primary_blue"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:maxWidth="24dp"
android:drawableTop="@drawable/ic_state"
android:text="@string/state_btn"
android:layout_gravity="center"
android:layout_marginLeft="@android:dimen/app_icon_size"
android:layout_marginRight="@android:dimen/app_icon_size"
style="?android:attr/borderlessButtonStyle"
android:textColor="#ffffff"/>
<Button
android:id="@+id/StateMessageBtn"
android:shadowColor="@color/bg_primary_blue"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:maxWidth="24dp"
android:drawableTop="@drawable/ic_state"
android:drawableTint="@color/gray"
android:text="@string/state_messages_btn"
android:layout_gravity="center"
android:layout_marginLeft="@android:dimen/app_icon_size"
android:layout_marginRight="@android:dimen/app_icon_size"
style="?android:attr/borderlessButtonStyle"
android:textColor="@color/gray"/>
</android.support.v7.widget.LinearLayoutCompat>
<ListView
android:id="@+id/list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#203140"/>
</LinearLayout>

View File

@ -0,0 +1,57 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="@dimen/activity_horizontal_margin">
<TextView
android:id="@+id/name"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingBottom="2dip"
android:paddingTop="6dip"
android:textColor="@color/bg_primary_blue_dark"
android:textSize="16sp"
android:textStyle="bold" />
<TextView
android:id="@+id/description"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingBottom="2dip"
android:textColor="#ffffff" />
<TextView
android:id="@+id/updated_at"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingBottom="2dip"
android:textColor="#ffffff"/>
<TextView
android:id="@+id/status_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#49e13f"
android:textStyle="bold" />
<TextView
android:id="@+id/message"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#ffffff" />
<TextView
android:id="@+id/scheduled_at"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#ffffff" />
<TextView
android:id="@+id/human_status"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#ffffff" />
</LinearLayout>

View File

@ -27,6 +27,10 @@
android:icon="@drawable/ic_reload"
android:id="@+id/action_reload"
android:title="@string/action_reload" />
<item
android:icon="@drawable/ic_clear_cookies"
android:id="@+id/action_clear_cookies"
android:title="@string/action_clear_cookies" />
<item
android:icon="@drawable/ic_about"
android:id="@+id/action_about"

View File

@ -28,7 +28,7 @@
<string name="view_loading_description">Cargando…</string>
<string name="global_ok">OK</string>
<string name="more_help">¿Necesitas más ayuda?</string>
<string name="tell_more">Tell me more</string>
<string name="tell_more">Cuéntame más...</string>
<string name="title_activity_about">AboutActivity</string>
<string name="MailInfoTitle">Configuración de Correo:</string>
@ -55,7 +55,7 @@
<string name="disrootUrl"><a href = "https://disroot.org">https://disroot.org</a></string>
<string name="disroot"> * Comunidad de Disroot (Disroot):</string>
<string name="contributorsTitle">Colaboradores</string>
<string name="contributors"><b> &#8226; muppeth:</b>\n administrador Disroot\n\n<b> &#8226; antilopa:</b>\n administradora Disroot\n\n<b> &#8226; Massimiliano:</b>\n Desarrollador\n\n<b> &#8226; Fede:</b>\n Contribuyente de contenido\n\n<b> &#8226; Meaz:</b>\n Contribuyente de contenido\n\n<b> &#8226; maryjane:</b>\n Contribuyente de contenido\n\n</string>
<string name="contributors"><b> &#8226; muppeth:</b>\n administrador Disroot\n\n<b> &#8226; antilopa:</b>\n administradora Disroot\n\n<b> &#8226; Massimiliano:</b>\n Desarrollador\n\n<b> &#8226; Fede:</b>\n Contribuyente de contenido\n\n<b> &#8226; Meaz:</b>\n Contribuyente de contenido\n\n<b> &#8226; maryjane:</b>\n Contribuyente de contenido\n\n<b> &#8226; userdebug:</b>\n Contribuyente de contenido\n\n<b> &#8226; ButterflyOfFire:</b>\n Contribuyente de contenido\n\n</string>
<string name="fDroid">F-Droid</string>
<string name="thirdparty">Librerías de Terceros</string>
<string name="thirdpartyText"><a href="https://github.com/cketti/ckChangeLog">ckCangelog: </a>Apache License 2.0\n\n<a href="https://github.com/wsdfhjxc/taponium/">Taponium: </a>GNU General Public License v3.0</string>
@ -114,18 +114,46 @@
<string name="LogoInfo">¿Por qué? Es solo un logo.\nNo seas tan curioso… ;-)</string>
<string name="LogoBtn">Disroot rules \\o//</string>
<string name="logo">Logo</string>
<string name="xmppBtn"> \ \ &#8226; State on xmpp</string>
<string name="matrixBtn"> \ \ &#8226; State on Matrix</string>
<string name="SocialBtn"> \ \ &#8226; State on hubzilla/diaspora/mastodon</string>
<string name="NewsBtn"> \ \ &#8226; State updates vía email</string>
<string name="RssBtn"> \ \ &#8226; State RSS feed</string>
<string name="ChooseChatTitle">You have two XMPP clients installed!</string>
<string name="ChooseChat">Please choose the client you want to use for Disroot</string>
<string name="Remember">Remember my choice</string>
<string name="xmppBtn"> \ \ &#8226; Estado de xmpp</string>
<string name="matrixBtn"> \ \ &#8226; Estado de Matrix</string>
<string name="SocialBtn"> \ \ &#8226; Estado de Hubzilla/Diaspora*/Mastodon</string>
<string name="NewsBtn"> \ \ &#8226; Actualización de estados por email</string>
<string name="RssBtn"> \ \ &#8226; Feed RSS de los Estados</string>
<string name="ChooseChatTitle">¡Tienes dos clientes XMPP instalados!</string>
<string name="ChooseChat">Por favor, elige el cliente que quieres usar para Disroot</string>
<string name="Remember">Recordar mi elección</string>
<string name="Conversations">Conversations</string>
<string name="PixArt">Pix-Art Messenger</string>
<string name="Forget">Forget my choice</string>
<string name="ForgetTitle">Forget chat client!</string>
<string name="Forget">Olvidar mi elección</string>
<string name="ForgetTitle">¡Olvidar el cliente de chat!</string>
<string name="title_activity_tap">TapActivity</string>
<string name="action_clear_cookies">Limpiar cookies</string>
<string name="DiaInstallTitle">Requerimiento de instalación</string>
<string name="DiasporaDialog">Para continuar, primero necesitas instalar Dandelion.\nPor favor, selecciona Instalar para continuar desde F-Droid.</string>
<string name="global_cancel">Cancelar</string>
<string name="global_install">Instalar</string>
<string name="MailDialog">Para continuar, primero necesitas instalar K9-Mail.\nPor favor, selecciona Instalar para continuar desde F-Droid.</string>
<string name="CloudDialog">Para continuar, primero necesitas instalar la app de Nextcloud.\nPor favor, selecciona Instalar para continuar desde F-Droid.</string>
<string name="ChatDialog">Para continuar, primero necesitas instalar Conversations.\nPor favor, selecciona Instalar para continuar desde F-Droid.</string>
<string name="app_state">Disroot: Estado</string>
<string name="Operational">Operativo</string>
<string name="MajorOutage">Interrupción mayor</string>
<string name="EmailService">Servicio de correo</string>
<string name="LastUpdated">Última actualización: \</string>
<string name="WebmailService">Servicio de WebMail</string>
<string name="Cloud">Nube</string>
<string name="PerformanceIssues">Problemas de desempeño</string>
<string name="Notification">Sin problemas</string>
<string name="Notificationissues">Algunos sistemas están experimentando problemas</string>
<string name="state_messages_btn">Mostrar mensajes de Estado</string>
<string name="state_btn">Mostrar Estado del servicio</string>
<string name="ScheduledAt">Programado para:</string>
<string name="NotificationTitle">¡Mensaje de Estado de Disroot!</string>
<string name="Scheduled">Programado</string>
<string name="Investigating">Investigando</string>
<string name="Identified">Identificado</string>
<string name="NotesTitle">Notas de Nextcloud Info</string>
<string name="NotesInfo">La aplicación Notas es un programa de Nextcloud para tomar notas sin distracciones</string>
<string name="action_notes">Notes</string>
<string name="NotesDialog">Para continuar, primero necesitas instalar Notas.\nPor favor, selecciona Instalar para continuar con la instalación desde F-Droid.</string>
</resources>

View File

@ -1,7 +1,8 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources>
<string name="app_name">Applis Disroot</string>
<string name="action_home">Accueil</string>
<string name="action_mail">E-mail</string>
<string name="action_mail">Courrier</string>
<string name="action_cloud">Cloud</string>
<string name="action_diaspora">Diaspora*</string>
<string name="action_forum">Forum</string>
@ -14,10 +15,10 @@
<string name="action_poll">Sondage</string>
<string name="action_board">Tableau de projet</string>
<string name="action_user">Mot de passe</string>
<string name="action_state">Etat des services</string>
<string name="action_howto">Tutoriaux</string>
<string name="action_state">État des services</string>
<string name="action_howto">Tutoriels</string>
<string name="action_about">A propos</string>
<string name="action_about">À propos</string>
<string name="action_exit">Quitter</string>
<string name="action_share">Partager</string>
<string name="action_reload">Recharger</string>
@ -25,24 +26,46 @@
<string name="action_options">Actions</string>
<string name="activity_main_share_info">partager un lien d\'information</string>
<string name="view_loading_description">Chargement…</string>
<string name="view_loading_description">Chargement </string>
<string name="global_ok">OK</string>
<string name="more_help">Besoin d\'aide?</string>
<string name="tell_more">Dites m\'en davantage</string>
<string name="more_help">Besoin d\'aide \?</string>
<string name="tell_more">En savoir plus</string>
<string name="title_activity_about">AboutActivity</string>
<string name="MailInfoTitle">Paramètres e-mail</string>
<string name="MailInfo">IMAP: disroot.org\nSSL Port 993\nAuthentication: Normal\nMot de passe\n\nSMTP: disroot.org\nSTARTTLS Port 587\nAuthentication: Normal\nMot de passe\n\nPOP: disroot.org\nSSL Port 995\nAuthentication: Normal\nMot de passe</string>
<string name="MailInfoTitle">Paramètres de messagerie</string>
<string name="MailInfo">IMAP : disroot.org
\nSSL Port 993
\nAuthentification : Normal
\nMot de passe
\n
\nSMTP : disroot.org
\nSTARTTLS Port 587
\nAuthentification : Normal
\nMot de passe
\n
\nPOP : disroot.org
\nSSL Port 995
\nAuthentification : Normal
\nMot de passe</string>
<string name="CloudInfoTitle">Paramètres Nextcloud</string>
<string name="CloudInfo">Gardez vos données synchronisées et sécurisées. Avec Nextcloud, vous pouvez partager vos fichiers, calendriers, contacts et plus encore.\n\nServeur:\n https://cloud.disroot.org\n\nNom d\'utilisateur:\n votre_nom_d\'utilisateur_disroot\n\Mot de passe:\n votre_mot_de_passe_disroot.</string>
<string name="WelcomeTitle">Bienvenu</string>
<string name="WelcomeInfo">Disroot est une plate-forme fournissant des services en ligne basés sur les principes de liberté, de confidentialité, de fédération et de décentralisation.\nCette application est comme votre couteau suisse vers la plate-forme Disroot, faite par la communauté pour la communauté. Si vous n\'avez pas un compte Disroot vous pouvez toujours utiliser cette application pour accéder aux services Disroot qui n\'en nécessitent pas:\n \ \ \ &#8226; Etherpad\n \ \ \ &#8226; Ethercalc\n \ \ \ &#8226; Private bin\n \ \ \ &#8226; Téléverser\n \ \ \ &#8226; Sondage\n \ \ \ &#8226; Searx\n \ \ \ &#8226; Diaspora* (nécessite un compte Diaspora)\n\nL\'application peut vous demander d\'installer des applications supplémentaires. Nous vous recommandons fortement d\'installer F-Droid - un catalogue d\'applications gratuit et open source - car toutes les applications ne se trouvent pas sur le Play Store de Google et F-Droid est plus orienté vers la confidentialité (pas de suivi, pas besoin de compte) vous pouvez le télécharger en tapant sur l\'icône F-droid.\n</string>
<string name="CloudInfo">Gardez vos données synchronisées et sécurisées. Avec Nextcloud, vous pouvez partager vos fichiers, calendriers, contacts et plus encore.
\n
\nServeur :
\n https://cloud.disroot.org
\n
\nNom d\'utilisateur :
\n votre_nom_d\'utilisateur_disroot
\n
\nMot de passe :
\n votre_mot_de_passe_disroot.</string>
<string name="WelcomeTitle">Bienvenue</string>
<string name="WelcomeInfo">Disroot est une plate-forme fournissant des services en ligne basés sur les principes de liberté, de confidentialité, de fédération et de décentralisation.\nCette application est comme votre couteau suisse vers la plate-forme Disroot, faite par la communauté pour la communauté. Si vous n\'avez pas un compte Disroot vous pouvez toujours utiliser cette application pour accéder aux services Disroot qui n\'en nécessitent pas:\n \ \ \ • Etherpad\n \ \ \ • Ethercalc\n \ \ \ • Private bin\n \ \ \ • Téléverser\n \ \ \ • Sondage\n \ \ \ • Searx\n \ \ \ • Diaspora* (nécessite un compte Diaspora)\n\nL\'application peut vous demander d\'installer des applications supplémentaires. Nous vous recommandons fortement d\'installer F-Droid - un catalogue d\'applications gratuit et open source - car toutes les applications ne se trouvent pas sur le Play Store de Google et F-Droid est plus orienté vers la confidentialité (pas de suivi, pas besoin de compte) vous pouvez le télécharger en tapant sur l\'icône F-droid.\n</string>
<string name="help">Aide</string>
<string name="license">Licence d\'utilisation</string>
<string name="action_settings">Paramètres</string>
<string name="licenseTitle">Licence d\'utilisation</string>
<string name="license_button">Licence d\'utilisations GNU LGPLv3.0</string>
<string name="license_button">Licence GNU LGPL v3.0</string>
<!--Non translatable
<string translatable="false" name="licenseText">Copyright © 2007 Free Software Foundation, Inc.\n
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, version 3 of the License only.\n\n
@ -52,36 +75,42 @@
<string name="maintainersTitle">Mainteneurs</string>
<string name="maintainersText">Cette application est actuellement développée et maintenue par\n\n</string>
<string name="disrootUrl">https://disroot.org</string>
<string name="disroot"> * La communauté Disroot (Disroot):</string>
<string name="disroot">* La communauté Disroot (Disroot) :</string>
<string name="contributorsTitle">Contributeurs</string>
<string name="contributors"><b> &#8226; muppeth:</b>\n Administrateur Disroot\n\n<b> &#8226; antilopa:</b>\n Administrateur Disroot\n\n<b> &#8226; Massimiliano:</b>\n Développeur actuel de l\'application Disroot\n\n<b> &#8226; Fede, Meaz, maryjane:</b>\n Contributeurs de contenu\n\n</string>
<string name="contributors"><b> • muppeth:</b>\n Administrateur Disroot\n\n<b> • antilopa:</b>\n Administrateur Disroot\n\n<b> Massimiliano:</b>\n Développeur actuel de l\'application Disroot\n\n<b> • Fede, Meaz, maryjane, userdebug, ButterflyOfFire:</b>\n Contributeurs de contenu\n\n</string>
<string name="fDroid">F-Droid</string>
<string name="thirdparty">Librairies tierces</string>
<string name="thirdpartyText"><a href="https://github.com/cketti/ckChangeLog">ckCangelog: </a>Licence d\'utilisation Apache 2.0\n\n<a href="https://github.com/wsdfhjxc/taponium/">Taponium: </a>Licence d\'utilisation GNU General Public v3.0</string>
<string name="misc">Divers</string>
<string name="miscDio">Nous avons utilisé Diolinx comme base de départ pour créer cette application. Allez voir, c\'est également un logiciel gratuit!</string>
<string name="miscDioBtn">Dite m\'en plus</string>
<string name="miscDio">Nous avons utilisé Diolinx comme base de départ pour créer cette application. Allez voir, c\'est également un logiciel libre !</string>
<string name="miscDioBtn">En savoir plus</string>
<string name="AppSection">Application</string>
<string name="AppVersion">Version de l\'appli: %1$s</string>
<string name="Device">Appareil:</string>
<string name="AppVersion">Version de l\'appli : %1$s</string>
<string name="Device">Appareil :</string>
<string name="Contribute">Contribuer</string>
<string name="ContributeText">L\'application Disroot est développée librement et suit les idées de la Fondation Disroot. Si vous voulez contribuer, allez-y ! Pour le moment, nous sommes une très petite équipe, donc nous apprécions beaucoup toute aide !</string>
<string name="ContributeBtn">Obtenir la source</string>
<string name="Translate">Traduire</string>
<string name="TranslateText">L\'application n\'est pas disponible dans votre langue ? Vous pouvez changer ça ! Pourquoi ne pas nous aider en la traduisant ?</string>
<string name="TranslateBtn">Permettez-moi de traduire</string>
<string name="Feedback">Faites-nous part de vos commentaires !</string>
<string name="TranslateBtn">Je voudrais traduire</string>
<string name="Feedback">Faites-nous part de votre avis !</string>
<string name="FeedbackText">L\'application Disroot est encore en développement, donc si vous avez des suggestions ou des commentaires, n\'hésitez pas à nous en faire part !</string>
<string name="FeedbackBtn1">Signaler des bugs</string>
<string name="FeedbackBtn1">Signaler des bogues</string>
<string name="FeedbackBtn2">Discuter avec nous</string>
<string name="SpreadTheWord">Passez le mot !</string>
<string name="SpreadTheWordTxt">Parlez de Disroot à vos amis et à votre famille ! Pourquoi ne bloggez-vous pas sur vos expériences ? Nous adorerions recevoir de vos nouvelles !</string>
<string name="SpreadTheWordTxt">Parlez de Disroot à vos amis et à votre famille ! Pourquoi ne bloguez-vous pas sur vos expériences \? Nous adorerions recevoir de vos nouvelles !</string>
<string name="SpreadTheWordBtn">Partager l\'application</string>
<string name="DisrootWeb">Disroot web</string>
<string name="FirstTitle">J\'ai failli oublier</string>
<string name="FirstInfo">Vous pouvez appuyer longuement sur chaque icône pour afficher des informations supplémentaires…</string>
<string name="FirstTitle">J\'allais presque oublier</string>
<string name="FirstInfo">Vous pouvez appuyer longuement sur chaque icône pour afficher des informations supplémentaires </string>
<string name="DiasporaTitle">Paramètres Diaspora*</string>
<string name="DiasporaInfo">Réseau social distribué et décentralisé. Postez, partagez, aimez, créez des communautés.\n\Nom d\'utilisateur:\n votre_nom_d\'utilisateur_diaspora@pod.disroot.org\n\nMot de passe:\n votre_mot_de_passe_diaspora</string>
<string name="DiasporaInfo">Réseau social distribué et décentralisé. Postez, partagez, aimez, créez des communautés.
\n
\nNom d\'utilisateur :
\n votre_nom_d\'utilisateur_diaspora@pod.disroot.org
\n
\nMot de passe :
\n votre_mot_de_passe_diaspora</string>
<string name="PadInfo">Avec Etherpad, écrivez des articles, des communiqués de presse, des listes de choses à faire, etc. avec des amis, des camarades de classe ou des collègues, travaillant tous en même temps sur le même document.\nAucune inscription n\'est requise.</string>
<string name="PadTitle">Info EtherPad</string>
<string name="ChatTitle">Paramètres XMPP\n</string>
@ -96,35 +125,64 @@
<string name="SearxInfo"> Searx est une plateforme anonyme multi moteurs de recherche, agrégeant les résultats d\'autres moteurs de recherche tout en ne stockant pas d\'informations sur ses utilisateurs. Pas de suivi, pas de profilage, pas d\'exploration de données par les grandes entreprises.\nAucune inscription n\'est requise.</string>
<string name="PollsTitle">Aide Sondages</string>
<string name="PollsInfo">Framadate est un service en ligne pour planifier un rendez-vous ou prendre une décision rapidement et facilement.\nAucune inscription n\'est requise.</string>
<string name="BoardTitle">Info sur le tableau de projets</string>
<string name="BoardTitle">Info sur le tableau de gestion de projets</string>
<string name="BoardInfo">Taiga est un outil de gestion de projet, développé pour les programmeurs, les concepteurs et les startups travaillant avec une méthodologie de gestion agile à l\'esprit. Il peut cependant s\'appliquer à pratiquement n\'importe quel projet ou groupe, même en dehors du domaine informatique.</string>
<string name="UserTitle">Aide à la gestion des mots de passe des utilisateurs</string>
<string name="UserInfo">Utilisez notre Centre de libre-service pour gérer vos données d\'utilisateur et de mot de passe.</string>
<string name="UserInfo">Utilisez notre Centre de libre-service pour gérer vos données d\'utilisateur et de mot de passe</string>
<string name="StateTitle">Informations sur l\'état des services</string>
<string name="StateInfo">Page pour voir l\'état actuel des services Disroot. Ici, vous pouvez voir si un service a un problème, s\'il y a des problèmes de performance, ainsi que de savoir quand nous programmons la maintenance dans le temps où certains services pourraient ne pas être disponibles.\n\n<b>D\'autres moyens d\'obtenir des mises à jour sur l\'état des services</b></string>
<string name="state_help">Etat des services sur XMPP</string>
<string name="HowToTitle">Info Tutoriaux</string>
<string name="HowToInfo">Notre page avec des tutoriaux pour vous aider à vous y retrouver parmi les différents services Disroot.</string>
<string name="AboutTitle">Info A propos</string>
<string name="AboutInfo">Accédez à la page "A propos" de cette application</string>
<string name="state_help">État des services sur XMPP</string>
<string name="HowToTitle">Info Tutoriels</string>
<string name="HowToInfo">Notre page avec des tutoriels pour vous aider à vous y retrouver parmi les différents services Disroot.</string>
<string name="AboutTitle">Info À propos</string>
<string name="AboutInfo">Accédez à la page À propos de cette application</string>
<string name="ForumTitle">Aide du Forum</string>
<string name="ForumInfo">Discourse est une approche moderne et entièrement open-source des forums de discussion. Il offre tout ce dont votre communauté, groupe ou collectif a besoin pour créer sa plateforme de communication.</string>
<string name="LogoTitle">Vous venez vraiment d\'essayer la pression longue sur le logo ?</string>
<string name="LogoInfo">Pourquoi ? C\'est juste un logo. Ne soyez pas trop curieux. ;-)</string>
<string name="LogoTitle">Venez-vous vraiment d\'essayer lappui long sur le logo \?</string>
<string name="LogoInfo">Pourquoi \? C\'est juste un logo.
\nNe soyez pas trop curieux ;-)</string>
<string name="LogoBtn">Règles Disroot \\o/</string>
<string name="logo">Logo</string>
<string name="xmppBtn"> \ \ &#8226; Etat des services sur xmpp</string>
<string name="matrixBtn"> \ \ &#8226; Etat des services sur Matrix</string>
<string name="SocialBtn"> \ \ &#8226; Etat des services sur hubzilla/diaspora/mastodon</string>
<string name="NewsBtn"> \ \ &#8226; Info sur l\'état des services par email</string>
<string name="RssBtn"> \ \ &#8226; Etat des services par flux RSS</string>
<string name="xmppBtn">"\\ • État des services sur xmpp"</string>
<string name="matrixBtn">"\\ • État des services sur Matrix"</string>
<string name="SocialBtn">"\\ • État des services sur hubzilla/diaspora/mastodon"</string>
<string name="NewsBtn">"\\ • Info sur l\'état des services par courriel"</string>
<string name="RssBtn">"\\ • État des services par flux RSS"</string>
<string name="ChooseChatTitle">Vous avez deux clients XMPP installés !</string>
<string name="ChooseChat">Veuillez choisir le client que vous souhaitez utiliser pour Disroot</string>
<string name="Remember">Mémoriser mon choix</string>
<string name="Conversations">Conversations</string>
<string name="PixArt">Pix-Art Messenger</string>
<string name="Forget">Oublier mon choix</string>
<string name="ForgetTitle">Oublier le client de chat !</string>
<string name="ForgetTitle">Oublier le client de messagerie instantanée !</string>
<string name="title_activity_tap">TapActivity</string>
<string name="action_clear_cookies">Effacer les cookies</string>
<string name="DiaInstallTitle">Demande d\'installation</string>
<string name="DiasporaDialog">Pour continuer, vous devez d\'abord installer Dandelion.\nVeuillez sélectionner Installer pour continuer l\'installation avec F-Droid.</string>
<string name="global_cancel">Annuler</string>
<string name="global_install">Installer</string>
<string name="MailDialog">Pour continuer, vous devez d\'abord installer K9-Mail.\nVeuillez sélectionner Installer pour continuer l\'installation avec F-Droid.</string>
<string name="CloudDialog">Pour continuer, vous devez d\'abord installer l\'application Nextcloud.\nVeuillez sélectionner Installer pour continuer l\'installation avec F-Droid.</string>
<string name="ChatDialog">Pour continuer, vous devez d\'abord installer Conversations.\nVeuillez sélectionner Installer pour continuer l\'installation avec F-Droid.</string>
<string name="app_state">Disroot state</string>
<string name="Operational">Operational</string>
<string name="MajorOutage">Major Outage</string>
<string name="EmailService">Email Service</string>
<string name="LastUpdated">Last updated: \</string>
<string name="WebmailService">WebMail Service</string>
<string name="Cloud">Cloud</string>
<string name="PerformanceIssues">Performance Issues</string>
<string name="Notification">No issues</string>
<string name="Notificationissues">Some systems are experiencing issues</string>
<string name="state_messages_btn">Show State messages</string>
<string name="state_btn">Show Service State</string>
<string name="ScheduledAt">Scheduled at:</string>
<string name="NotificationTitle">Message from Disroot State!</string>
<string name="Scheduled">Scheduled</string>
<string name="Investigating">Investigating</string>
<string name="Identified">Identified</string>
<string name="NotesTitle">Nextcloud Notes Info</string>
<string name="NotesInfo">The notes app is a distraction free notes taking app for Nextcloud</string>
<string name="NotesDialog">To continue you need to install Notes first.\nPlease select install to continue with the installatin on F-Droid.</string>
<string name="action_notes">Notes</string>
</resources>

View File

@ -17,7 +17,7 @@
<string name="action_state">Stato</string>
<string name="action_howto">Manuali</string>
<string name="action_about">Info</string>
<string name="action_about">Info su</string>
<string name="action_exit">Esci</string>
<string name="action_share">Condividi</string>
<string name="action_reload">Ricarica</string>
@ -29,7 +29,7 @@
<string name="global_ok">OK</string>
<string name="more_help">Bisogno di più aiuto?</string>
<string name="tell_more">Dimmi di più</string>
<string name="title_activity_about">Info</string>
<string name="title_activity_about">Info su</string>
<string name="MailInfoTitle">Impostazioni Mail</string>
<string name="MailInfo">IMAP: disroot.org\nSSL Port 993\nAutenticazione: Password Normale\n\nSMTP: disroot.org\nSTARTTLS Port 587\nAutenticazione: Password Normale\n\nPOP: disroot.org\nSSL Port 995\nAutenticazione: Password Normale</string>
@ -54,7 +54,7 @@
<string name="disrootUrl">https://disroot.org</string>
<string name="disroot"> * Comunità Disroot (Disroot):</string>
<string name="contributorsTitle">Contribuenti</string>
<string name="contributors"><b> &#8226; muppeth:</b>\n Amministratore Disroot\n\n<b> &#8226; antilopa:</b>\n Amministratrice Disroot\n\n<b> &#8226; Massimiliano:</b>\n Sviluppatore\n\n<b> &#8226; Fede:</b>\n Contributore di contenuti\n\n<b> &#8226; Meaz:</b>\n Contributore di contenuti\n\n<b> &#8226; maryjane:</b>\n Contributore di contenuti\n\n</string>
<string name="contributors"><b> &#8226; muppeth:</b>\n Amministratore Disroot\n\n<b> &#8226; antilopa:</b>\n Amministratrice Disroot\n\n<b> &#8226; Massimiliano:</b>\n Sviluppatore\n\n<b> &#8226; Fede:</b>\n Contributore di contenuti\n\n<b> &#8226; Meaz:</b>\n Contributore di contenuti\n\n<b> &#8226; maryjane:</b>\n Contributore di contenuti\n\n<b> &#8226; userdebug:</b>\n Contributore di contenuti\n\n<b> &#8226; ButterflyOfFire:</b>\n Contributore di contenuti\n\n</string>
<string name="fDroid">F-Droid</string>
<string name="thirdparty">Librerie di terze parti</string>
<string name="thirdpartyText"><a href="https://github.com/cketti/ckChangeLog">ckCangelog: </a>Apache License 2.0\n\n<a href="https://github.com/wsdfhjxc/taponium/">Taponium: </a>GNU General Public License v3.0</string>
@ -105,7 +105,7 @@
<string name="state_help">Stato su XMPP</string>
<string name="HowToTitle">Info su manuali</string>
<string name="HowToInfo">La nostra pagina con manuali e tutorial per aiutarti a orientarti nei vari servizi Disroot.</string>
<string name="AboutTitle">Info</string>
<string name="AboutTitle">Info su</string>
<string name="AboutInfo">Questa è la pagina Info di questa app</string>
<string name="ForumTitle">Aiuto Forum</string>
<string name="ForumInfo">Discourse è un approccio moderno e completamente open-source ai forum di discussione. Offre tutto ciò di cui la vostra comunità, gruppo o collettivo ha bisogno per creare la loro piattaforma di comunicazione.</string>
@ -126,5 +126,33 @@
<string name="Forget">Dimentica la mia scelta</string>
<string name="ForgetTitle">Dimentica il client di chat!</string>
<string name="title_activity_tap">TapActivity</string>
<string name="action_clear_cookies">Elimina i cookie</string>
<string name="DiaInstallTitle">Richiesta installazione</string>
<string name="DiasporaDialog">Per continuare è necessario installare Dandelion.\nSelezionate installa per continuare con l\'installazione su F-Droid.</string>
<string name="global_cancel">Annulla</string>
<string name="global_install">Installa</string>
<string name="MailDialog">Per continuare è necessario installare K9-Mail.\nSelezionate installa per continuare con l\'installazione su F-Droid.</string>
<string name="CloudDialog">Per continuare è necessario installare la app di Nextcloud.\nSelezionate installa per continuare con l\'installazione su F-Droid.</string>
<string name="ChatDialog">Per continuare è necessario installare Conversations.\nSelezionate installa per continuare con l\'installazione su F-Droid.</string>
<string name="app_state">Stato Disroot</string>
<string name="Operational">Operazionale</string>
<string name="MajorOutage">Grave interruzione del servizio</string>
<string name="EmailService">Servizio Email</string>
<string name="LastUpdated">Ultimo aggiornamento: \</string>
<string name="WebmailService">Servizio WebMail</string>
<string name="Cloud">Cloud</string>
<string name="PerformanceIssues">Problemi di performanza</string>
<string name="Notification">Nessun problema con i servizi</string>
<string name="Notificationissues">Alcuni sistemi stanno avendo dei problemi</string>
<string name="state_messages_btn">Mostra messaggi di stato</string>
<string name="state_btn">Mostra stato dei servizi</string>
<string name="ScheduledAt">In programma il: \</string>
<string name="NotificationTitle">Messaggio dallo Stato di Disroot!</string>
<string name="Scheduled">Pianificato</string>
<string name="Investigating">Indagando</string>
<string name="Identified">Identificato</string>
<string name="NotesTitle">Info su Nextcloud Notes</string>
<string name="NotesInfo">L\'app notes è un\'app che prende note senza distrazioni per Nextcloud</string>
<string name="NotesDialog">Per continuare è necessario installare Notes.\nSelezionate installa per continuare con l\'installazione su F-Droid.</string>
<string name="action_notes">Note</string>
</resources>

View File

@ -54,7 +54,7 @@
<string name="disrootUrl">https://disroot.org</string>
<string name="disroot"> * Disroot Gemeenschap (Disroot):</string>
<string name="contributorsTitle">Bijdragers</string>
<string name="contributors"><b> &#8226; muppeth:</b>\n Disroot administrator\n\n<b> &#8226; antilopa:</b>\n Disroot administrator\n\n<b> &#8226; Massimiliano:</b>\n Ontwikkelaar\n\n<b> &#8226; Fede:</b>\n Inhoud bijdrager\n\n<b> &#8226; Meaz:</b>\n Inhoud bijdrager\n\n<b> &#8226; maryjane:</b>\n Inhoud bijdrager\n\n</string>
<string name="contributors"><b> &#8226; muppeth:</b>\n Disroot administrator\n\n<b> &#8226; antilopa:</b>\n Disroot administrator\n\n<b> &#8226; Massimiliano:</b>\n Ontwikkelaar\n\n<b> &#8226; Fede:</b>\n Inhoud bijdrager\n\n<b> &#8226; Meaz:</b>\n Inhoud bijdrager\n\n<b> &#8226; maryjane:</b>\n Inhoud bijdrager\n\n<b> &#8226; userdebug:</b>\n Inhoud bijdrager\n\n<b> &#8226; ButterflyOfFire:</b>\n Inhoud bijdrager\n\n</string>
<string name="fDroid">F-Droid</string>
<string name="thirdparty">Third-Party Libraries</string>
<string name="thirdpartyText"><a href="https://github.com/cketti/ckChangeLog">ckCangelog: </a>Apache Licentie 2.0\n\n<a href="https://github.com/wsdfhjxc/taponium/">Taponium: </a>GNU General Public License v3.0</string>
@ -127,5 +127,33 @@
<string name="Forget">Vergeet mijn keuze</string>
<string name="ForgetTitle">Vergeet chat client!</string>
<string name="title_activity_tap">TapActivity</string>
<string name="action_clear_cookies">Verwijder cookies</string>
<string name="DiaInstallTitle">Installatie vereist</string>
<string name="DiasporaDialog">Om verder te gaan moet u eerst Dandelion installeren.\nPlease select install to continue with the installatin on F-Droid.</string>
<string name="global_cancel">Annuleren</string>
<string name="global_install">Installeren</string>
<string name="MailDialog">Om verder te gaan moet u eerst K9-Mail installeren.\nSelecteer Installeren om verder te gaan met de installatie op F-Droid.</string>
<string name="CloudDialog">Om verder te gaan moet u eerst Nextcloud app installeren.\nSelecteer Installeren om verder te gaan met de installatie op F-Droid.</string>
<string name="ChatDialog">Om verder te gaan moet u eerst Conversations installeren.\nSelecteer Installeren om verder te gaan met de installatie op F-Droid.</string>
<string name="app_state">Disroot status</string>
<string name="Operational">Operationeel</string>
<string name="MajorOutage">Ernstige storing</string>
<string name="EmailService">Email Service</string>
<string name="LastUpdated">"Laatst geupdate: \"</string>
<string name="WebmailService">WebMail Service</string>
<string name="Cloud">Cloud</string>
<string name="PerformanceIssues">Prestatieproblemen</string>
<string name="Notification">Geen problemen</string>
<string name="Notificationissues">Sommige systemen ondervinden problemen</string>
<string name="state_messages_btn">Toon statusberichten</string>
<string name="state_btn">Toon Service Status</string>
<string name="ScheduledAt">Gepland op: \</string>
<string name="NotificationTitle">Bericht van Disroot State!</string>
<string name="Scheduled">Gepland</string>
<string name="Investigating">Aan het onderzoeken</string>
<string name="Identified">Geïdentificeerd</string>
<string name="NotesTitle">Nextcloud Notes Info</string>
<string name="NotesInfo">De notes app is een afleidingsvrije notities app voor Nextcloud.</string>
<string name="NotesDialog">Om verder te gaan moet u eerst Notes installeren.\nSelecteer Installeren om verder te gaan met de installatie op F-Droid.</string>
<string name="action_notes">Notes</string>
</resources>

View File

@ -23,25 +23,25 @@
<string name="action_reload">Recarregar</string>
<string name="action_options">Actions</string>
<string name="activity_main_share_info">share link info</string>
<string name="view_loading_description">Loading</string>
<string name="action_options">Ações</string>
<string name="activity_main_share_info">Partilhe a ingormação do link</string>
<string name="view_loading_description">A carregar</string>
<string name="global_ok">OK</string>
<string name="more_help">Precisa de mais ajuda?</string>
<string name="tell_more">Contem-me mais</string>
<string name="title_activity_about">AboutActivity</string>
<string name="tell_more">Conte-me mais</string>
<string name="title_activity_about">Sobre Atividades</string>
<string name="MailInfoTitle">Mail Settings</string>
<string name="MailInfo">IMAP: disroot.org\nSSL Port 993\nAuthentication: Normal Password\n\nSMTP: disroot.org\nSTARTTLS Port 587\nAuthentication: Normal Password\n\nPOP: disroot.org\nSSL Port 995\nAuthentication: Normal Password</string>
<string name="CloudInfoTitle">Nextcloud Settings</string>
<string name="CloudInfo">Keep your data synchronized and safe. With Nextcloud you can share your files, calendars, contacts and more.\n\nHost:\n https://cloud.disroot.org\n\nUsername:\n your_disroot_username\n\nPassword:\n your_disroot_password.</string>
<string name="WelcomeTitle">Welcome</string>
<string name="WelcomeInfo">Disroot is a platform providing online services based on principles of freedom, privacy, federation and decentralization.\nThis app is like your Swiss Army knife to the Disroot platform, made by the community for the community.\nIf you don\'t have a Disroot account you can still use this app to access all the Disroot services that do not require an account:\n \ \ \ &#8226; Etherpad\n \ \ \ &#8226; Ethercalc\n \ \ \ &#8226; Private bin\n \ \ \ &#8226; Upload\n \ \ \ &#8226; Poll\n \ \ \ &#8226; Searx\n \ \ \ &#8226; Diaspora* (requires a Diaspora only account)\n\nThe app may require you to install additional apps. We highly recommend you install F-Droid - a free and open source app marketplace - as not all apps can be found on Google\'s Play Store and F-Droid is more privacy oriented (no tracking, no account needed) you can download it by tapping on the F-droid icon.\n</string>
<string name="MailInfoTitle">Definições de Email</string>
<string name="MailInfo">IMAP: disroot.org\nSSL Port 993\nAuthenticação: Normal Password\n\nSMTP: disroot.org\nSTARTTLS Port 587\nAutenticação: Normal Password\n\nPOP: disroot.org\nSSL Port 995\nAutenticação: Normal Password</string>
<string name="CloudInfoTitle">Definições Nextcloud</string>
<string name="CloudInfo">Mantenha os seus dados sincronizados e seguros. Com o Nextcloud pode partilhar os seus ficheiros calendários, contactos e mais.\n\nHost:\n https://cloud.disroot.org\n\nNome de utilizador:\n O_seu_nome_de_utilizador_disroot\n\nPassword:\n a_sua_password_do_disroot.</string>
<string name="WelcomeTitle">Bem Vindo</string>
<string name="WelcomeInfo">O Disroot é uma plataforma baseada nos princípios de liberdade, privacidade, federação e descentralização que fornece serviços online.\nEsta aplicação é como um Canivete Suiço para a plataforma Disroot, feito pela comunidade para a comunidade.\nSe não tem uma conta Disroot pode utilizar esta aplicação para aceder a todos os serviços do Disroot que não precisam de uma conta de utilizador:\n \ \ \ &#8226; Etherpad\n \ \ \ &#8226; Ethercalc\n \ \ \ &#8226; Private bin\n \ \ \ &#8226; Upload\n \ \ \ &#8226; Poll\n \ \ \ &#8226; Searx\n \ \ \ &#8226; Diaspora* (requer uma conta apenas para o Diaspora)\n\nA aplicação pode pedir que instale outras aplicações adicionais. Nós recomendamos vivamente que instale o F-Droid - uma loja de aplicações livres e open source - porque nem todas as aplicações podem ser encontradas na Play Store Google e o F-Droid é mais focado na privacidade (sem tracking, sem preciso criar conta de utilizador) pode descarregar o F-droid carregando no ícone F-droid.\n</string>
<string name="help">Help</string>
<string name="license">License</string>
<string name="action_settings">Settings</string>
<string name="licenseTitle">License</string>
<string name="help">Ajuda</string>
<string name="license">Licença</string>
<string name="action_settings">Defenições</string>
<string name="licenseTitle">Licença</string>
<string name="license_button">GNU LGPLv3.0 License</string>
<!--Non translatable
<string translatable="false" name="licenseText">Copyright © 2007 Free Software Foundation, Inc.\n
@ -54,7 +54,7 @@
<string name="disrootUrl">https://disroot.org</string>
<string name="disroot"> * Disroot Community (Disroot):</string>
<string name="contributorsTitle">Contributors</string>
<string name="contributors"><b> &#8226; muppeth:</b>\n Disroot admin\n\n<b> &#8226; antilopa:</b>\n Disroot admin\n\n<b> &#8226; Massimiliano:</b>\n Current developer of the Disroot app\n\n<b> &#8226; Fede:</b>\n Content contributor\n\n<b> &#8226; Meaz:</b>\n Content contributor\n\n<b> &#8226; maryjane:</b>\n Content contributor\n\n</string>
<string name="contributors"><b> &#8226; muppeth:</b>\n Disroot admin\n\n<b> &#8226; antilopa:</b>\n Disroot admin\n\n<b> &#8226; Massimiliano:</b>\n Current developer of the Disroot app\n\n<b> &#8226; Fede:</b>\n Content contributor\n\n<b> &#8226; Meaz:</b>\n Content contributor\n\n<b> &#8226; maryjane:</b>\n Content contributor\n\n<b> &#8226; userdebug:</b>\n Content contributor\n\n<b> &#8226; ButterflyOfFire:</b>\n Content contributor\n\n</string>
<string name="fDroid">F-Droid</string>
<string name="thirdparty">Bibliotecas de Terceiros</string>
<string name="thirdpartyText"><a href="https://github.com/cketti/ckChangeLog">ckCangelog: </a>Apache License 2.0\n\n<a href="https://github.com/wsdfhjxc/taponium/">Taponium: </a>GNU General Public License v3.0</string>
@ -65,7 +65,7 @@
<string name="AppVersion">Versão da Aplicação: %1$s</string>
<string name="Device">Dispositivo:</string>
<string name="Contribute">Contribuir</string>
<string name="ContributeText">A aplicação Disroot segue os principios da Fundação Disroot, é desenvolvida segundo o principio de "free as in Freedom". Se quiser contribuir para o desenvolvimento desta plaicação, força! De momento somos uma equipa muito pequena, por isso agradecemos qualquer tipo de ajuda!</string>
<string name="ContributeText">A aplicação Disroot segue os princípios da Fundação Disroot, é desenvolvida segundo o principio de "free as in Freedom". Se quiser contribuir para o desenvolvimento desta plaicação, força! De momento somos uma equipa muito pequena, por isso agradecemos qualquer tipo de ajuda!</string>
<string name="ContributeBtn">Obter o código fonte</string>
<string name="Translate">Traduzir</string>
<string name="TranslateText">A app não está disponível na sua língua? Pode resolver isso! Porque não nos ajuda traduzindo-a para a sua língua?</string>
@ -81,7 +81,7 @@
<string name="FirstTitle">Quase que me esquecia</string>
<string name="FirstInfo">Podes carregar por alguns segundos em cada ícone para aparecer informação extra…</string>
<string name="DiasporaTitle">Definições do Diaspora*</string>
<string name="DiasporaInfo">Rede social Distribuida e Descentralizada. Postar, partilhar, criar comunidades.\n\nUsername:\n o_seu_nome_de_utilizador_no_diaspora@pod.disroot.org\n\nPassword:\n a_sua_password_diaspora</string>
<string name="DiasporaInfo">Rede social Distribuída e Descentralizada. Postar, partilhar, criar comunidades.\n\nUsername:\n o_seu_nome_de_utilizador_no_diaspora@pod.disroot.org\n\nPassword:\n a_sua_password_diaspora</string>
<string name="PadInfo">Com o Etherpad pode escrever artigos, comunicados de imprensa, listas de tarefas, etc. em conjunto com outras pessoas, amigos, colegas, todos a trabalhar no mesmo documento ao mesmo tempo.\nNão é necessário ter uma conta de utilizador para usar.</string>
<string name="PadTitle">Sobre EtherPad</string>
<string name="ChatTitle">Definições do XMPP\n</string>
@ -126,5 +126,33 @@
<string name="Forget">Forget my choise</string>
<string name="ForgetTitle">Forget chat client!</string>
<string name="title_activity_tap">TapActivity</string>
<string name="action_clear_cookies">Clear cookies</string>
<string name="DiaInstallTitle">Installation request</string>
<string name="DiasporaDialog">To continue you need to install Dandelion first.\nPlease select install to continue with the installatin on F-Droid.</string>
<string name="global_cancel">Cancel</string>
<string name="global_install">Install</string>
<string name="MailDialog">To continue you need to install K9-Mail first.\nPlease select install to continue with the installatin on F-Droid.</string>
<string name="CloudDialog">To continue you need to install the Nextcloud app first.\nPlease select install to continue with the installatin on F-Droid.</string>
<string name="ChatDialog">To continue you need to install Conversations first.\nPlease select install to continue with the installatin on F-Droid.</string>
<string name="app_state">Disroot state</string>
<string name="Operational">Operational</string>
<string name="MajorOutage">Major Outage</string>
<string name="EmailService">Email Service</string>
<string name="LastUpdated">Last updated: \</string>
<string name="WebmailService">WebMail Service</string>
<string name="Cloud">Cloud</string>
<string name="PerformanceIssues">Performance Issues</string>
<string name="Notification">No issues</string>
<string name="Notificationissues">Some systems are experiencing issues</string>
<string name="state_messages_btn">Show State messages</string>
<string name="state_btn">Show Service State</string>
<string name="ScheduledAt">Scheduled at:</string>
<string name="NotificationTitle">Message from Disroot State!</string>
<string name="Scheduled">Scheduled</string>
<string name="Investigating">Investigating</string>
<string name="Identified">Identified</string>
<string name="NotesTitle">Nextcloud Notes Info</string>
<string name="NotesInfo">The notes app is a distraction free notes taking app for Nextcloud</string>
<string name="NotesDialog">To continue you need to install Notes first.\nPlease select install to continue with the installatin on F-Droid.</string>
<string name="action_notes">Notes</string>
</resources>

View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
</resources>

View File

@ -2,4 +2,5 @@
<resources>
<color name="bg_primary_blue">#50162d</color>
<color name="bg_primary_blue_dark">#1f5c60</color>
<color name="gray">#808080</color>
</resources>

View File

@ -44,7 +44,7 @@
<string name="licenseTitle">License</string>
<string name="license_button">GNU LGPLv3.0 License</string>
<string translatable="false" name="licenseText">Copyright © 2007 Free Software Foundation, Inc.\n
<string name="licenseText" translatable="false">Copyright © 2007 Free Software Foundation, Inc.\n
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, version 3 of the License only.\n\n
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
</string>
@ -54,7 +54,7 @@
<string name="disrootUrl">https://disroot.org</string>
<string name="disroot"> * Disroot Community (Disroot):</string>
<string name="contributorsTitle">Contributors</string>
<string name="contributors"><b> &#8226; muppeth:</b>\n Disroot admin\n\n<b> &#8226; antilopa:</b>\n Disroot admin\n\n<b> &#8226; Massimiliano:</b>\n Developer\n\n<b> &#8226; Fede:</b>\n Content contributor\n\n<b> &#8226; Meaz:</b>\n Content contributor\n\n<b> &#8226; maryjane:</b>\n Content contributor\n\n</string>
<string name="contributors"><b> &#8226; muppeth:</b>\n Disroot admin\n\n<b> &#8226; antilopa:</b>\n Disroot admin\n\n<b> &#8226; Massimiliano:</b>\n Developer\n\n<b> &#8226; Fede:</b>\n Content contributor\n\n<b> &#8226; Meaz:</b>\n Content contributor\n\n<b> &#8226; maryjane:</b>\n Content contributor\n\n<b> &#8226; userdebug:</b>\n Content contributor\n\n</string>
<string name="fDroid">F-Droid</string>
<string name="thirdparty">Third-Party Libraries</string>
<string name="thirdpartyText"><a href="https://github.com/cketti/ckChangeLog">ckCangelog: </a>Apache License 2.0\n\n<a href="https://github.com/wsdfhjxc/taponium/">Taponium: </a>GNU General Public License v3.0</string>
@ -126,5 +126,34 @@
<string name="Forget">Forget my choice</string>
<string name="ForgetTitle">Forget chat client!</string>
<string name="title_activity_tap">TapActivity</string>
<string name="action_clear_cookies">Clear cookies</string>
<string name="DiaInstallTitle">Installation request</string>
<string name="DiasporaDialog">To continue you need to install Dandelion first.\nPlease select install to continue with the installatin on F-Droid.</string>
<string name="global_cancel">Cancel</string>
<string name="global_install">Install</string>
<string name="MailDialog">To continue you need to install K9-Mail first.\nPlease select install to continue with the installatin on F-Droid.</string>
<string name="CloudDialog">To continue you need to install the Nextcloud app first.\nPlease select install to continue with the installatin on F-Droid.</string>
<string name="ChatDialog">To continue you need to install Conversations first.\nPlease select install to continue with the installatin on F-Droid.</string>
<string name="title_activity_state" translatable="false">StateActivity</string>
<string name="app_state">Disroot state</string>
<string name="Operational">Operational</string>
<string name="MajorOutage">Major Outage</string>
<string name="EmailService">Email Service</string>
<string name="LastUpdated">"Last updated: \"</string>
<string name="WebmailService">WebMail Service</string>
<string name="Cloud">Cloud</string>
<string name="PerformanceIssues">Performance Issues</string>
<string name="Notification">No issues</string>
<string name="Notificationissues">Some systems are experiencing issues</string>
<string name="state_messages_btn">Show State messages</string>
<string name="state_btn">Show Service State</string>
<string name="ScheduledAt">Scheduled at: \</string>
<string name="NotificationTitle">Message from Disroot State!</string>
<string name="Scheduled">Scheduled</string>
<string name="Investigating">Investigating</string>
<string name="Identified">Identified</string>
<string name="NotesTitle">Nextcloud Notes Info</string>
<string name="NotesInfo">The notes app is a distraction free notes taking app for Nextcloud</string>
<string name="NotesDialog">To continue you need to install Notes first.\nPlease select install to continue with the installatin on F-Droid.</string>
<string name="action_notes">Notes</string>
</resources>

View File

@ -14,19 +14,23 @@
<style name="Widget.MyApp.ActionBar" parent="Widget.AppCompat.ActionBar">
<item name="theme">@style/ThemeOverlay.MyApp.ActionBar</item>
<item name="popupTheme">@style/ThemeOverlay.AppCompat.Dark</item> <!--change theme for actionbar poupmenu-->
<item name="popupTheme">@style/ThemeOverlay.AppCompat.Dark
</item> <!--change theme for actionbar poupmenu-->
</style>
<style name="ThemeOverlay.MyApp.ActionBar" parent="ThemeOverlay.AppCompat.Dark.ActionBar">
<item name="android:textColorPrimary">@android:color/white</item>
<item name="android:actionMenuTextColor">@android:color/white</item><!--<item name="android:textSize">18sp</item>-->
<item name="android:actionMenuTextColor">@android:color/white
</item><!--<item name="android:textSize">18sp</item>-->
</style>
<style name="DisTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />
<style name="DisTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="cardViewStyle">@style/CardView</item></style>
<!-- Customize your theme here. -->
<item name="cardViewStyle">@style/CardView</item>
</style>
</resources>

View File

@ -1,14 +1,39 @@
<?xml version="1.0" encoding="utf-8"?>
<changelog>
<release version="1.1.0" versioncode="13" >
<change>State page is api based instead of webview</change>
<change>In State page is possible to view state messages on separate tab</change>
<change>State page ordered by status</change>
<change>Fixed app crashing when launching Pix-art messenger</change>
<change>Fixed app launch in state on fresh install</change>
<change>Added app notification on new state events with sound and vibration</change>
<change>Added Notes app</change>
<change>A few other small fixes</change>
</release>
<release version="1.0.2" versioncode="12" >
<change>Third partie cookies disabled</change>
<change>Fixed French translation</change>
<change>Added more clear dialogs for additional apps</change>
</release>
<release version="1.0.1" versioncode="11" >
<change>Added Store cookies</change>
<change>Added clear cache</change>
<change>Workaround for app crashing when uploading in Lufi</change>
</release>
<release version="1.0.0" versioncode="10" >
<change>Added Serbian translation</change>
<change>Fixed changelog</change>
<change>Pushed V1.0.0</change>
</release>
<release version="0.9.4" versioncode="9" >
<changelog>Added Portuguese translation</changelog>
<change>Added Portuguese translation</change>
</release>
<release version="0.9.3" versioncode="8" >
<changelog>Fixed chatroom redirection</changelog>
<changelog>Added Dutch translation</changelog>
<change>Fixed chatroom redirection</change>
<change>Added Dutch translation</change>
</release>
<release version="0.9.2" versioncode="7" >
<changelog>Fixed cloud tip</changelog>
<change>Fixed cloud tip</change>
<change>Fixed app crash on tapping mail icon</change>
<change>Fixed first time asking xmpp client</change>
<change>Italian translation added</change>

View File

@ -6,7 +6,7 @@ buildscript {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.2.0'
classpath 'com.android.tools.build:gradle:3.2.1'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files

View File

@ -18,6 +18,7 @@ The app may require you to install additional apps. We highly recommend you inst
* Italian
* Dutch
* Portuguese
* Serbian
<b>Support the project:</b>
✋ Join discussion on <a href="xmpp:disroot@chat.disroot.org">xmpp:disroot@chat.disroot.org</a>