Compare commits

...

12 Commits

Author SHA1 Message Date
massi e2190b8de1 Removal of Board and Forum 2023-11-17 00:31:49 +01:00
massi d51efa8b89 Correction of informative state messages 2022-11-25 20:34:00 +01:00
massi 310f84dbcd Corrected Changelog typo
Updated to v2.0.6
2022-10-29 20:40:51 +02:00
massi c45bc87e7c Updated to v2.0.5
Corrected need more help link for notes
2022-10-29 20:29:44 +02:00
massi 250173e35f Updated to v2.0.5
Corrected need more help link for notes
2022-10-29 20:25:47 +02:00
massi f8c86d66f7 Solved installed apps check for Android 11 and higher 2022-10-29 09:09:46 +02:00
massi 6587ec084d Corrected need more help link for notes 2022-10-29 08:38:02 +02:00
massi caa9cb34c0 updated cryptpad icon 2022-10-29 08:30:27 +02:00
massi 4a91810cd9 Removed all Polls strings and translations 2022-10-29 02:07:30 +02:00
massi c4e8167efc Added Cryptpad
Removed Calc
Removed Polls
Refractor
Improved ui state
2022-10-29 02:01:02 +02:00
massi f01c6cb893 Correct new version changelog typo 2022-10-28 20:59:18 +02:00
massi a516d2d699 Migration to status.disroot.org
Update Gradle + SDK
2022-10-28 20:52:08 +02:00
48 changed files with 616 additions and 1333 deletions

View File

@ -1,32 +0,0 @@
<?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_settings" />
<entry key="sourceFile" value="$PROJECT_DIR$/../DisIcons/v2/ic_settings.svg" />
</map>
</option>
</PersistentState>
</value>
</entry>
</map>
</option>
</PersistentState>
</value>
</entry>
</map>
</option>
</component>
</project>

Binary file not shown.

View File

@ -1,116 +0,0 @@
<component name="ProjectCodeStyleConfiguration">
<code_scheme name="Project" version="173">
<codeStyleSettings language="XML">
<indentOptions>
<option name="CONTINUATION_INDENT_SIZE" value="4" />
</indentOptions>
<arrangement>
<rules>
<section>
<rule>
<match>
<AND>
<NAME>xmlns:android</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>^$</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>xmlns:.*</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>^$</XML_NAMESPACE>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*:id</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*:name</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>name</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>^$</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>style</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>^$</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>^$</XML_NAMESPACE>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND>
</match>
<order>ANDROID_ATTRIBUTE_ORDER</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>.*</XML_NAMESPACE>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
</rules>
</arrangement>
</codeStyleSettings>
</code_scheme>
</component>

View File

@ -1,12 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="RunConfigurationProducerService">
<option name="ignoredProducers">
<set>
<option value="org.jetbrains.plugins.gradle.execution.test.runner.AllInPackageGradleConfigurationProducer" />
<option value="org.jetbrains.plugins.gradle.execution.test.runner.TestClassGradleConfigurationProducer" />
<option value="org.jetbrains.plugins.gradle.execution.test.runner.TestMethodGradleConfigurationProducer" />
</set>
</option>
</component>
</project>

View File

@ -10,11 +10,10 @@
It also can be used to access all the **Disroot** services that do not require an account:
* Etherpad
* Ethercalc
* Cryptpad
* Calls
* Private bin
* Upload
* Polls
* Searx
#### Supported languages:

View File

@ -1,13 +1,13 @@
apply plugin: 'com.android.application'
android {
compileSdkVersion 28
compileSdk 32
defaultConfig {
applicationId "org.disroot.disrootapp"
minSdkVersion 16
targetSdkVersion 28
versionCode 26
versionName "2.0.3"
targetSdkVersion 32
versionCode 31
versionName "2.0.8"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
@ -16,13 +16,14 @@ android {
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
namespace 'org.disroot.disrootapp'
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
//noinspection GradleCompatible
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
implementation 'com.android.support.constraint:constraint-layout:2.0.4'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
@ -46,9 +47,9 @@ repositories {
}
dependencies {
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
implementation 'com.android.support.constraint:constraint-layout:2.0.4'
}
dependencies {
implementation 'com.android.support.constraint:constraint-layout:+'
implementation 'com.android.support.constraint:constraint-layout:2.0.4'
}

View File

@ -1,13 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="org.disroot.disrootapp">
<manifest xmlns:tools="http://schemas.android.com/tools"
xmlns:android="http://schemas.android.com/apk/res/android">
<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.WRITE_EXTERNAL_STORAGE"
tools:ignore="ScopedStorage" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES"
tools:ignore="QueryAllPackagesPermission" />
<application
android:allowBackup="true"
@ -16,7 +19,9 @@
android:icon="@drawable/ic_app_logo"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/DisTheme">
android:theme="@style/DisTheme"
android:dataExtractionRules="@xml/data_extraction_rules"
tools:targetApi="s">
<receiver
android:name=".StatusBroadcastReceiver"
@ -33,9 +38,9 @@
android:exported="false" />
<activity
android:name=".ui.SplashScreenActivity"
android:name="org.disroot.disrootapp.ui.SplashScreenActivity"
android:configChanges="orientation|screenSize"
android:label="@string/app_name">
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
@ -43,10 +48,11 @@
</intent-filter>
</activity>
<activity
android:name=".ui.MainActivity"
android:name="org.disroot.disrootapp.ui.MainActivity"
android:configChanges="orientation|screenSize"
android:hardwareAccelerated="true"
android:label="@string/dashboard">
android:label="@string/dashboard"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
@ -60,26 +66,21 @@
android:host="upload.disroot.org"
android:scheme="https" />
<data
android:host="forum.disroot.org"
android:scheme="https" />
<data
android:host="calc.disroot.org"
android:host="cryptpad.disroot.org"
android:scheme="https" />
<data
android:host="bin.disroot.org"
android:scheme="https" />
<data
android:host="poll.disroot.org"
android:scheme="https" />
<data
android:host="upload.disroot.org"
android:scheme="https" />
<data
android:host="board.disroot.org"
android:scheme="https" />
<data
android:host="searx.disroot.org"
android:scheme="https" />
<data
android:host="status.disroot.org"
android:scheme="https" />
</intent-filter>
</activity>
<activity
@ -101,6 +102,7 @@
android:theme="@style/DisTheme" />
<activity
android:name="wsdfhjxc.taponium.MainActivity"
android:exported="true"
android:label="@string/title_activity_tap"
android:screenOrientation="portrait">
<intent-filter>

View File

@ -1,11 +1,13 @@
package org.disroot.disrootapp;
import android.annotation.SuppressLint;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
public class StatusBroadcastReceiver extends BroadcastReceiver {
@SuppressLint("UnsafeProtectedBroadcastReceiver")
@Override
public void onReceive(Context context, Intent intent) {

View File

@ -37,7 +37,7 @@ public class StatusService extends Service {
//status report
public SharedPreferences checkDate;
// URL to get data JSON
static String incidenturl0 ="https://state.disroot.org/api/v1/incidents?sort=id&order=desc";
static String incidentUrl0 ="https://status.disroot.org/issues/index.json";
ArrayList<HashMap<String, String>> messageList;
ArrayList<HashMap<String, String>> getDate;
@ -78,20 +78,20 @@ public class StatusService extends Service {
protected Void doInBackground(Void... arg0) {
HttpHandler sh = new HttpHandler();
String jsonStrincidents0 = sh.makeServiceCall(incidenturl0);
String jsonStringIdents0 = sh.makeServiceCall( incidentUrl0 );
Log.e(TAG, "Response from url(Service): " + incidenturl0);
Log.e(TAG, "Response from url(Service): " + incidentUrl0 );
if (jsonStrincidents0 != null) {//Incidaetnts page
if (jsonStringIdents0 != null) {//Incidents page
try {
JSONObject jsonObj = new JSONObject(jsonStrincidents0);
JSONArray data = jsonObj.getJSONArray("data");
JSONObject jsonObj = new JSONObject(jsonStringIdents0);
JSONArray data = jsonObj.getJSONArray("pages");
int a=0;
JSONObject o = data.getJSONObject(a);
String callid = o.getString("id");
String updated = o.getString("updated_at");
String title = o.getString("title");
String updated = o.getString("lastMod");
HashMap<String, String> date = new HashMap<>();
date.put("id", callid);
date.put("title", title);
date.put("updated", updated);
getDate.add(date);
String stateDate = date.put( "updated", updated );
@ -100,7 +100,7 @@ public class StatusService extends Service {
assert dateStored != null;
if (dateStored.equals( "" ))
{
checkDate.edit().putString( "storeDate", stateDate).apply();
checkDate.edit().putString( "storeDate", "stateDate").apply();
//return null;
}
else {
@ -114,7 +114,7 @@ public class StatusService extends Service {
return null;
}
else
Log.e(TAG, "updated json(service)");
Log.e(TAG, stateDate+"updated json(service)"+dateStored);
}
return null;
@ -137,26 +137,26 @@ public class StatusService extends Service {
String CHANNEL_ID = "3168654312";
String CHANNEL_NAME = "StateNotification";
HttpHandler sh = new HttpHandler();
String jsonStrincidents0 = sh.makeServiceCall(incidenturl0);
JSONObject jsonObj = new JSONObject(jsonStrincidents0);
JSONArray data = jsonObj.getJSONArray("data");
String jsonStringIdents0 = sh.makeServiceCall( incidentUrl0 );
JSONObject jsonObj = new JSONObject(jsonStringIdents0);
JSONArray data = jsonObj.getJSONArray("pages");
int a=0;
JSONObject o = data.getJSONObject(a);
String name = o.getString( "name" );
String message = o.getString( "message" );
String title = o.getString( "title" );
String permalink = o.getString( "permalink" );
HashMap<String, String> date = new HashMap<>();
date.put("name", name);
date.put("message", message);
date.put("title", title);
date.put("permalink", permalink);
getDate.add(date);
Log.e(TAG, "message: " + name);
Log.e(TAG, "message: " + title+" link "+permalink);
Intent goState = new Intent( StatusService.this, StateMessagesActivity.class);
PendingIntent launchStateMessages = PendingIntent.getActivity(StatusService.this,0, goState, PendingIntent.FLAG_UPDATE_CURRENT);
@SuppressLint("UnspecifiedImmutableFlag") PendingIntent launchStateMessages = PendingIntent.getActivity(StatusService.this,0, goState, PendingIntent.FLAG_UPDATE_CURRENT);
NotificationManager notificationManager = (NotificationManager) this.getSystemService( Context.NOTIFICATION_SERVICE);
NotificationCompat.InboxStyle inboxStyle = new NotificationCompat.InboxStyle();
inboxStyle.addLine(message);
inboxStyle.addLine(permalink);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
// I would suggest that you use IMPORTANCE_DEFAULT instead of IMPORTANCE_HIGH
NotificationChannel channel = new NotificationChannel(CHANNEL_ID, CHANNEL_NAME, NotificationManager.IMPORTANCE_HIGH);
@ -172,8 +172,8 @@ public class StatusService extends Service {
.setOngoing(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 :-)
.setContentText(title)//get text Title from json :-)
.setContentInfo(permalink)//get text message from json :-)
.setContentIntent(launchStateMessages);
Uri alarmSound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
notificationBuilder.setSound(alarmSound)

View File

@ -1,6 +1,7 @@
package org.disroot.disrootapp.ui;
import android.annotation.SuppressLint;
import android.content.Intent;
import android.net.Uri;
import android.os.Build;
@ -43,12 +44,7 @@ public class AboutActivity extends AppCompatActivity {
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();
}
});
toolbar.setNavigationOnClickListener( v -> onBackPressed() );
// Create the adapter that will return a fragment for each of the three
// primary sections of the activity.
/*
@ -59,7 +55,7 @@ public class AboutActivity extends AppCompatActivity {
may be best to switch to a
{@link android.support.v4.app.FragmentStatePagerAdapter}.
*/
SectionsPagerAdapter mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());
SectionsPagerAdapter mSectionsPagerAdapter = new SectionsPagerAdapter( getSupportFragmentManager() );
// Set up the ViewPager with the sections adapter.
/*
@ -74,16 +70,11 @@ public class AboutActivity extends AppCompatActivity {
tabLayout.addOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(mViewPager));
FloatingActionButton fab = findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Uri uri = Uri.parse(Constants.URL_SUPPORT);
Intent support = new Intent(Intent.ACTION_VIEW, Uri.parse(String.valueOf(uri)));
startActivity(support);
// Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
// .setAction("Action", null).show();
}
});
fab.setOnClickListener( view -> {
Uri uri = Uri.parse(Constants.URL_SUPPORT);
Intent support = new Intent(Intent.ACTION_VIEW, Uri.parse(String.valueOf(uri)));
startActivity(support);
} );
}
@ -137,6 +128,7 @@ public class AboutActivity extends AppCompatActivity {
return fragment;
}
@SuppressLint("SetTextI18n")
@Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
@ -151,67 +143,49 @@ public class AboutActivity extends AppCompatActivity {
final Button ContributeBtn = rootView.findViewById(R.id.ContributeBtn);//ContributeBtn
ContributeBtn.setOnClickListener(new View.OnClickListener()
{
public void onClick(View arg0) {
Uri uri = Uri.parse(Constants.URL_SOURCE);
Intent code = new Intent(Intent.ACTION_VIEW, Uri.parse(String.valueOf(uri)));
startActivity(code);
}
});
ContributeBtn.setOnClickListener( arg0 -> {
Uri uri = Uri.parse(Constants.URL_SOURCE);
Intent code = new Intent(Intent.ACTION_VIEW, Uri.parse(String.valueOf(uri)));
startActivity(code);
} );
final Button TranslateBtn = rootView.findViewById(R.id.TranslateBtn);//TranslateBtn
TranslateBtn.setOnClickListener(new View.OnClickListener()
{
public void onClick(View arg0) {
Uri uri = Uri.parse(Constants.URL_TRANSLATE);
Intent translate = new Intent(Intent.ACTION_VIEW, Uri.parse(String.valueOf(uri)));
startActivity(translate);
}
});
TranslateBtn.setOnClickListener( arg0 -> {
Uri uri = Uri.parse(Constants.URL_TRANSLATE);
Intent translate = new Intent(Intent.ACTION_VIEW, Uri.parse(String.valueOf(uri)));
startActivity(translate);
} );
final Button FeedbackBtn1;//FeedbackBtn1
FeedbackBtn1 = rootView.findViewById(R.id.FeedbackBtn1);
FeedbackBtn1.setOnClickListener(new View.OnClickListener()
{
public void onClick(View arg0) {
Uri uri = Uri.parse(Constants.URL_BUGS);
Intent feedback1 = new Intent(Intent.ACTION_VIEW, Uri.parse(String.valueOf(uri)));
startActivity(feedback1);
}
});
FeedbackBtn1.setOnClickListener( arg0 -> {
Uri uri = Uri.parse(Constants.URL_BUGS);
Intent feedback1 = new Intent(Intent.ACTION_VIEW, Uri.parse(String.valueOf(uri)));
startActivity(feedback1);
} );
final Button FeedbackBtn2 = rootView.findViewById(R.id.FeedbackBtn2);//FeedbackBtn2
FeedbackBtn2.setOnClickListener(new View.OnClickListener()
{
public void onClick(View arg0) {
Uri uri = Uri.parse(Constants.URL_XMPP);
Intent feedback2 = new Intent(Intent.ACTION_VIEW, Uri.parse(String.valueOf(uri)));
startActivity(feedback2);
}
});
FeedbackBtn2.setOnClickListener( arg0 -> {
Uri uri = Uri.parse(Constants.URL_XMPP);
Intent feedback2 = new Intent(Intent.ACTION_VIEW, Uri.parse(String.valueOf(uri)));
startActivity(feedback2);
} );
break;
case 2:
rootView = inflater.inflate(R.layout.fragment_about_about, container, false);
final ImageButton fDroidBtn = rootView.findViewById(R.id.fDroidBtn);//fDroidBtn
fDroidBtn.setOnClickListener(new View.OnClickListener()
{
public void onClick(View arg0) {
Uri uri = Uri.parse(Constants.URL_FDROID);
Intent fDroid = new Intent(Intent.ACTION_VIEW, Uri.parse(String.valueOf(uri)));
startActivity(fDroid);
}
});
fDroidBtn.setOnClickListener( arg0 -> {
Uri uri = Uri.parse(Constants.URL_FDROID);
Intent fDroid = new Intent(Intent.ACTION_VIEW, Uri.parse(String.valueOf(uri)));
startActivity(fDroid);
} );
final ImageButton homeBtn;//DisrootBtn
homeBtn = rootView.findViewById(R.id.homeBtn);
homeBtn.setOnClickListener(new View.OnClickListener()
{
public void onClick(View arg0) {
Uri uri = Uri.parse(Constants.URL_DISROOT);
Intent home = new Intent(Intent.ACTION_VIEW, Uri.parse(String.valueOf(uri)));
startActivity(home);
}
});
homeBtn.setOnClickListener( arg0 -> {
Uri uri = Uri.parse(Constants.URL_DISROOT);
Intent home = new Intent(Intent.ACTION_VIEW, Uri.parse(String.valueOf(uri)));
startActivity(home);
} );
final TextView PackageName= rootView.findViewById(R.id.PackageName);
PackageName.setText(getString( R.string.id ) + " "+ APPLICATION_ID);
@ -229,13 +203,13 @@ public class AboutActivity extends AppCompatActivity {
rootView = inflater.inflate(R.layout.fragment_about_license, container, false);
//Contributors
//Admins
final TextView contr_text;
contr_text = rootView.findViewById(R.id.admins_text);
contr_text.setMovementMethod( LinkMovementMethod.getInstance());
final TextView contributors_text;
contributors_text = rootView.findViewById(R.id.admins_text);
contributors_text.setMovementMethod( LinkMovementMethod.getInstance());
String admins="";
for(String admin: Contributors.admins) {
admins+="&bull; "+admin+"</a><br>";
contr_text.setText( Html.fromHtml(admins));
contributors_text.setText( Html.fromHtml(admins));
}
//devs
final TextView devs_text;
@ -268,34 +242,25 @@ public class AboutActivity extends AppCompatActivity {
//Buttons
final Button licenseBtn;//LicenseBtn
licenseBtn = rootView.findViewById(R.id.license_button);
licenseBtn.setOnClickListener(new View.OnClickListener()
{
public void onClick(View arg0) {
Uri uri = Uri.parse(Constants.URL_LICENSE);
Intent license = new Intent(Intent.ACTION_VIEW, Uri.parse(String.valueOf(uri)));
startActivity(license);
}
});
licenseBtn.setOnClickListener( arg0 -> {
Uri uri = Uri.parse(Constants.URL_LICENSE);
Intent license = new Intent(Intent.ACTION_VIEW, Uri.parse(String.valueOf(uri)));
startActivity(license);
} );
final TextView disrootBtn;//DisrootBtn
disrootBtn = rootView.findViewById(R.id.disrootUrl);
disrootBtn.setOnClickListener(new View.OnClickListener()
{
public void onClick(View arg0) {
Uri uri = Uri.parse(Constants.URL_DISROOT);
Intent disroot = new Intent(Intent.ACTION_VIEW, Uri.parse(String.valueOf(uri)));
startActivity(disroot);
}
});
final TextView dioBtn;//DiotBtn
disrootBtn.setOnClickListener( arg0 -> {
Uri uri = Uri.parse(Constants.URL_DISROOT);
Intent disroot = new Intent(Intent.ACTION_VIEW, Uri.parse(String.valueOf(uri)));
startActivity(disroot);
} );
final TextView dioBtn;//DioBtn
dioBtn = rootView.findViewById(R.id.dioBtn);
dioBtn.setOnClickListener(new View.OnClickListener()
{
public void onClick(View arg0) {
Uri uri = Uri.parse(Constants.URL_DIO);
Intent dio = new Intent(Intent.ACTION_VIEW, Uri.parse(String.valueOf(uri)));
startActivity(dio);
}
});
dioBtn.setOnClickListener( arg0 -> {
Uri uri = Uri.parse(Constants.URL_DIO);
Intent dio = new Intent(Intent.ACTION_VIEW, Uri.parse(String.valueOf(uri)));
startActivity(dio);
} );
final TextView htmlToTextView = rootView.findViewById(R.id.ThirdParty);// textview links clickable
htmlToTextView.setMovementMethod( LinkMovementMethod.getInstance());// textview links clickable
break;
@ -308,7 +273,7 @@ public class AboutActivity extends AppCompatActivity {
* A {@link FragmentPagerAdapter} that returns a fragment corresponding to
* one of the sections/tabs/pages.
*/
public class SectionsPagerAdapter extends FragmentPagerAdapter {
public static class SectionsPagerAdapter extends FragmentPagerAdapter {
final FragmentManager fm;

View File

@ -92,8 +92,8 @@ public class MainActivity extends AppCompatActivity implements View.OnLongClickL
WebChromeClient.FileChooserParams chooserParams;
ValueCallback<Uri[]> chooserPathUri;
Button button;
private Button MailBtn,CloudBtn,ForumBtn,ChatBtn,PadBtn,CalcBtn,BinBtn,UploadBtn,SearxBtn,PollsBtn,BoardBtn,CallsBtn,NotesBtn,GitBtn,UserBtn,StateBtn,HowToBtn,AboutBtn;//all buttons
private String email,cloud,forum,etherpad,ethercalc,bin,upload,searx,polls,taiga,user,xmpp,notes,git,cryptpad;
private Button MailBtn,CloudBtn,ChatBtn,PadBtn, CryptpadBtn,BinBtn,UploadBtn,SearxBtn,CallsBtn,NotesBtn,GitBtn,UserBtn,StateBtn,HowToBtn,AboutBtn;//all buttons
private String email,cloud,etherpad,bin,upload,searx,jitsi,user,xmpp,notes,git,cryptpad;
private CookieManager cookieManager;
private WebView webView;
private DisWebChromeClient disWebChromeClient;
@ -154,14 +154,12 @@ public class MainActivity extends AppCompatActivity implements View.OnLongClickL
//buttons visiblility preference
BtnPreference = getSharedPreferences( "MailBtn", Context.MODE_PRIVATE );//mail
BtnPreference = getSharedPreferences( "CloudBtn", Context.MODE_PRIVATE );//cloud
BtnPreference = getSharedPreferences( "ForumBtn", Context.MODE_PRIVATE );//forum
BtnPreference = getSharedPreferences( "ChatBtn", Context.MODE_PRIVATE );//chat
BtnPreference = getSharedPreferences( "PadBtn", Context.MODE_PRIVATE );//pad
BtnPreference = getSharedPreferences( "CalcBtn", Context.MODE_PRIVATE );//calc
BtnPreference = getSharedPreferences( "CryptpadBtn", Context.MODE_PRIVATE );//cryptpad
BtnPreference = getSharedPreferences( "BinBtn", Context.MODE_PRIVATE );//bin
BtnPreference = getSharedPreferences( "UploadBtn", Context.MODE_PRIVATE );//upload
BtnPreference = getSharedPreferences( "SearxBtn", Context.MODE_PRIVATE );//search
BtnPreference = getSharedPreferences( "PollsBtn", Context.MODE_PRIVATE );//polls
BtnPreference = getSharedPreferences( "BoardBtn", Context.MODE_PRIVATE );//board
BtnPreference = getSharedPreferences( "CallsBtn", Context.MODE_PRIVATE );//calls
BtnPreference = getSharedPreferences( "NotesBtn", Context.MODE_PRIVATE );//notes
@ -235,16 +233,12 @@ public class MainActivity extends AppCompatActivity implements View.OnLongClickL
// Link the button in activity_main.xml
MailBtn = findViewById( R.id.MailBtn );
CloudBtn = findViewById( R.id.CloudBtn );
//DiasporaBtn = findViewById( R.id.DiasporaBtn );//end of Disroot's Dandelion
ForumBtn = findViewById( R.id.ForumBtn );
ChatBtn = findViewById( R.id.ChatBtn );
PadBtn = findViewById( R.id.PadBtn );
CalcBtn = findViewById( R.id.CalcBtn );
CryptpadBtn = findViewById( R.id.CryptpadBtn );
BinBtn = findViewById( R.id.BinBtn );
UploadBtn = findViewById( R.id.UploadBtn );
SearxBtn = findViewById( R.id.SearxBtn );
PollsBtn = findViewById( R.id.PollsBtn );
BoardBtn = findViewById( R.id.BoardBtn );
CallsBtn = findViewById( R.id.CallsBtn );
NotesBtn = findViewById( R.id.NotesBtn );
GitBtn = findViewById( R.id.GitBtn );
@ -274,16 +268,12 @@ public class MainActivity extends AppCompatActivity implements View.OnLongClickL
//Set longclick buttons
MailBtn.setOnLongClickListener( this );
CloudBtn.setOnLongClickListener( this );
//DiasporaBtn.setOnLongClickListener( this );//end of Disroot's Dandelion
ForumBtn.setOnLongClickListener( this );
ChatBtn.setOnLongClickListener( this );
PadBtn.setOnLongClickListener( this );
CalcBtn.setOnLongClickListener( this );
CryptpadBtn.setOnLongClickListener( this );
BinBtn.setOnLongClickListener( this );
UploadBtn.setOnLongClickListener( this );
SearxBtn.setOnLongClickListener( this );
PollsBtn.setOnLongClickListener( this );
BoardBtn.setOnLongClickListener( this );
CallsBtn.setOnLongClickListener( this );
NotesBtn.setOnLongClickListener( this );
GitBtn.setOnLongClickListener( this );
@ -295,16 +285,12 @@ public class MainActivity extends AppCompatActivity implements View.OnLongClickL
//set clickbuttons
MailBtn.setOnClickListener( this );
CloudBtn.setOnClickListener( this );
//DiasporaBtn.setOnClickListener( this );//end of Disroot's Dandelion
ForumBtn.setOnClickListener( this );
ChatBtn.setOnClickListener( this );
PadBtn.setOnClickListener( this );
CalcBtn.setOnClickListener( this );
CryptpadBtn.setOnClickListener( this );
BinBtn.setOnClickListener( this );
UploadBtn.setOnClickListener( this );
SearxBtn.setOnClickListener( this );
PollsBtn.setOnClickListener( this );
BoardBtn.setOnClickListener( this );
CallsBtn.setOnClickListener( this );
NotesBtn.setOnClickListener( this );
GitBtn.setOnClickListener( this );
@ -347,18 +333,6 @@ public class MainActivity extends AppCompatActivity implements View.OnLongClickL
}
else startActivity(cloud);
break;
/*case R.id.DiasporaBtn: //end ofDisroot's Dandelion
Intent pod = getPackageManager().getLaunchIntentForPackage(Diaspora);
if(getPackageManager().getLaunchIntentForPackage(Diaspora) == null) {
showDiaDialog();
break;
}
else startActivity(pod);
break;*/
case R.id.ForumBtn:
webView.loadUrl(Constants.URL_DisApp_FORUM);
hideDashboard();
break;
case R.id.ChatBtn:
Intent xmpp1 = getPackageManager().getLaunchIntentForPackage(Constants.Conversations);
@ -395,8 +369,8 @@ public class MainActivity extends AppCompatActivity implements View.OnLongClickL
}
else startActivity(pad);
break;
case R.id.CalcBtn:
webView.loadUrl(Constants.URL_DisApp_CALC);
case R.id.CryptpadBtn:
webView.loadUrl(Constants.URL_DisApp_CRYPTPAD );
hideDashboard();
break;
case R.id.BinBtn:
@ -411,18 +385,10 @@ public class MainActivity extends AppCompatActivity implements View.OnLongClickL
webView.loadUrl(Constants.URL_DisApp_SEARX);
hideDashboard();
break;
case R.id.PollsBtn:
webView.loadUrl(Constants.URL_DisApp_POLL);
hideDashboard();
break;
case R.id.BoardBtn:
webView.loadUrl(Constants.URL_DisApp_BOARD);
hideDashboard();
break;
case R.id.CallsBtn:
Intent board = getPackageManager().getLaunchIntentForPackage(Constants.CallsApp);
if(board == null) {
showBoardDialog();
showCallsDialog();
break;
}
else startActivity(board);
@ -474,20 +440,14 @@ public class MainActivity extends AppCompatActivity implements View.OnLongClickL
case R.id.CloudBtn:
showCloudInfo();
break;
/*case R.id.DiasporaBtn://end of Disroot's Dandelion
showDiaInfo();
break;*/
case R.id.ForumBtn:
showForumInfo();
break;
case R.id.ChatBtn:
showChatInfo();
break;
case R.id.PadBtn:
showPadInfo();
break;
case R.id.CalcBtn:
showCalcInfo();
case R.id.CryptpadBtn:
showCryptpadInfo();
break;
case R.id.BinBtn:
showBinInfo();
@ -498,12 +458,6 @@ public class MainActivity extends AppCompatActivity implements View.OnLongClickL
case R.id.SearxBtn:
showSearxInfo();
break;
case R.id.PollsBtn:
showPollsInfo();
break;
case R.id.BoardBtn:
showBoardInfo();
break;
case R.id.CallsBtn:
showCallsInfo();
break;
@ -712,66 +666,6 @@ public class MainActivity extends AppCompatActivity implements View.OnLongClickL
builder.show();
}
/*End of Disroot's Dandelion*
//Diaspora info
private void showDiaInfo() {
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setCancelable(false);
builder.setTitle(R.string.DiasporaTitle);
builder.setMessage(getString(R.string.DiasporaInfo));
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_DIAHELP);
hideDashboard();
}
});
builder.show();
}
private void showDiaDialog(){
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() {
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() {
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setCancelable(false);
builder.setTitle(R.string.ForumTitle);
builder.setMessage(forum + "\n\n"+ getString(R.string.ForumInfo));
builder.setPositiveButton(R.string.global_ok, null);
builder.setNegativeButton(R.string.more_help, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
webView.loadUrl(Constants.URL_DisApp_FORUMHELP);
hideDashboard();
}
});
builder.setNeutralButton( R.string.hide, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
ViewGroup viewGroup =((ViewGroup)findViewById( R.id.StateBtn ).getParent());
if (findViewById( R.id.ForumBtn).getParent()!=null){
viewGroup.removeView(ForumBtn);
BtnPreference.edit().putBoolean( "ForumBtn", false ).apply();
return;}
}
});
builder.show();
}
private void showForget() {
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setCancelable(false);
@ -888,16 +782,16 @@ public class MainActivity extends AppCompatActivity implements View.OnLongClickL
builder.show();
}
private void showCalcInfo() {
private void showCryptpadInfo() {
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setCancelable(false);
builder.setTitle(R.string.CalcTitle);
builder.setMessage(ethercalc +"\n\n"+ getString(R.string.CalcInfo));
builder.setTitle(R.string.CryptpadTitle );
builder.setMessage(cryptpad +"\n\n"+ getString(R.string.CryptpadInfo ));
builder.setPositiveButton(R.string.global_ok, null);
builder.setNegativeButton(R.string.more_help, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
webView.loadUrl(Constants.URL_DisApp_CALCHELP);
webView.loadUrl(Constants.URL_DisApp_CRYPTPADHELP );
hideDashboard();
}
});
@ -905,9 +799,9 @@ public class MainActivity extends AppCompatActivity implements View.OnLongClickL
@Override
public void onClick(DialogInterface dialog, int which) {
ViewGroup viewGroup =((ViewGroup)findViewById( R.id.StateBtn ).getParent());
if (findViewById( R.id.CalcBtn).getParent()!=null){
viewGroup.removeView(CalcBtn);
BtnPreference.edit().putBoolean( "CalcBtn", false ).apply();
if (findViewById( R.id.CryptpadBtn ).getParent()!=null){
viewGroup.removeView( CryptpadBtn );
BtnPreference.edit().putBoolean( "CryptpadBtn", false ).apply();
return;}
}
});
@ -993,58 +887,6 @@ public class MainActivity extends AppCompatActivity implements View.OnLongClickL
builder.show();
}
private void showPollsInfo() {
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setCancelable(false);
builder.setTitle(R.string.PollsTitle);
builder.setMessage(polls +"\n\n"+ getString(R.string.PollsInfo));
builder.setPositiveButton(R.string.global_ok, null);
builder.setNegativeButton(R.string.more_help, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
webView.loadUrl(Constants.URL_DisApp_POLLHELP);
hideDashboard();
}
});
builder.setNeutralButton( R.string.hide, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
ViewGroup viewGroup =((ViewGroup)findViewById( R.id.StateBtn ).getParent());
if (findViewById( R.id.PollsBtn).getParent()!=null){
viewGroup.removeView(PollsBtn);
BtnPreference.edit().putBoolean( "PollsBtn", false ).apply();
return;}
}
});
builder.show();
}
private void showBoardInfo() {
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setCancelable(false);
builder.setTitle(R.string.BoardTitle);
builder.setMessage(taiga +"\n\n"+ getString(R.string.BoardInfo));
builder.setPositiveButton(R.string.global_ok, null);
builder.setNegativeButton(R.string.more_help, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
webView.loadUrl(Constants.URL_DisApp_BOARDHELP);
hideDashboard();
}
});
builder.setNeutralButton( R.string.hide, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
ViewGroup viewGroup =((ViewGroup)findViewById( R.id.StateBtn ).getParent());
if (findViewById( R.id.BoardBtn).getParent()!=null){
viewGroup.removeView(BoardBtn);
BtnPreference.edit().putBoolean( "BoardBtn", false ).apply();
return;}
}
});
builder.show();
}
private void showCallsInfo() {
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setCancelable(false);
@ -1070,11 +912,11 @@ public class MainActivity extends AppCompatActivity implements View.OnLongClickL
});
builder.show();
}
private void showBoardDialog(){
private void showCallsDialog(){
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setCancelable(false);
builder.setTitle(R.string.DiaInstallTitle);
builder.setMessage(taiga +"\n\n"+ getString(R.string.CallsDialog));
builder.setMessage( jitsi +"\n\n"+ getString(R.string.CallsDialog));
builder.setPositiveButton(R.string.global_install, new DialogInterface.OnClickListener() {
Intent calls = getPackageManager().getLaunchIntentForPackage(Constants.CallsApp);
@Override
@ -1094,7 +936,7 @@ public class MainActivity extends AppCompatActivity implements View.OnLongClickL
builder.setTitle(R.string.NotesTitle);
builder.setMessage(notes +"\n\n"+ getString(R.string.NotesInfo));
builder.setPositiveButton(R.string.global_ok, null);
builder.setNegativeButton(R.string.tell_more, new DialogInterface.OnClickListener() {
builder.setNegativeButton(R.string.more_help, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
webView.loadUrl(Constants.URL_DisApp_NOTESHELP);
@ -1519,7 +1361,7 @@ public class MainActivity extends AppCompatActivity implements View.OnLongClickL
webView = findViewById(R.id.webView_content);
webView.setWebChromeClient(disWebChromeClient);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setDomStorageEnabled(true);//solves taiga board \o/
webView.getSettings().setDomStorageEnabled(true);
webView.setVerticalScrollBarEnabled(true);
webView.getSettings().setAppCacheEnabled(true);
webView.getSettings().setBuiltInZoomControls(true);
@ -1941,23 +1783,30 @@ public class MainActivity extends AppCompatActivity implements View.OnLongClickL
JSONObject jsonObj = new JSONObject(jsonStringcomponents);
// Getting JSON Array node
JSONArray data = jsonObj.getJSONArray("data");
JSONArray data = jsonObj.getJSONArray("systems");
// 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");
// tmp hash map for single service
HashMap<String, String> serviceDetails = new HashMap<>();
//String id = c.getString("id");
String name = c.getString("name");
//String description = c.getString("description");
// tmp hash map for single service
// adding each child node to HashMap key => value
serviceDetails.put("id", id);
//serviceDetails.put("id", id);
serviceDetails.put("name", name);
serviceDetails.put("description", description);
if (c.has("description")&&!c.isNull("description")){
String description = c.getString("description");
serviceDetails.put("description", description);
}
else {
serviceDetails.put("description", "No Description");
}
//serviceDetails.put("description", description);
// adding service to service list
componentList.add(serviceDetails);
@ -1997,65 +1846,60 @@ public class MainActivity extends AppCompatActivity implements View.OnLongClickL
{
HashMap<String, String> hashmap= (HashMap<String, String>) componentList.get(a);
String hash = hashmap.get("name");
String description = "";
if (hashmap.get("description")!=null &&!hashmap.isEmpty()){//.has("description")&&!hasmap.isNull("description")
description = hashmap.get("description");
}
else {
description ="No Description";
}
switch (hash) {
case "Email Service":
email = hashmap.get("description");
case "Notes":
notes = description;
getNotes(notes);
break;
case "Mail Server":
email = description;
getEmail(email);
break;
case "Cloud":
cloud = hashmap.get("description");
cloud = description;
getCloud(cloud);
break;
case "Forum":
forum = hashmap.get("description");
getForum(forum);
break;
case "Etherpad":
etherpad = hashmap.get("description");
case "Pad":
etherpad = description;
getEtherpad(etherpad);
break;
case "Ethercalc":
ethercalc = hashmap.get("description");
getEthercalc(ethercalc);
break;
case "Bin":
bin = hashmap.get("description");
bin = description;
getBin(bin);
break;
case "Upload":
upload = hashmap.get("description");
upload = description;
getUpload(upload);
break;
case "Searx":
searx = hashmap.get("description");
searx = description;
getSearx(searx);
break;
case "Polls":
polls = hashmap.get("description");
getPolls(polls);
break;
case "Taiga":
taiga = hashmap.get("description");
getTaiga(taiga);
case "Calls":
jitsi = description;
getCalls( jitsi );
break;
case "User Password management":
user = hashmap.get("description");
user = description;
getUser(user);
break;
case "XMPP":
xmpp = hashmap.get("description");
case "XMPP Chat server":
xmpp = description;
getXmpp(xmpp);
break;
case "Nextcloud Notes":
notes = hashmap.get("description");
getNotes(notes);
break;
case "Git Service":
git = hashmap.get("description");
case "Git":
git = description;
getGit(git);
break;
case "Cryptpad":
cryptpad = hashmap.get("description");
cryptpad = description;
getCryptpad(cryptpad);
break;
}
@ -2069,15 +1913,9 @@ public class MainActivity extends AppCompatActivity implements View.OnLongClickL
private void getCloud(String string){
cloud = string;
}
private void getForum(String string){
forum = string;
}
private void getEtherpad(String string){
etherpad = string;
}
private void getEthercalc(String string){
ethercalc = string;
}
private void getBin(String string){
bin = string;
}
@ -2087,11 +1925,8 @@ public class MainActivity extends AppCompatActivity implements View.OnLongClickL
private void getSearx(String string){
searx = string;
}
private void getPolls(String string){
polls = string;
}
private void getTaiga(String string){
taiga = string;
private void getCalls(String string){
jitsi = string;
}
private void getUser(String string){
user = string;

View File

@ -10,7 +10,6 @@ import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import org.disroot.disrootapp.R;
@ -44,25 +43,17 @@ public class SettingsActivity extends AppCompatActivity {
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();
}
} );
toolbar.setNavigationOnClickListener( v -> onBackPressed() );
////buttons visiblility preference list
////buttons visibility preference list
BtnPreference = getSharedPreferences( "MailBtn", Context.MODE_PRIVATE );//mail
BtnPreference = getSharedPreferences( "CloudBtn", Context.MODE_PRIVATE );//cloud
BtnPreference = getSharedPreferences( "ForumBtn", Context.MODE_PRIVATE );//forum
BtnPreference = getSharedPreferences( "ChatBtn", Context.MODE_PRIVATE );//chat
BtnPreference = getSharedPreferences( "PadBtn", Context.MODE_PRIVATE );//pad
BtnPreference = getSharedPreferences( "CalcBtn", Context.MODE_PRIVATE );//calc
BtnPreference = getSharedPreferences( "CryptpadBtn", Context.MODE_PRIVATE );//Cryptpad
BtnPreference = getSharedPreferences( "BinBtn", Context.MODE_PRIVATE );//bin
BtnPreference = getSharedPreferences( "UploadBtn", Context.MODE_PRIVATE );//upload
BtnPreference = getSharedPreferences( "SearxBtn", Context.MODE_PRIVATE );//search
BtnPreference = getSharedPreferences( "PollsBtn", Context.MODE_PRIVATE );//polls
BtnPreference = getSharedPreferences( "BoardBtn", Context.MODE_PRIVATE );//Board
BtnPreference = getSharedPreferences( "SearxBtn", Context.MODE_PRIVATE );//searx
BtnPreference = getSharedPreferences( "CallsBtn", Context.MODE_PRIVATE );//calls
BtnPreference = getSharedPreferences( "NotesBtn", Context.MODE_PRIVATE );//notes
BtnPreference = getSharedPreferences( "GitBtn", Context.MODE_PRIVATE );//git
@ -70,7 +61,7 @@ public class SettingsActivity extends AppCompatActivity {
BtnPreference = getSharedPreferences( "HowToBtn", Context.MODE_PRIVATE );//howTo
BtnPreference = getSharedPreferences( "AboutBtn", Context.MODE_PRIVATE );//about
//checkboxlist
//checkbox list
checkPrefBox();
}
@ -80,15 +71,12 @@ public class SettingsActivity extends AppCompatActivity {
View iconSettings =findViewById( R.id.iconSettings );
final CheckBox checkMailBtn = iconSettings.findViewById( R.id.mailBtnPreference );//mail
final CheckBox checkCloudBtn = iconSettings.findViewById( R.id.cloudBtnPreference );//cloud
final CheckBox checkForumBtn = iconSettings.findViewById( R.id.foumBtnPreference );//forum
final CheckBox checkChatBtn = iconSettings.findViewById( R.id.chatBtnPreference );//chat
final CheckBox checkPadBtn = iconSettings.findViewById( R.id.padBtnPreference );//pad
final CheckBox checkCalcBtn = iconSettings.findViewById( R.id.calcBtnPreference );//calc
final CheckBox checkCryptpadBtn = iconSettings.findViewById( R.id.cryptpadBtnPreference );//cryptpad
final CheckBox checkBinBtn = iconSettings.findViewById( R.id.binBtnPreference );//bin
final CheckBox checkUploadBtn = iconSettings.findViewById( R.id.uploadBtnPreference );//upload
final CheckBox checkSearxBtn = iconSettings.findViewById( R.id.searxBtnPreference );//search
final CheckBox checkPollsBtn = iconSettings.findViewById( R.id.pollsBtnPreference );//polls
final CheckBox checkBoardBtn = iconSettings.findViewById( R.id.boardBtnPreference );//board
final CheckBox checkCallsBtn = iconSettings.findViewById( R.id.callsBtnPreference );//calls
final CheckBox checkNotesBtn = iconSettings.findViewById( R.id.notesBtnPreference );//notes
final CheckBox checkGitBtn = iconSettings.findViewById( R.id.gitBtnPreference );//git
@ -99,15 +87,12 @@ public class SettingsActivity extends AppCompatActivity {
//Set checked if visibility is true
if (BtnPreference.getBoolean( "MailBtn", true )) checkMailBtn.setChecked( true );//mail
if (BtnPreference.getBoolean( "CloudBtn", true )) checkCloudBtn.setChecked( true );//cloud
if (BtnPreference.getBoolean( "ForumBtn", true )) checkForumBtn.setChecked( true );//forum
if (BtnPreference.getBoolean( "ChatBtn", true )) checkChatBtn.setChecked( true );//chat
if (BtnPreference.getBoolean( "PadBtn", true )) checkPadBtn.setChecked( true );//pad
if (BtnPreference.getBoolean( "CalcBtn", true )) checkCalcBtn.setChecked( true );//calc
if (BtnPreference.getBoolean( "CryptpadBtn", true )) checkCryptpadBtn.setChecked( true );//cryptpad
if (BtnPreference.getBoolean( "BinBtn", true )) checkBinBtn.setChecked( true );//bin
if (BtnPreference.getBoolean( "UploadBtn", true )) checkUploadBtn.setChecked( true );//upload
if (BtnPreference.getBoolean( "SearxBtn", true )) checkSearxBtn.setChecked( true );//search
if (BtnPreference.getBoolean( "PollsBtn", true )) checkPollsBtn.setChecked( true );//polls
if (BtnPreference.getBoolean( "BoardBtn", true )) checkBoardBtn.setChecked( true );//board
if (BtnPreference.getBoolean( "CallsBtn", true )) checkCallsBtn.setChecked( true );//calls
if (BtnPreference.getBoolean( "NotesBtn", true )) checkNotesBtn.setChecked( true );//notes
if (BtnPreference.getBoolean( "GitBtn", true )) checkGitBtn.setChecked( true );//git
@ -116,211 +101,133 @@ public class SettingsActivity extends AppCompatActivity {
if (BtnPreference.getBoolean( "AboutBtn", true )) checkAboutBtn.setChecked( true );//about
//Mail
checkMailBtn.setOnCheckedChangeListener( new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton view, boolean isChecked) {
if (checkMailBtn.isChecked()) {
BtnPreference.edit().putBoolean( "MailBtn", true ).apply();
} else {
BtnPreference.edit().putBoolean( "MailBtn", false ).apply();
}
checkMailBtn.setOnCheckedChangeListener( (view, isChecked) -> {
if (checkMailBtn.isChecked()) {
BtnPreference.edit().putBoolean( "MailBtn", true ).apply();
} else {
BtnPreference.edit().putBoolean( "MailBtn", false ).apply();
}
} );
//Cloud
checkCloudBtn.setOnCheckedChangeListener( new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton view, boolean isChecked) {
if (checkCloudBtn.isChecked()) {
BtnPreference.edit().putBoolean( "CloudBtn", true ).apply();
} else {
BtnPreference.edit().putBoolean( "CloudBtn", false ).apply();
}
}
} );
//forum
checkForumBtn.setOnCheckedChangeListener( new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton view, boolean isChecked) {
if (checkForumBtn.isChecked()) {
BtnPreference.edit().putBoolean( "ForumBtn", true ).apply();
} else {
BtnPreference.edit().putBoolean( "ForumBtn", false ).apply();
}
checkCloudBtn.setOnCheckedChangeListener( (view, isChecked) -> {
if (checkCloudBtn.isChecked()) {
BtnPreference.edit().putBoolean( "CloudBtn", true ).apply();
} else {
BtnPreference.edit().putBoolean( "CloudBtn", false ).apply();
}
} );
//chat
checkChatBtn.setOnCheckedChangeListener( new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton view, boolean isChecked) {
if (checkChatBtn.isChecked()) {
BtnPreference.edit().putBoolean( "ChatBtn", true ).apply();
} else {
BtnPreference.edit().putBoolean( "ChatBtn", false ).apply();
}
checkChatBtn.setOnCheckedChangeListener( (view, isChecked) -> {
if (checkChatBtn.isChecked()) {
BtnPreference.edit().putBoolean( "ChatBtn", true ).apply();
} else {
BtnPreference.edit().putBoolean( "ChatBtn", false ).apply();
}
} );
//pad
checkPadBtn.setOnCheckedChangeListener( new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton view, boolean isChecked) {
if (checkPadBtn.isChecked()) {
BtnPreference.edit().putBoolean( "PadBtn", true ).apply();
} else {
BtnPreference.edit().putBoolean( "PadBtn", false ).apply();
}
checkPadBtn.setOnCheckedChangeListener( (view, isChecked) -> {
if (checkPadBtn.isChecked()) {
BtnPreference.edit().putBoolean( "PadBtn", true ).apply();
} else {
BtnPreference.edit().putBoolean( "PadBtn", false ).apply();
}
} );
//calc
checkCalcBtn.setOnCheckedChangeListener( new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton view, boolean isChecked) {
if (checkCalcBtn.isChecked()) {
BtnPreference.edit().putBoolean( "CalcBtn", true ).apply();
} else {
BtnPreference.edit().putBoolean( "CalcBtn", false ).apply();
}
//cryptpad
checkCryptpadBtn.setOnCheckedChangeListener( (view, isChecked) -> {
if (checkCryptpadBtn.isChecked()) {
BtnPreference.edit().putBoolean( "CryptpadBtn", true ).apply();
} else {
BtnPreference.edit().putBoolean( "CryptpadBtn", false ).apply();
}
} );
//bin
checkBinBtn.setOnCheckedChangeListener( new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton view, boolean isChecked) {
if (checkBinBtn.isChecked()) {
BtnPreference.edit().putBoolean( "BinBtn", true ).apply();
} else {
BtnPreference.edit().putBoolean( "BinBtn", false ).apply();
}
checkBinBtn.setOnCheckedChangeListener( (view, isChecked) -> {
if (checkBinBtn.isChecked()) {
BtnPreference.edit().putBoolean( "BinBtn", true ).apply();
} else {
BtnPreference.edit().putBoolean( "BinBtn", false ).apply();
}
} );
//upload
checkUploadBtn.setOnCheckedChangeListener( new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton view, boolean isChecked) {
if (checkUploadBtn.isChecked()) {
BtnPreference.edit().putBoolean( "UploadBtn", true ).apply();
} else {
BtnPreference.edit().putBoolean( "UploadBtn", false ).apply();
}
checkUploadBtn.setOnCheckedChangeListener( (view, isChecked) -> {
if (checkUploadBtn.isChecked()) {
BtnPreference.edit().putBoolean( "UploadBtn", true ).apply();
} else {
BtnPreference.edit().putBoolean( "UploadBtn", false ).apply();
}
} );
//search
checkSearxBtn.setOnCheckedChangeListener( new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton view, boolean isChecked) {
if (checkSearxBtn.isChecked()) {
BtnPreference.edit().putBoolean( "SearxBtn", true ).apply();
} else {
BtnPreference.edit().putBoolean( "SearxBtn", false ).apply();
}
checkSearxBtn.setOnCheckedChangeListener( (view, isChecked) -> {
if (checkSearxBtn.isChecked()) {
BtnPreference.edit().putBoolean( "SearxBtn", true ).apply();
} else {
BtnPreference.edit().putBoolean( "SearxBtn", false ).apply();
}
} );
//polls
checkPollsBtn.setOnCheckedChangeListener( new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton view, boolean isChecked) {
if (checkPollsBtn.isChecked()) {
BtnPreference.edit().putBoolean( "PollsBtn", true ).apply();
} else {
BtnPreference.edit().putBoolean( "PollsBtn", false ).apply();
}
}
} );
//board
checkBoardBtn.setOnCheckedChangeListener( new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton view, boolean isChecked) {
if (checkBoardBtn.isChecked()) {
BtnPreference.edit().putBoolean( "BoardBtn", true ).apply();
} else {
BtnPreference.edit().putBoolean( "BoardBtn", false ).apply();
}
}
} );
//board
checkCallsBtn.setOnCheckedChangeListener( new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton view, boolean isChecked) {
if (checkCallsBtn.isChecked()) {
BtnPreference.edit().putBoolean( "CallsBtn", true ).apply();
} else {
BtnPreference.edit().putBoolean( "CallsBtn", false ).apply();
}
//Calls
checkCallsBtn.setOnCheckedChangeListener( (view, isChecked) -> {
if (checkCallsBtn.isChecked()) {
BtnPreference.edit().putBoolean( "CallsBtn", true ).apply();
} else {
BtnPreference.edit().putBoolean( "CallsBtn", false ).apply();
}
} );
//notes
checkNotesBtn.setOnCheckedChangeListener( new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton view, boolean isChecked) {
if (checkNotesBtn.isChecked()) {
BtnPreference.edit().putBoolean( "NotesBtn", true ).apply();
} else {
BtnPreference.edit().putBoolean( "NotesBtn", false ).apply();
}
checkNotesBtn.setOnCheckedChangeListener( (view, isChecked) -> {
if (checkNotesBtn.isChecked()) {
BtnPreference.edit().putBoolean( "NotesBtn", true ).apply();
} else {
BtnPreference.edit().putBoolean( "NotesBtn", false ).apply();
}
} );
//git
checkGitBtn.setOnCheckedChangeListener( new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton view, boolean isChecked) {
if (checkGitBtn.isChecked()) {
BtnPreference.edit().putBoolean( "GitBtn", true ).apply();
} else {
BtnPreference.edit().putBoolean( "GitBtn", false ).apply();
}
checkGitBtn.setOnCheckedChangeListener( (view, isChecked) -> {
if (checkGitBtn.isChecked()) {
BtnPreference.edit().putBoolean( "GitBtn", true ).apply();
} else {
BtnPreference.edit().putBoolean( "GitBtn", false ).apply();
}
} );
//user
checkUserBtn.setOnCheckedChangeListener( new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton view, boolean isChecked) {
if (checkUserBtn.isChecked()) {
BtnPreference.edit().putBoolean( "UserBtn", true ).apply();
} else {
BtnPreference.edit().putBoolean( "UserBtn", false ).apply();
}
checkUserBtn.setOnCheckedChangeListener( (view, isChecked) -> {
if (checkUserBtn.isChecked()) {
BtnPreference.edit().putBoolean( "UserBtn", true ).apply();
} else {
BtnPreference.edit().putBoolean( "UserBtn", false ).apply();
}
} );
//howTo
checkHowToBtn.setOnCheckedChangeListener( new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton view, boolean isChecked) {
if (checkHowToBtn.isChecked()) {
BtnPreference.edit().putBoolean( "HowToBtn", true ).apply();
} else {
BtnPreference.edit().putBoolean( "HowToBtn", false ).apply();
}
checkHowToBtn.setOnCheckedChangeListener( (view, isChecked) -> {
if (checkHowToBtn.isChecked()) {
BtnPreference.edit().putBoolean( "HowToBtn", true ).apply();
} else {
BtnPreference.edit().putBoolean( "HowToBtn", false ).apply();
}
} );
//about
checkAboutBtn.setOnCheckedChangeListener( new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton view, boolean isChecked) {
if (checkAboutBtn.isChecked()) {
BtnPreference.edit().putBoolean( "AboutBtn", true ).apply();
} else {
BtnPreference.edit().putBoolean( "AboutBtn", false ).apply();
}
checkAboutBtn.setOnCheckedChangeListener( (view, isChecked) -> {
if (checkAboutBtn.isChecked()) {
BtnPreference.edit().putBoolean( "AboutBtn", true ).apply();
} else {
BtnPreference.edit().putBoolean( "AboutBtn", false ).apply();
}
} );
}
@Override //make sure changes are applyed when going back
@Override //make sure changes are applied when going back
public void onBackPressed() {
Intent goHome = new Intent( SettingsActivity.this, MainActivity.class );
SettingsActivity.this.startActivity( goHome );

View File

@ -33,14 +33,13 @@ public class StateActivity extends AppCompatActivity {
Button button;
private String TAG = StateActivity.class.getSimpleName();
private final 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";
static String url = "https://status.disroot.org/index.json";
ArrayList<HashMap<String, String>> stateList;
@ -52,22 +51,13 @@ public class StateActivity extends AppCompatActivity {
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();
}
});
toolbar.setNavigationOnClickListener( 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);
}
});
button.setOnClickListener( arg0 -> {
Intent goState = new Intent(StateActivity.this, StateMessagesActivity.class);
StateActivity.this.startActivity(goState);
} );
stateList = new ArrayList<>();
@ -124,7 +114,6 @@ public class StateActivity extends AppCompatActivity {
// 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);
@ -133,98 +122,47 @@ public class StateActivity extends AppCompatActivity {
JSONObject jsonObj = new JSONObject(jsonStr0);
// Getting JSON Array node
JSONArray data = jsonObj.getJSONArray("data");
JSONArray data = jsonObj.getJSONArray("systems");
// looping through All data
for (int i = 0; i < data.length(); i++) {
JSONObject c = data.getJSONObject(i);
HashMap<String, String> service = new HashMap<>();
if (c.has("description")&&!c.isNull("description")){
String description = c.getString("description");
service.put("description", description);
}
else {
service.put("description", "No Description");
}
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");
String category = c.getString("category");
String status = c.getString("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("description", description);
service.put("updated_at", lastUpdated);
service.put("status_name", status_name);
service.put("category", category);
service.put("status", status);
// 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();
}
});
runOnUiThread( () -> 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 {
}
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. Is your internet connection ok?",
Toast.LENGTH_LONG)
.show();
}
});
runOnUiThread( () -> Toast.makeText(getApplicationContext(),
"Couldn't get json from server. Is your internet connection ok?",
Toast.LENGTH_LONG)
.show() );
}
return null;
}
@ -238,68 +176,32 @@ public class StateActivity extends AppCompatActivity {
//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})
StateActivity.this, stateList, R.layout.list_services,
new String[]{"name", "description", "category","status"},
new int[]{R.id.name,R.id.description,R.id.category, R.id.status})
//Change Color based on 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)));
}
//Status
TextView status = v.findViewById(R.id.status_name);
TextView status = v.findViewById(R.id.status);
String statusValue = status.getText().toString();
switch (statusValue) {
case "Operational":
case "ok":
status.setTextColor(Color.GREEN);
status.setText(R.string.Operational);
break;
case "Major Outage":
case "down":
status.setTextColor(Color.RED);
status.setText(R.string.MajorOutage);
status.setText(R.string.down);
break;
case "Performance Issues":
status.setText(R.string.PerformanceIssues);
status.setTextColor(Color.YELLOW);
default:
status.setTextColor(Color.RED);
break;
}
return v;
}

View File

@ -4,6 +4,7 @@ import android.annotation.SuppressLint;
import android.app.ProgressDialog;
import android.content.Intent;
import android.graphics.Color;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
@ -32,12 +33,12 @@ import java.util.HashMap;
public class StateMessagesActivity extends AppCompatActivity {
Button button;
private String TAG = StateMessagesActivity.class.getSimpleName();
private final 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";
static String incidentUrl0 ="https://status.disroot.org/issues/index.json";
ArrayList<HashMap<String, String>> messageList;
ArrayList<HashMap<String, String>> getDate;
@ -50,22 +51,13 @@ public class StateMessagesActivity extends AppCompatActivity {
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();
}
});
toolbar.setNavigationOnClickListener( 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);
}
});
button.setOnClickListener( arg0 -> {
Intent goState = new Intent(StateMessagesActivity.this, StateActivity.class);
StateMessagesActivity.this.startActivity(goState);
} );
messageList = new ArrayList<>();
getDate = new ArrayList<>();
@ -116,67 +108,54 @@ public class StateMessagesActivity extends AppCompatActivity {
HttpHandler sh = new HttpHandler();
// Making a request to url and getting response
String jsonStrincidents0 = sh.makeServiceCall(incidenturl0);
String jsonStringIdents0 = sh.makeServiceCall( incidentUrl0 );
Log.e(TAG, "Response from url: " + incidenturl0);
Log.e(TAG, "Response from url: " + incidentUrl0 );
if (jsonStrincidents0 != null) {//Incidaetnts page
if (jsonStringIdents0 != null) {//Incidents page
try {
JSONObject jsonObj = new JSONObject(jsonStrincidents0);
JSONObject jsonObj = new JSONObject( jsonStringIdents0 );
// Getting JSON Array node
JSONArray data = jsonObj.getJSONArray("data");
JSONArray data = jsonObj.getJSONArray("pages");
// 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");
String title = c.getString("title");
String link = c.getString("permalink");
boolean resolved = c.getBoolean( "resolved" );
boolean informational = c.getBoolean( "informational" );
String lastMod = c.getString("lastMod");
String lastUpdated = "Last Updated: " + lastMod + '"';
// 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);
service.put("title", title);
service.put("moreInfo", link);
if (informational == true) service.put("resolved", "informational" );
else service.put("resolved", Boolean.toString( resolved ) );
service.put("lastMod", lastUpdated);
// 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();
}
});
runOnUiThread( () -> 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. Is your internet connection ok?",
Toast.LENGTH_LONG)
.show();
}
});
runOnUiThread( () -> Toast.makeText(getApplicationContext(),
"Couldn't get json from server. Is your internet connection ok?",
Toast.LENGTH_LONG)
.show() );
}
return null;
}
@ -191,83 +170,54 @@ public class StateMessagesActivity extends AppCompatActivity {
//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
R.layout.list_service_messages, new String[]{"title","moreInfo", "lastMod", "resolved", "status"}, new int[]{R.id.name, R.id.description,
R.id.category, R.id.resolved, R.id.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 links work
TextView link = v.findViewById( R.id.description );
String linkValue = link.getText().toString();
link.setText( R.string.more_info);
v.setOnClickListener( arg0 -> {
Uri uri = Uri.parse( linkValue);
Intent statusLink = new Intent(Intent.ACTION_VIEW, Uri.parse(String.valueOf(uri)));
startActivity(statusLink);
} );
//Make Last updated translatable
TextView updated = v.findViewById(R.id.updated_at);
TextView updated = v.findViewById(R.id.category );
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)));
}
TextView resolved = v.findViewById(R.id.resolved );
String resolvedValue = resolved.getText().toString();
//Human_status
TextView humanStatus = v.findViewById(R.id.human_status);
String humanStatusValue = humanStatus.getText().toString();
switch (humanStatusValue) {
case "Fixed":
humanStatus.setTextColor(Color.GREEN);
humanStatus.setText(R.string.Fixed);
scheduled.setVisibility(View.GONE );
TextView status = v.findViewById(R.id.status );
Log.e("status", "status: "+resolvedValue);
switch (resolvedValue) {
case "true":
status.setTextColor(Color.GREEN);
status.setText(R.string.Fixed);
resolved.setVisibility(View.GONE );
break;
case "Scheduled":
humanStatus.setTextColor(Color.YELLOW);
humanStatus.setText(R.string.Scheduled);
scheduled.setVisibility(View.VISIBLE );
case "informational":
status.setTextColor(Color.YELLOW);
status.setText(R.string.info);
resolved.setVisibility(View.GONE );
break;
case "Investigating":
humanStatus.setTextColor(Color.RED);
scheduled.setVisibility(View.GONE );
break;
case "Watching":
scheduled.setVisibility(View.GONE );
humanStatus.setTextColor(Color.YELLOW);
humanStatus.setText(R.string.Investigating);
break;
case "Identified":
scheduled.setVisibility(View.GONE );
humanStatus.setTextColor(Color.RED);
humanStatus.setText(R.string.Identified);
case "false":
status.setTextColor(Color.RED);
status.setText(R.string.down);
resolved.setVisibility(View.GONE );
break;
}
return v;

View File

@ -4,7 +4,6 @@ import android.content.Intent;
import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageButton;
import org.disroot.disrootapp.R;
@ -19,22 +18,16 @@ public class WelcomeActivity extends AppCompatActivity {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_welcome);
imageButton = findViewById(R.id.homeBtn);//Home
imageButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
Intent goHome = new Intent(WelcomeActivity.this, MainActivity.class);
WelcomeActivity.this.startActivity(goHome);
}
});
imageButton.setOnClickListener( arg0 -> {
Intent goHome = new Intent(WelcomeActivity.this, MainActivity.class);
WelcomeActivity.this.startActivity(goHome);
} );
imageButton = findViewById(R.id.fDroidBtn);//Home
imageButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
Uri uri = Uri.parse(String.valueOf(Constants.URL_FDROID));
Intent fDroid = new Intent(Intent.ACTION_VIEW, Uri.parse(String.valueOf(uri)));
startActivity(fDroid);
}
});
imageButton.setOnClickListener( arg0 -> {
Uri uri = Uri.parse( Constants.URL_FDROID );
Intent fDroid = new Intent(Intent.ACTION_VIEW, Uri.parse(String.valueOf(uri)));
startActivity(fDroid);
} );
}
}

View File

@ -10,15 +10,10 @@ 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_CRYPTPAD = "https://cryptpad.disroot.org/";
public static final String URL_DisApp_BIN = "https://bin.disroot.org";
public static final String URL_DisApp_UPLOAD = "https://upload.disroot.org";
public static final String URL_DisApp_SEARX = "https://search.disroot.org";
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_HOWTO = "https://howto.disroot.org";
public static final String URL_DisApp_K9HELP = "https://howto.disroot.org/en/tutorials/email/clients/mobile/k9";
@ -41,15 +36,11 @@ public class Constants {
public static final String URL_XMPP = "xmpp:disroot@chat.disroot.org?join";
public static final String URL_SUPPORT = "mailto:support@disroot.org";
public static final String URL_DisApp_CLOUDHELP = "https://howto.disroot.org/en/tutorials/cloud/clients/mobile/android";
public static final String URL_DisApp_DIAHELP = "https://disroot.org/services/diaspora";
public static final String URL_DisApp_FORUMHELP = "https://howto.disroot.org/en/tutorials/forum";
public static final String URL_DisApp_PADHELP = "https://howto.disroot.org/en/tutorials/office/pads/padland";
public static final String URL_DisApp_CALCHELP = "https://howto.disroot.org/en/tutorials/office/pads/ethercalc";
public static final String URL_DisApp_CRYPTPADHELP = "https://howto.disroot.org/en/tutorials/office/cryptpad";
public static final String URL_DisApp_BINHELP = "https://howto.disroot.org/en/tutorials/office/bin";
public static final String URL_DisApp_UPLOADHELP = "https://howto.disroot.org/en/tutorials/office/lufi";
public static final String URL_DisApp_POLLHELP = "https://howto.disroot.org/en/tutorials/office/polls";
public static final String URL_DisApp_BOARDHELP = "https://howto.disroot.org/en/tutorials/project_board";
public static final String URL_DisApp_NOTESHELP = "https://howto.disroot.org/en/tutorials/cloud/clients/mobile/android/using-notes";
public static final String URL_DisApp_NOTESHELP = "https://howto.disroot.org/en/tutorials/cloud/apps/notes";
public static final String URL_DisApp_CALLSHELP = "https://disroot.org/en/services/calls";
public static final String URL_DisApp_GITHELP = "https://howto.disroot.org/en/contribute/git";
public static final String URL_DisApp_DISAPP = "https://f-droid.org/en/packages/org.disroot.disrootapp/";
@ -64,12 +55,12 @@ public class Constants {
public static final String CallsApp = "org.jitsi.meet";
public static final String GitApp = "org.mian.gitnex";
public static final int[] buttonIDs = new int[] {R.id.MailBtn, R.id.CloudBtn, R.id.ForumBtn,R.id.ChatBtn,R.id.PadBtn,R.id.CalcBtn,R.id.BinBtn,R.id.UploadBtn,R.id.SearxBtn,R.id.PollsBtn,R.id.BoardBtn,R.id.CallsBtn,R.id.NotesBtn,R.id.GitBtn,R.id.UserBtn,R.id.StateBtn,R.id.HowToBtn,R.id.AboutBtn};
public static final int[] buttonIDs = new int[] {R.id.MailBtn,R.id.CloudBtn,R.id.ChatBtn,R.id.PadBtn,R.id.CryptpadBtn,R.id.BinBtn,R.id.UploadBtn,R.id.SearxBtn,R.id.CallsBtn,R.id.NotesBtn,R.id.GitBtn,R.id.UserBtn,R.id.StateBtn,R.id.HowToBtn,R.id.AboutBtn};
public static final int REQUEST_ID_MULTIPLE_PERMISSIONS = 1;//file upload
public static final int INPUT_FILE_REQUEST_CODE = 1;//file upload
public static final int FILECHOOSER_RESULTCODE = 1;//file upload
public static final String TAG = MainActivity.class.getSimpleName();
public static final String components = "https://state.disroot.org/api/v1/components?per_page=40";
public static final String components = "https://status.disroot.org/index.json";
}

View File

@ -1,10 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="48dp"
android:height="48dp"
android:viewportWidth="12.7"
android:viewportHeight="12.7">
<path
android:pathData="m9.528,6.0876v-3.1248L3.1705,2.9628v3.1517,3.1517L6.3493,9.2663 9.528,9.2663ZM3.8633,8.0845v-0.5705h0.6113,0.6113v0.5705,0.5705L4.4746,8.655 3.8633,8.655ZM5.738,8.0845v-0.5705h1.5894,1.5894v0.5705,0.5705L7.3273,8.655 5.738,8.655ZM3.8633,6.1691v-0.5705h0.6113,0.6113v0.5705,0.5705L4.4746,6.7396 3.8633,6.7396ZM5.738,6.1691v-0.5705h1.5894,1.5894v0.5705,0.5705L7.3273,6.7396 5.738,6.7396ZM3.8633,4.2537v-0.5706h0.6113,0.6113v0.5706,0.5705L4.4746,4.8242 3.8633,4.8242ZM5.738,4.2537v-0.5706h1.5894,1.5894v0.5706,0.5705L7.3273,4.8242 5.738,4.8242Z"
android:strokeWidth="0.04075298"
android:fillColor="#ffffff"/>
</vector>

View File

@ -0,0 +1,26 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="48dp"
android:height="48dp"
android:viewportWidth="12.7"
android:viewportHeight="12.7">
<path
android:pathData="m6.35,2.072 l-2.94,0.543c-0.104,-0.074 -0.232,-0.116 -0.369,-0.116a0.63,0.63 0,0 0,-0.63 0.63,0.635 0.635,0 0,0 0.326,0.554v4.24c0,0.399 0.179,0.83 0.532,1.282 0.313,0.399 0.756,0.809 1.318,1.216 0.701,0.507 1.416,0.882 1.763,1.053 0.347,-0.172 1.062,-0.547 1.763,-1.053 0.562,-0.407 1.005,-0.817 1.318,-1.216 0.354,-0.452 0.532,-0.882 0.532,-1.282v-4.243c0.192,-0.108 0.326,-0.314 0.326,-0.55 0,-0.348 -0.285,-0.63 -0.634,-0.63a0.624,0.624 0,0 0,-0.362 0.116zM6.343,2.699 L9.029,3.195c0.004,0.039 0.007,0.075 0.018,0.112l-1.575,1.025c-0.282,-0.306 -0.687,-0.5 -1.133,-0.5 -0.45,0 -0.857,0.197 -1.14,0.507l-1.557,-1.01c0.014,-0.044 0.021,-0.09 0.025,-0.138zM9.239,3.6c0.053,0.046 0.115,0.086 0.181,0.112v4.124c0,0.054 -0.005,0.112 -0.014,0.17 -0.063,0.252 -0.202,0.516 -0.416,0.789 -0.268,0.342 -0.649,0.69 -1.13,1.039C7.26,10.268 6.647,10.592 6.35,10.74 6.053,10.592 5.44,10.268 4.84,9.834 4.36,9.486 3.983,9.137 3.714,8.795 3.459,8.469 3.309,8.157 3.269,7.861v-4.142c0.064,-0.025 0.122,-0.062 0.174,-0.105l1.995,1.285a1.02,1.02 0,0 1,0.901 -0.539c0.394,0 0.733,0.217 0.902,0.543l1.998,-1.303z"
android:strokeWidth="0.0783961"
android:fillColor="#ffffff"/>
<path
android:pathData="m6.008,7.63c-0.257,0 -0.467,0.21 -0.467,0.467 0,0.257 0.21,0.463 0.467,0.463a0.462,0.462 0,0 0,0.463 -0.463c0,-0.257 -0.206,-0.467 -0.463,-0.467z"
android:fillColor="#ffffff"/>
<path
android:pathData="m6.139,4.986c-0.042,0.139 -0.067,0.285 -0.067,0.437 0,0.439 0.19,0.829 0.487,1.111l-0.74,1.49c-0.079,0.16 0.058,0.379 0.236,0.379L7.159,8.403l0,-0.525l-0.682,0l0.641,-1.288c0.056,-0.112 0.017,-0.261 -0.085,-0.332 -0.264,-0.184 -0.437,-0.485 -0.437,-0.834 0,-0.045 0.006,-0.088 0.012,-0.131z"
android:fillColor="#ffffff"/>
<path
android:pathData="m6.709,7.628c-0.257,0 -0.467,0.21 -0.467,0.467 0,0.257 0.21,0.463 0.467,0.463a0.462,0.462 0,0 0,0.463 -0.463c0,-0.257 -0.206,-0.467 -0.463,-0.467z"
android:fillColor="#ffffff"/>
<path
android:pathData="m6.551,4.988 l-0.472,0.309c0.005,0.042 0.009,0.082 0.009,0.125 0,0.347 -0.168,0.646 -0.431,0.831 -0.102,0.071 -0.14,0.221 -0.085,0.332l0.635,1.291L5.528,7.877L5.528,8.402L6.633,8.402c0.178,0 0.315,-0.219 0.236,-0.379l-0.741,-1.493c0.295,-0.281 0.484,-0.669 0.484,-1.108 0,-0.151 -0.021,-0.296 -0.061,-0.434z"
android:fillColor="#ffffff"/>
<path
android:pathData="m6.774,3.897a0.424,0.424 0,1 1,-0.848 0,0.424 0.424,0 0,1 0.848,0zM6.981,9.442a0.631,0.631 0,1 1,-1.262 0,0.631 0.631,0 0,1 1.262,0z"
android:strokeWidth="0.0783961"
android:fillColor="#ffffff"/>
</vector>

View File

@ -1,15 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="48dp"
android:height="48dp"
android:viewportWidth="48"
android:viewportHeight="48">
<path
android:pathData="M36,10.8203C35.4922,10.8203 34.9844,11.0156 34.5938,11.4063L20,26L13.4063,19.4063C12.625,18.625 11.375,18.625 10.5938,19.4063L7.4063,22.5938C6.625,23.375 6.625,24.625 7.4063,25.4063L18.5938,36.5938C19.375,37.375 20.625,37.375 21.4063,36.5938L40.5938,17.4063C41.375,16.625 41.375,15.375 40.5938,14.5938L37.4063,11.4063C37.0156,11.0156 36.5078,10.8203 36,10.8203z"
android:strokeAlpha="1"
android:strokeLineJoin="miter"
android:strokeWidth="1.72236323"
android:fillColor="#ffffff"
android:strokeColor="#00000000"
android:fillAlpha="0.99215686"
android:strokeLineCap="butt"/>
</vector>

View File

@ -95,27 +95,6 @@
android:textColor="@color/white"
app:fontFamily="@font/open_sans_regular" />
<!--end of Disroot's Dandelion
<Button
android:id="@+id/DiasporaBtn"
style="?android:attr/borderlessButtonStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawableTop="@drawable/ic_diaspora"
android:text="@string/action_diaspora"
android:textColor="#ffffff"
app:fontFamily="@font/open_sans_regular" />-->
<Button
android:id="@+id/ForumBtn"
style="?android:attr/borderlessButtonStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawableTop="@drawable/ic_forum"
android:text="@string/action_forum"
android:textColor="@color/white"
app:fontFamily="@font/open_sans_regular" />
<Button
android:id="@+id/ChatBtn"
style="?android:attr/borderlessButtonStyle"
@ -137,12 +116,12 @@
app:fontFamily="@font/open_sans_regular" />
<Button
android:id="@+id/CalcBtn"
android:id="@+id/CryptpadBtn"
style="?android:attr/borderlessButtonStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawableTop="@drawable/ic_calc"
android:text="@string/action_calc"
android:drawableTop="@drawable/ic_cryptpad"
android:text="@string/action_cryptpad"
android:textColor="@color/white"
app:fontFamily="@font/open_sans_regular" />
@ -176,27 +155,6 @@
android:textColor="@color/white"
app:fontFamily="@font/open_sans_regular" />
<Button
android:id="@+id/PollsBtn"
style="?android:attr/borderlessButtonStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawableTop="@drawable/ic_poll"
android:text="@string/action_poll"
android:textColor="@color/white"
app:fontFamily="@font/open_sans_regular" />
<Button
android:id="@+id/BoardBtn"
style="?android:attr/borderlessButtonStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:maxWidth="@dimen/extra_margin"
android:drawableTop="@drawable/ic_board"
android:text="@string/action_board"
android:textColor="@color/white"
app:fontFamily="@font/open_sans_regular" />
<Button
android:id="@+id/CallsBtn"
style="?android:attr/borderlessButtonStyle"

View File

@ -77,27 +77,6 @@
android:layout_gravity="end|center_vertical"/>
</FrameLayout>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="@style/DisTheme.Settings">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="?android:attr/borderlessButtonStyle"
android:text="@string/action_forum"
android:textColor="@color/gray"
android:drawableTint="@color/gray"
android:drawableStart="@drawable/ic_forum"
android:drawableLeft="@drawable/ic_forum"/>
<CheckBox
android:id="@+id/foumBtnPreference"
android:button="@drawable/checkbox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end|center_vertical"/>
</FrameLayout>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
@ -146,13 +125,13 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="?android:attr/borderlessButtonStyle"
android:text="@string/action_calc"
android:text="@string/action_cryptpad"
android:textColor="@color/gray"
android:drawableTint="@color/gray"
android:drawableStart="@drawable/ic_calc"
android:drawableLeft="@drawable/ic_calc"/>
android:drawableStart="@drawable/ic_cryptpad"
android:drawableLeft="@drawable/ic_cryptpad"/>
<CheckBox
android:id="@+id/calcBtnPreference"
android:id="@+id/cryptpadBtnPreference"
android:button="@drawable/checkbox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
@ -218,46 +197,6 @@
android:layout_height="wrap_content"
android:layout_gravity="end|center_vertical"/>
</FrameLayout>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="@style/DisTheme.Settings">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="?android:attr/borderlessButtonStyle"
android:text="@string/action_poll"
android:textColor="@color/gray"
android:drawableTint="@color/gray"
android:drawableStart="@drawable/ic_poll"
android:drawableLeft="@drawable/ic_poll"/>
<CheckBox
android:id="@+id/pollsBtnPreference"
android:button="@drawable/checkbox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end|center_vertical"/>
</FrameLayout>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="@style/DisTheme.Settings">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="?android:attr/borderlessButtonStyle"
android:text="@string/action_board"
android:textColor="@color/gray"
android:drawableTint="@color/gray"
android:drawableStart="@drawable/ic_board"
android:drawableLeft="@drawable/ic_board"/>
<CheckBox
android:id="@+id/boardBtnPreference"
android:button="@drawable/checkbox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end|center_vertical"/>
</FrameLayout>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"

View File

@ -6,7 +6,7 @@
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
tools:context="org.disroot.disrootapp.ui.AboutActivity$AboutFragment">
tools:context="org.disroot.disrootapp.ui.AboutActivity">
<LinearLayout
android:layout_width="match_parent"

View File

@ -6,7 +6,7 @@
android:layout_marginBottom="@dimen/activity_vertical_margin"
android:layout_marginLeft="@dimen/activity_horizontal_margin"
android:layout_marginRight="@dimen/activity_horizontal_margin"
tools:context="org.disroot.disrootapp.ui.AboutActivity$HelpFragment">
tools:context="org.disroot.disrootapp.ui.AboutActivity">
<LinearLayout
android:layout_width="match_parent"

View File

@ -8,7 +8,7 @@
android:layout_marginLeft="@dimen/activity_horizontal_margin"
android:layout_marginRight="@dimen/activity_horizontal_margin"
android:paddingBottom="@dimen/activity_horizontal_margin"
tools:context="org.disroot.disrootapp.ui.AboutActivity$LicenseFragment">
tools:context="org.disroot.disrootapp.ui.AboutActivity">
<LinearLayout
android:layout_width="match_parent"
@ -213,7 +213,7 @@
style="@android:style/TextAppearance.DeviceDefault.Large"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/thirdparty"
android:text="@string/thirdParty"
android:layout_marginBottom="8dp"/>
<TextView
@ -221,7 +221,7 @@
android:textAppearance="@style/TextAppearance.AppCompat"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/thirdpartyText"/>
android:text="@string/thirdPartyText"/>
</LinearLayout>
</android.support.v7.widget.CardView>

View File

@ -16,42 +16,29 @@
android:textStyle="bold" />
<TextView
android:id="@+id/description"
android:layout_width="fill_parent"
android:id="@+id/resolved"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingBottom="2dip"
android:textColor="#ffffff" />
<TextView
android:id="@+id/updated_at"
android:id="@+id/status"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#ffffff" />
<TextView
android:id="@+id/category"
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:id="@+id/description"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingBottom="2dip"
android:textColor="#ffffff" />
</LinearLayout>

View File

@ -0,0 +1,38 @@
<?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/category"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingBottom="2dip"
android:textColor="#ffffff"/>
<TextView
android:id="@+id/status"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#ffffff" />
</LinearLayout>

View File

@ -4,13 +4,11 @@
<string name="action_mail">Mail</string>
<string name="action_cloud">Cloud</string>
<string name="action_diaspora">Diaspora*</string>
<string name="action_forum">Forum</string>
<string name="action_chat">Chat</string>
<string name="action_pad">Etherpad</string>
<string name="action_calc">EtherCalc</string>
<string name="action_cryptpad">Cryptpad</string>
<string name="action_bin">Private bin</string>
<string name="action_upload">Upload</string>
<string name="action_poll">Umfrage</string>
<string name="action_state">Status</string>
<string name="action_howto">How to</string> <!--best transl will be tutorial, but inconsistent then-->
<string name="action_about">Über</string>
@ -28,7 +26,7 @@
<string name="CloudInfoTitle">Nextcloud Einstellungen</string>
<string name="CloudInfo">Sichere und synchronisiere Deine Daten. Mit Nextcloud kannst du Dateien, Kalender, Kontakte und mehr mit Anderen teilen.\n\nHost:\n https://cloud.disroot.org\n\nBenutzername:\n "dein Disroot Benutzername"\n\nPasswort:\n "dein Disroot Passwort".</string>
<string name="WelcomeTitle">Willkommen</string>
<string name="WelcomeInfo">Disroot ist eine Plattform, auf der Online-Dienste angeboten werden, die auf den Prinzipien von Freiheit, Privatsphäre, Gemeinschaft und Dezentralisierung basieren.\nDiese App ist wie ein Schweizer Taschenmesser für die Disroot-Plattform, von der Community für die Community.\nAuch wenn du keinen Disroot-Account hast, kannst Du diese App trotzdem nutzen, um auf alle Disroot-Dienste zuzugreifen, die kein Benutzerkonto erfordern:\n \ \ \ &#8226; Etherpad\n \ \ \ &#8226; Ethercalc\n \ \ \ &#8226; Private bin\n \ \ \ &#8226; Upload\n \ \ \ &#8226; Poll\n \ \ \ &#8226; Searx\n \ \ \ &#8226; Diaspora* (separater Diaspora Account benötigt)\n\nDiese App wird Dich eventuell darum bitten, weitere Apps zu installieren. Wir empfehlen F-Droid zu installieren - einen kostenlosen und quelloffenen App-Katalog - da nicht alle verwendeten Apps im Google Play Store zu finden sind und F-Droid außerdem mehr auf Datenschutz ausgerichtet ist (kein Tracking, kein Account erforderlich). Du kannst F-Droid herunterladen, indem Du auf das F-Droid-Symbol klickst.\n</string>
<string name="WelcomeInfo">Disroot ist eine Plattform, auf der Online-Dienste angeboten werden, die auf den Prinzipien von Freiheit, Privatsphäre, Gemeinschaft und Dezentralisierung basieren.\nDiese App ist wie ein Schweizer Taschenmesser für die Disroot-Plattform, von der Community für die Community.\nAuch wenn du keinen Disroot-Account hast, kannst Du diese App trotzdem nutzen, um auf alle Disroot-Dienste zuzugreifen, die kein Benutzerkonto erfordern:\n \ \ \ &#8226; Etherpad\n \ \ \ &#8226; Cryptpad\n \ \ \ &#8226; Private bin\n \ \ \ &#8226; Upload\n \ \ \ &#8226; Searx\n \ \ \ &#8226; Diaspora* (separater Diaspora Account benötigt)\n\nDiese App wird Dich eventuell darum bitten, weitere Apps zu installieren. Wir empfehlen F-Droid zu installieren - einen kostenlosen und quelloffenen App-Katalog - da nicht alle verwendeten Apps im Google Play Store zu finden sind und F-Droid außerdem mehr auf Datenschutz ausgerichtet ist (kein Tracking, kein Account erforderlich). Du kannst F-Droid herunterladen, indem Du auf das F-Droid-Symbol klickst.\n</string>
<string name="help">Hilfe</string>
<string name="license">Lizenz</string>
<string name="action_settings">Einstellungen</string>
@ -39,8 +37,8 @@
<string name="disrootUrl">https://disroot.org</string>
<string name="disroot"> * Disroot Community (Disroot):</string>
<string name="fDroid">F-Droid</string>
<string name="thirdparty">Libraries von Drittanbietern</string>
<string name="thirdpartyText"><a href="https://github.com/cketti/ckChangeLog">ckChangelog: </a>Apache License 2.0\n\n<a href="https://github.com/wsdfhjxc/taponium/">Taponium: </a>GNU General Public License v3.0</string>
<string name="thirdParty">Libraries von Drittanbietern</string>
<string name="thirdPartyText"><a href="https://github.com/cketti/ckChangeLog">ckChangelog: </a>Apache License 2.0\n\n<a href="https://github.com/wsdfhjxc/taponium/">Taponium: </a>GNU General Public License v3.0</string>
<string name="misc">sonstiges</string>
<string name="miscDio">Wir haben Diolinux als Grundlage benutzt, um diese App zu entwickeln. Probier es selbst aus, es ist freie, quelloffene Software!</string>
<string name="miscDioBtn">Weitere Informationen</string>
@ -69,18 +67,14 @@
<string name="PadTitle">EtherPad Info</string>
<string name="ChatTitle">XMPP Einstellungen\n</string>
<string name="ChatInfo">Conversations ist ein Messenger für die eine sichere (E2EE mit OMEMO und PGP) und datenschutzfeundliche Kommunikation mit Kontakten und Gruppen. Er nutzt das quelloffene XMPP-Protokoll das eine dezentrale Server-Infrastruktur erlaubt.\n\nJabber ID :\n Deine_Disroot_email_addresse\n\nPasswort :\n Dein_Disroot_passwort</string>
<string name="CalcInfo">Mit EtherCalc zusammen an Listen, Formularen, Datensätzen, etc. arbeiten.\nKeine Registrierung notwendig.</string>
<string name="CalcTitle">EtherCalc Info</string>
<string name="CryptpadInfo">Eine privat gestaltete Alternative zu den gängigen Office-Tools.\nKeine Registrierung notwendig.</string>
<string name="CryptpadTitle">Cryptpad Info</string>
<string name="BinTitle">PrivateBin Help</string>
<string name="BinInfo">PrivateBin ist ein quelloffener Online-Speicher-Service mit Diskussionsforum. Die Daten werden im Browser verschlüsselt und entschlüsselt, so dass der Server keine Kenntnis über die hochgeladenen Daten hat. Füge einfach einen Text ein, klicke auf "Senden" und teile die URL. Es können zusätzlich ein Passwort und ein Ablaufzeitpunkt gewählt werden.\nKeine Registrierung notwendig.</string>
<string name="UploadTitle">Upload (powered by Lufi) Info</string>
<string name="UploadInfo">Upload ist eine Datei-Hosting-Software, die temporär verschlüsselte Dateien speichert, damit Du sie mit anderen über einen Link teilen kannst. Alle Dateien sind verschlüsselt, bevor sie Dein Gerät verlassen, was bedeutet, dass der Server keine Kenntnis von hochgeladen Daten hat.\nKeine Registrierung notwendig.</string>
<string name="SearxTitle">Searx Info</string>
<string name="SearxInfo">Searx ist eine anonyme Multi-Suchmaschinen-Plattform, die die Ergebnisse anderer Suchmaschinen abruft, ohne Informationen über den Benutzer zu speichern. Kein Tracking, Profiling oder Data Mining durch große Unternehmen. \nKeine Registrierung notwendig.</string>
<string name="PollsTitle">Umfrage Info</string>
<string name="PollsInfo">Framadate ist ein Online-Service für schnelle Umfragen und Terminplanungen. Der Service hilft Dir, schnell und einfach gemeinsame Entscheidungen zu fällen.\nKeine Registrierung notwendig.</string>
<string name="BoardTitle">Taiga Info</string>
<string name="BoardInfo">Taiga ist ein Projektmanagement-Werkzeug, das für Programmierer, Designer und Start-ups entwickelt wurde, die mit agilen Methodiken arbeiten. Es kann jedoch auf praktisch jedes Projekt angewendet werden, auch außerhalb des IT-Bereichs.</string>
<string name="SearxInfo">Searx ist eine anonyme Multi-Suchmaschinen-Plattform, die Ergebnisse anderer Suchmaschinen abruft, ohne Informationen über den Benutzer zu speichern. Kein Tracking, Profiling oder Data Mining durch große Unternehmen. \nKeine Registrierung notwendig.</string>
<string name="UserTitle">Nutzer-Passwortverwaltung Hilfe</string> <!-- *Info -->
<string name="UserInfo">Nutze unser User Service Center, um deinen Account zu verwalten und dein Passwort zu ändern.</string>
<string name="StateTitle">Status Info</string>
@ -90,8 +84,6 @@
<string name="HowToInfo">Unsere Seite mit Howtos und Tutorials, die Ihnen helfen, sich mit den verschiedenen Disroot-Diensten zurechtzufinden.</string>
<string name="AboutTitle">Über Info</string>
<string name="AboutInfo">Informationen zu dieser App</string>
<string name="ForumTitle">Forum Hilfe</string> <!-- *Info *you can login with you disroot email adress or user name * this is more a link to distalk then to discourse-->
<string name="ForumInfo">Discourse ist ein open-source Ansatz für Diskussions-Foren. Es bietet alles, was Ihre Community, Gruppe oder Ihr Kollektiv braucht, um ihre Kommunikationsplattform zu erstellen.</string>
<string name="LogoTitle">Haben Sie wirklich lange auf das Logo gedrückt?</string> <!-- yeigh easter eggs -->
<string name="LogoInfo">Warum? Es ist doch nur ein Logo.\nSie sind aber neugierig ;-)</string>
<string name="LogoBtn">Disroot rules \\o/</string>
@ -127,7 +119,7 @@
<string name="Cloud">Cloud</string>
<string name="PerformanceIssues">Performance Probleme</string>
<string name="Notification">Keine Probleme</string>
<string name="Notificationissues">Bei einigen Systemen treten Probleme auf</string>
<string name="NotificationIssues">Bei einigen Systemen treten Probleme auf</string>
<string name="state_messages_btn">Zeige Status-Nachrichten</string>
<string name="state_btn">Zeige Service-Status</string>
<string name="ScheduledAt">Geplant am: \</string>
@ -136,7 +128,7 @@
<string name="Investigating">Prüfen</string>
<string name="Identified">Identifiziert</string>
<string name="NotesTitle">Nextcloud Notes Info</string>
<string name="NotesInfo">Notes ist eine schlichte und übersichtliche Notiz App die über Nextcloud synchronisiert werden kann.\n\nServer Addresse:\n https://cloud.disroot.org\n\nUsername:\n dein_disroot_username\n\nPasswort:\n dein_disroot_passwort</string>
<string name="NotesInfo">Notes ist eine schlichte und übersichtliche Notiz App die über Nextcloud synchronisiert werden kann.\n\nServer Adresse:\n https://cloud.disroot.org\n\nUsername:\n dein_disroot_username\n\nPasswort:\n dein_disroot_passwort</string>
<string name="NotesDialog">Um fortzufahren, müssen Sie zunächst Nextcloud Notes installieren.\nBitte wählen Sie installieren, um mit der Installation in F-Droid fortzufahren.</string>
<string name="action_notes">Notes</string>
<string name="PadDialog">Um fortzufahren, müssen Sie zunächst Padland installieren.\nBitte wählen Sie installieren, um mit der Installation in F-Droid fortzufahren.</string>
@ -144,8 +136,6 @@
<string name="action_optimization">Energiesparfunktion</string>
<string name="OptimizationTitle">Energiesparfunktion!</string>
<!--needs update:20/10/2020-->
<string name="action_board">Projekt-Board</string>
<string name="action_user">Account</string>
<string name="action_searx">Suche</string>
<string name="OptimizationInfo">Die Disroot-App kann sich mit der Statusseite von Disroot synchronisieren. Das heißt, dass Du in Echtzeit Neuigkeiten zu Problemen, Downtimes, geplanten Wartungen und Anderem erhältst, die auf https://state.disroot.org veröffentlicht werden.\nWir empfehlen, die Batterieoptimierung abzuschalten und der Disroot-App zu erlauben, im Hintergrund zu laufen. Wenn Du nicht sicher bist, kannst Du die Einstellungen später jederzeit im Menü der Disroot-App ändern.</string>
@ -170,5 +160,8 @@
<string name="translatorsTitle">Übersetzer:</string>
<string name="artworksTitle">Künstlerische Gestaltung:</string>
<string name="Fixed">Behoben</string>
<string name="down">Down</string>
<string name="more_info">Tap for more info</string>
<string name="info">info</string>
</resources>

View File

@ -4,13 +4,11 @@
<string name="action_mail">Correo</string>
<string name="action_cloud">Nube</string>
<string name="action_diaspora">Diaspora*</string>
<string name="action_forum">Foro</string>
<string name="action_chat">Chat</string>
<string name="action_pad">Etherpad</string>
<string name="action_calc">EtherCalc</string>
<string name="action_cryptpad">Cryptpad</string>
<string name="action_bin">Pastebin</string>
<string name="action_upload">Subir</string>
<string name="action_poll">Encuestas</string>
<string name="action_state">Estado</string>
<string name="action_howto">Guías</string>
@ -32,7 +30,7 @@
<string name="CloudInfoTitle">Configuración de Nextcloud:</string>
<string name="CloudInfo">Sincroniza y comparte tus archivos, calendarios, contactos y más.\n\nHost:\n https://cloud.disroot.org\n\nUsuarix: tu_usuarix_de_disroot\nContraseña:tu_contraseña_de_Disroot.</string>
<string name="WelcomeTitle">Bienvenidx</string>
<string name="WelcomeInfo">Disroot es una plataforma que provee servicios en línea basados en los principios de libertad, privacidad, federación y descentralización.\nEsta aplicación es como la navaja suiza de la plataforma, hecha por la comunidad, para la comunidad.\nSi no tienes una cuenta de Disroot, igual puedes usarla para acceder a aquellos servicios que no requieran de una:\nEtherpad, Ethercalc, Privatebin, Upload, Encuentas, Searx y Diaspora* (requiere tener cuenta solo de Diaspora*)\nLa aplicación podría solicitarte la instalación de otras adicionales, y no todas pueden encontrarse en la Tienda de Aplicaciones. Nosotros recomendamos instalar F-Droid. Si no la tienes, puedes descargarla tocando el logo de F-Droid.\n</string>
<string name="WelcomeInfo">Disroot es una plataforma que provee servicios en línea basados en los principios de libertad, privacidad, federación y descentralización.\nEsta aplicación es como la navaja suiza de la plataforma, hecha por la comunidad, para la comunidad.\nSi no tienes una cuenta de Disroot, igual puedes usarla para acceder a aquellos servicios que no requieran de una:\nEtherpad, Cryptpad, Privatebin, Upload, Encuentas, Searx y Diaspora* (requiere tener cuenta solo de Diaspora*)\nLa aplicación podría solicitarte la instalación de otras adicionales, y no todas pueden encontrarse en la Tienda de Aplicaciones. Nosotros recomendamos instalar F-Droid. Si no la tienes, puedes descargarla tocando el logo de F-Droid.\n</string>
<string name="help">Ayuda</string>
@ -51,8 +49,8 @@
<string name="disrootUrl"><a href = "https://disroot.org">https://disroot.org</a></string>
<string name="disroot"> * Comunidad de Disroot (Disroot):</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>
<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>
<string name="misc">Misceláneas</string>
<string name="miscDio">Utilizamos Diolinx como base para la creación de esta aplicación. Puedes chequearla, también es software libre.</string>
<string name="miscDioBtn">Más info</string>
@ -81,18 +79,14 @@
<string name="PadTitle">Etherpad:\nEscribe artículos, anuncios de prensa, listas de pendientes, etc., junto a amigxs, compañerxs de estudios o colegas, todxs trabajando en el mismo documento al mismo tiempo.</string>
<string name="ChatTitle">Configuración de XMPP\n</string>
<string name="ChatInfo">Mensajería instantánea descentralizada y federada.\nID de Jabber: tu_correo@disroot.org\nContraseña: tu_contraseña_de_Disroot</string>
<string name="CalcInfo">EtherCalc</string>
<string name="CalcTitle">EtherCalc: Trabaja colaborativemente en inventarios, formularios de encuestas, gestión de listas, sesiones de lluvia de ideas y más.</string>
<string name="CryptpadInfo">Cryptpad</string>
<string name="CryptpadTitle">Cryptpad: TUna alternativa privada al diseño de las herramientas ofimáticas más populares.\n No es necesario registrarse.</string>
<string name="BinTitle">PrivateBin</string>
<string name="BinInfo">Pastebin de código abierto en línea y tablero de discusión. La información es cifrada/descifrada en el navegador, de esa manera el servidor tiene cero conocimiento de los archivos alojados. Solo pega un texto, haz click en “Enviar”, establece la fecha de vencimiento (entre otras funcionalidades) y comparte la dirección URL.</string>
<string name="UploadTitle">Subir (Impulsado por Lufi)</string>
<string name="UploadInfo">Upload es un software de hospedaje de archivos. Almacena temporalmente archivos así puedes compartirlos con otros utilizando un link. Para proteger la privacidad, todos los archivos son cifrados en el navegador mismo.</string>
<string name="SearxTitle">Búsqueda</string>
<string name="SearxInfo"> Searx es un motor metabuscador, que agrupa los resultados de otros motores de búsqueda sin almacenar información sobre sus usuarios.</string>
<string name="PollsTitle">Encuestas</string>
<string name="PollsInfo">Framadate es un servicio en línea para planificar un encuentro o tomar decisiones colectivas de manera sencilla y rápida. No es necesario registrarse.</string>
<string name="BoardTitle">Tablero de Gestión de Proyectos</string>
<string name="BoardInfo">Taiga es una herramienta de gestión de proyectos, desarrollada para programadorxs, diseñadorxs y startups cuyo funcionamiento pretende ser metodológicamente ágil. Crea un proyecto, invita a lxs miembros de tu grupo, planeen tareas y ponganlas en el tablero. Resuelve quién será responsable de las tareas, sigue los progresos, comenta, decide y ve tu proyecto crecer.</string>
<string name="UserTitle">Autoservicio de Contraseña</string>
<string name="UserInfo">Utiliza nuestro Autoservicio de Contraseña para gestionar la información de tu usuarix y contraseñas.</string>
<string name="StateTitle">Estado: estado actual de los servicios de Disroot</string>
@ -102,8 +96,6 @@
<string name="HowToInfo">Nuestra página con guías y tutoriales para ayudarte a no perderte entre los varios servicios de Disroot.</string>
<string name="AboutTitle">Información sobre</string>
<string name="AboutInfo">Esta es la página de información sobre la aplicación</string>
<string name="ForumTitle">Foro: crea tu plataforma de comunicaciones</string>
<string name="ForumInfo">Discourse es una aproximación a los foros de discusión moderna y de código abierto. Ofrece todo lo que tu comunidad, grupo o colectivo necesita para crear su propia plataforma de comunicación, tanto pública como privada.</string>
<string name="LogoTitle">¿En serio intentaste una presión larga en el logo?</string>
<string name="LogoInfo">¿Por qué? Es solo un logo.\nNo seas tan curioso… ;-)</string>
<string name="LogoBtn">Disroot rules \\o//</string>
@ -138,7 +130,7 @@
<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="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>
@ -154,7 +146,6 @@
<string name="do_you_want_to_exit">¿Quieres salir?</string>
<string name="action_optimization">Optimización de la batería</string>
<string name="OptimizationTitle">Optimización de la batería!</string>
<string name="action_board">Tablero</string>
<string name="action_user">Cuenta</string>
<string name="action_searx">Buscar</string>
<string name="OptimizationInfo">La aplicación de Disroot puede sincronizar con la página de estado de Disroot. Esto significa que recibirás actualizaciones en tiempo real sobre problemas, caídas, mantenimientos programados y otros publicados via https://state.disroot.org\nSugerimos apagar la optimización de batería y permitir a la aplicación de Disroot correr en segundo plano. Si no estás segurx, siempre puedes cambiar la configuración desde el menú de la aplicación.</string>
@ -179,4 +170,8 @@
<string name="translatorsTitle">Traductorxs:</string>
<string name="artworksTitle">Arte:</string>
<string name="Fixed">Arreglado</string>
<string name="down">Down</string>
<string name="more_info">Tap for more info</string>
<string name="info">info</string>
</resources>

View File

@ -5,15 +5,12 @@
<string name="action_mail">Courrier</string>
<string name="action_cloud">Cloud</string>
<string name="action_diaspora">Diaspora*</string>
<string name="action_forum">Forum</string>
<string name="action_chat">Chat</string>
<string name="action_pad">Etherpad</string>
<string name="action_calc">EtherCalc</string>
<string name="action_cryptpad">Cryptpad</string>
<string name="action_bin">Private bin</string>
<string name="action_upload">Téléverser</string>
<string name="action_searx">Search</string><!--needs update:20/10/2020-->
<string name="action_poll">Sondage</string>
<string name="action_board">Project board</string><!--needs update:20/10/2020-->
<string name="action_user">Account</string><!--needs update:20/10/2020-->
<string name="action_state">État des services</string>
<string name="action_howto">Tutoriels</string>
@ -58,7 +55,7 @@
\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="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 \ \ \ • Cryptpad\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>
@ -76,8 +73,8 @@
<string name="disrootUrl">https://disroot.org</string>
<string name="disroot">* La communauté Disroot (Disroot) :</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="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 libre !</string>
<string name="miscDioBtn">En savoir plus</string>
@ -112,18 +109,14 @@
<string name="PadTitle">Info EtherPad</string>
<string name="ChatTitle">Paramètres XMPP\n</string>
<string name="ChatInfo">Conversations est une application de messagerie instantanée décentralisée et fédérée, gratuite, standard et open-source, pour chatter avec des contacts ou au sein de groupes.\n\nJabber ID :\n Votre adresse email Disroot complète\n\nMot de passe :\n votre mot de passe Disroot</string>
<string name="CalcInfo">Avec EtherCalc, travaillez ensemble sur des inventaires, des formulaires d\'enquête, des listes, des sessions de brainstorming et plus encore !\nAucune inscription n\'est requise.</string>
<string name="CalcTitle">Info EtherCalc</string>
<string name="CryptpadInfo">Une alternative privée aux outils de bureautique populaires.\nAucune inscription n\'est requise.</string>
<string name="CryptpadTitle">Info Cryptpad</string>
<string name="BinTitle">Aide PrivateBin</string>
<string name="BinInfo">PrivateBin est un pastebin et un forum de discussion en ligne open-source. Les données sont chiffrées et déchiffrées dans le navigateur afin que le serveur n\'ait aucune connaissance des données hébergées. Il suffit de coller un texte, de cliquer sur "Envoyer", de définir l\'expiration (et d\'autres fonctionnalités) et de partager l\'URL.\nAucune inscription n\'est requise.</string>
<string name="UploadTitle">Info Téléverser (propulsé par Lufi)</string>
<string name="UploadInfo">Téléverser est un logiciel d\'hébergement de fichiers qui stocke temporairement des fichiers chiffrés pour que vous puissiez les partager avec d\'autres en utilisant un lien. Tous les fichiers sont chiffrés avant qu\'ils ne quittent votre ordinateur, ce qui signifie que le serveur n\'a aucune connaissance des données hébergées.</string>
<string name="SearxTitle">Info Searx</string>
<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 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="StateTitle">Informations sur l\'état des services</string>
@ -133,8 +126,6 @@
<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">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>
@ -170,7 +161,7 @@
<string name="Cloud">Cloud</string>
<string name="PerformanceIssues">Problèmes de performance</string>
<string name="Notification">Aucun problème</string>
<string name="Notificationissues">Certains systèmes connaissent des problèmes</string>
<string name="NotificationIssues">Certains systèmes connaissent des problèmes</string>
<string name="state_messages_btn">Afficher les messages d\'état</string>
<string name="state_btn">Afficher l\'état de service</string>
<string name="ScheduledAt">Programmé le :</string>
@ -216,4 +207,8 @@
<string name="translatorsTitle">Traducteurs:</string>
<string name="artworksTitle">Illustrations:</string>
<string name="Fixed">Résolu</string>
<string name="down">Down</string>
<string name="more_info">Tap for more info</string>
<string name="info">info</string>
</resources>

View File

@ -4,13 +4,11 @@
<string name="action_mail">E-Mail</string>
<string name="action_cloud">Cloud</string>
<string name="action_diaspora">Diaspora*</string>
<string name="action_forum">Forum</string>
<string name="action_chat">Chat</string>
<string name="action_pad">Etherpad</string>
<string name="action_calc">EtherCalc</string>
<string name="action_cryptpad">Cryptpad</string>
<string name="action_bin">Private bin</string>
<string name="action_upload">Upload</string>
<string name="action_poll">Poll</string>
<string name="action_state">Stato</string>
<string name="action_howto">Manuali</string>
<string name="action_about">Info su</string>
@ -28,7 +26,7 @@
<string name="CloudInfoTitle">Impostazioni Nextcloud</string>
<string name="CloudInfo">Tieni i tuoi dati sincronizzati e al sicuro. Con Nextcloud puoi condividere file, calendari, contatti e altro ancora.\n\nHost:\n https://cloud.disroot.org\n\nnnome utente:\n il_tuo_nome_utente_disroot\n\nPassword:\n la_tua_password_disroot</string>
<string name="WelcomeTitle">Benvenuto</string>
<string name="WelcomeInfo">Disroot è una piattaforma che fornisce servizi online basati su principi di libertà, privacy, federazione e decentralizzazione.\nQuesta applicazione è come il tuo coltellino svizzero per la piattaforma Disroot, fatta dalla comunità per la comunità.\nSe non hai un account Disroot puoi comunque utilizzare questa app per accedere a tutti i servizi Disroot che non richiedono un account:\n \ \ \ &#8226; Etherpad\n \ \ \ &#8226; Ethercalc\n \ \ \ &#8226; Private bin\n \ \ \ &#8226; Upload\n \ \ \ &#8226; Poll\n \ \ \ &#8226; Searx\n \ \ \ &#8226; Diaspora* (richiede un conto solo per Diaspora)\n\nLa app potrebbe richiedere l\'installazione di applicazioni aggiuntive. Si consiglia vivamente di installare F-Droid - una app sotre gratuita e open source - in quanto non tutte le applicazioni possono essere trovate su Google Play Store e F-Droid è più orientato alla privacy (nessun tracking, nessun account necessario) è possibile scaricarlo toccando l\'icona F-Droid.\n</string>
<string name="WelcomeInfo">Disroot è una piattaforma che fornisce servizi online basati su principi di libertà, privacy, federazione e decentralizzazione.\nQuesta applicazione è come il tuo coltellino svizzero per la piattaforma Disroot, fatta dalla comunità per la comunità.\nSe non hai un account Disroot puoi comunque utilizzare questa app per accedere a tutti i servizi Disroot che non richiedono un account:\n \ \ \ &#8226; Etherpad\n \ \ \ &#8226; Cryptpad\n \ \ \ &#8226; Private bin\n \ \ \ &#8226; Upload\n \ \ \ &#8226; Searx\n \ \ \ &#8226; Diaspora* (richiede un conto solo per Diaspora)\n\nLa app potrebbe richiedere l\'installazione di applicazioni aggiuntive. Si consiglia vivamente di installare F-Droid - una app sotre gratuita e open source - in quanto non tutte le applicazioni possono essere trovate su Google Play Store e F-Droid è più orientato alla privacy (nessun tracking, nessun account necessario) è possibile scaricarlo toccando l\'icona F-Droid.\n</string>
<string name="help">Aiuto</string>
<string name="license">Licenza</string>
<string name="action_settings">Impostazioni</string>
@ -39,8 +37,8 @@
<string name="disrootUrl">https://disroot.org</string>
<string name="disroot"> * Comunità Disroot (Disroot):</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>
<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>
<string name="misc">Varie</string>
<string name="miscDio">Abbiamo usato Diolinx come base di partenza per creare questa applicazione. Vai a dare un\'occhiata, è anche software libero!</string>
<string name="miscDioBtn">Dimmi di più</string>
@ -69,18 +67,14 @@
<string name="PadTitle">Info EtherPad</string>
<string name="ChatTitle">Impostazioni XMPP\n</string>
<string name="ChatInfo">Conversations è una app gratuita, standard e open-source, decentralizzata e federata di messaggistica istantanea per chattare con i contatti o all\'interno di gruppi.\n\nID Jabber :\n Il tuo indirizzo e-mail completo Disroot\n\nPassword :\n La tua password di Disroot</string>
<string name="CalcInfo">Con EtherCalc puoi lavorare insieme su inventari, moduli di indagine, gestione degli elenchi, sessioni di brainstorming e molto altro ancora!\nNon è richiesta alcuna registrazione.</string>
<string name="CalcTitle">Info EtherCalc</string>
<string name="CryptpadInfo">Un\'alternativa privata di design ai più diffusi strumenti per l\'ufficio.\nNon è richiesta alcuna registrazione.</string>
<string name="CryptpadTitle">Info Cryptpad</string>
<string name="BinTitle">Aiuto PrivateBin</string>
<string name="BinInfo">PrivateBin è un pastebin online open-source e un forum di discussione. I dati sono criptati/decodificati nel browser in modo che il server non abbia alcuna conoscenza dei dati ospitati. Basta incollare un testo, fare clic su “Invia”, impostare la scadenza (e altre caratteristiche) e condividere l\'URL.\nNon è richiesta alcuna registrazione.</string>
<string name="UploadTitle">Info Upload (powered by Lufi)</string>
<string name="UploadInfo">Upload è un software di file hosting che memorizza temporaneamente i file crittografati in modo da poterli condividere con altri utilizzando un link. Tutti i file vengono crittografati prima di lasciare il computer, il che significa che il server non ha conoscenza dei dati ospitati.\nNon è richiesta alcuna registrazione.</string>
<string name="SearxTitle">Info Searx</string>
<string name="SearxInfo">Searx è una piattaforma anonima multimotore di ricerca, che aggrega i risultati di altri motori di ricerca senza memorizzare informazioni sui suoi utenti. Nessun monitoraggio, profilazione, nessun data mining da parte delle grandi aziende. \nNon è richiesta alcuna registrazione.</string>
<string name="PollsTitle">Aiuto Polls</string>
<string name="PollsInfo">Framadate è un servizio online per pianificare un appuntamento o prendere una decisione in modo semplice e veloce.\nNon è richiesta alcuna registrazione.</string>
<string name="BoardTitle">Info Lavagna Gestione di progetti</string>
<string name="BoardInfo">Taiga è uno strumento di project management, sviluppato per programmatori, progettisti e startup che lavorano con una metodologia agile in mente. Può tuttavia essere applicato praticamente a qualsiasi progetto o gruppo, anche al di fuori dell\'ambito IT.</string>
<string name="UserTitle">Aiuto Gestione delle password utente</string>
<string name="UserInfo">Utilizza il nostro User Self Service Center per gestire i tuoi dati utente e password.</string>
<string name="StateTitle">Info sullo stato</string>
@ -90,8 +84,6 @@
<string name="HowToInfo">La nostra pagina con manuali e tutorial per aiutarti a orientarti nei vari servizi Disroot.</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>
<string name="LogoTitle">Hai davvero provato la pressione lunga sul logo?</string>
<string name="LogoInfo">Perche? E\' solo un logo.\nNon essere troppo curioso. ;-)</string>
<string name="LogoBtn">Disroot rules \\o/</string>
@ -126,7 +118,7 @@
<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="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>
@ -142,7 +134,6 @@
<string name="do_you_want_to_exit">Vuoi veramente uscire?</string>
<string name="action_optimization">Ottimizzazione batteria</string>
<string name="OptimizationTitle">Ottimizzazione batteria!</string>
<string name="action_board">Scheda progetto</string>
<string name="action_user">Account</string>
<string name="action_searx">Ricerca</string>
<string name="OptimizationInfo">L\'applicazione Disroot può sincronizzarsi con la pagina di stato di Disroot. Ciò significa che riceverete aggiornamenti in tempo reale sui problemi, i tempi di inattività, la manutenzione programmata e altre informazioni pubblicate su https://state.disroot.org\nSi consiglia di disattivare l\'ottimizzazione della batteria e di consentire all\'app Disroot di funzionare in background. Se non siete sicuri, potete sempre cambiare l\'impostazione dal menu dell\'app Disroot in un secondo momento.</string>
@ -167,4 +158,8 @@
<string name="translatorsTitle">Traduttori:</string>
<string name="artworksTitle">Artwork:</string>
<string name="Fixed">Risolto</string>
<string name="down">Down</string>
<string name="more_info">Tap for more info</string>
<string name="info">info</string>
</resources>

View File

@ -4,13 +4,11 @@
<string name="action_mail">Mail</string>
<string name="action_cloud">Cloud</string>
<string name="action_diaspora">Diaspora*</string>
<string name="action_forum">Forum</string>
<string name="action_chat">Chat</string>
<string name="action_pad">Etherpad</string>
<string name="action_calc">EtherCalc</string>
<string name="action_cryptpad">Cryptpad</string>
<string name="action_bin">Private bin</string>
<string name="action_upload">Upload</string>
<string name="action_poll">Poll</string>
<string name="action_state">Status</string>
<string name="action_howto">How to</string>
@ -32,7 +30,7 @@
<string name="CloudInfoTitle">Nextcloud Instellingen</string>
<string name="CloudInfo">Houd uw gegevens gesynchroniseerd en veilig. Met Nextcloud kunt u uw bestanden, kalenders, contactpersonen en meer delen.\n\nHost:\n https://cloud.disroot.org\n\nGebruikersnaam:\n uw_disroot_gebruikersnaam\n\nWachtwoord:\n uw_disroot_wachtwoord.</string>
<string name="WelcomeTitle">Welkom</string>
<string name="WelcomeInfo">Disroot is een platform dat online diensten aanbiedt op basis van de principes van vrijheid, privacy, federatie en decentralisatie.\n Deze app is als een Zwitsers mes voor het Disroot platform, gemaakt door de gemeenschap voor de gemeenschap.\nAls je geen Disroot account hebt kun je deze app nog steeds gebruiken om toegang te krijgen tot alle Disroot diensten dat geen account vereist:\n \ \ \ &#8226; Etherpad\n \ \ \ &#8226; Ethercalc\n \ \ \ &#8226; Private bin\n \ \ \ &#8226; Upload\n \ \ \ &#8226; Poll\n \ \ \ &#8226; Searx\n \ \ \ &#8226; Diaspora* (vereist een Diaspora elleen account)\n\nDe app kan vereisen dat u extra apps installeert. We raden u ten zeerste aan om F-Droid - een gratis en open source app marktplaats te installeren, omdat niet alle apps te vinden zijn in de Play Store van Google en F-Droid meer privacy georiënteerd is (geen tracking, geen account nodig), u kunt het downloaden door op het F-droid icoontje te tikken.\n</string>
<string name="WelcomeInfo">Disroot is een platform dat online diensten aanbiedt op basis van de principes van vrijheid, privacy, federatie en decentralisatie.\n Deze app is als een Zwitsers mes voor het Disroot platform, gemaakt door de gemeenschap voor de gemeenschap.\nAls je geen Disroot account hebt kun je deze app nog steeds gebruiken om toegang te krijgen tot alle Disroot diensten dat geen account vereist:\n \ \ \ &#8226; Cryptpad\n \ \ \ &#8226; Cryptpad\n \ \ \ &#8226; Private bin\n \ \ \ &#8226; Upload\n \ \ \ &#8226; Searx\n \ \ \ &#8226; Diaspora* (vereist een Diaspora elleen account)\n\nDe app kan vereisen dat u extra apps installeert. We raden u ten zeerste aan om F-Droid - een gratis en open source app marktplaats te installeren, omdat niet alle apps te vinden zijn in de Play Store van Google en F-Droid meer privacy georiënteerd is (geen tracking, geen account nodig), u kunt het downloaden door op het F-droid icoontje te tikken.\n</string>
<string name="help">Help</string>
<string name="license">Licentie</string>
@ -51,8 +49,8 @@
<string name="disrootUrl">https://disroot.org</string>
<string name="disroot"> * Disroot Gemeenschap (Disroot):</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>
<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>
<string name="misc">Diversen</string>
<string name="miscDio">We hebben Diolinx als uitgangspunt gebruikt om deze app te maken. Ga eens kijken, het is ook vrije software!</string>
<string name="miscDioBtn">Vertel me meer</string>
@ -82,18 +80,14 @@
<string name="ChatTitle">XMPP Instellingen\n</string>
<string name="ChatInfo">Conversations is een gratis, standaard en open-source gedecentraliseerde en gefedereerde instant messaging applicatie voor chatten met contacten of binnen groepen.
\n\nJabber ID :\n Jou Volledig Disroot email adres\n\nWachtwoord :\n Jou Disroot wachtwoord</string>
<string name="CalcInfo">Met EtherCalc werken we samen aan inventarissen, enquêteformulieren, lijstbeheer, brainstormsessies en meer.\nEr is geen registratie vereist.</string>
<string name="CalcTitle">EtherCalc Info</string>
<string name="CryptpadInfo">Een privé-alternatief voor populaire kantoortools.\nEr is geen registratie vereist.</string>
<string name="CryptpadTitle">Cryptpad Info</string>
<string name="BinTitle">PrivateBin Help</string>
<string name="BinInfo">PrivateBin is een open-source online pastebin en discussiebord. De gegevens worden gecodeerd/gedecodeerd in de browser, zodat de server geen kennis heeft van gehoste gegevens. Plak gewoon een tekst, klik op "Verzenden", stel de vervaldatum in (en andere functies) en deel de URL.\nEr is geen registratie vereist.</string>
<string name="UploadTitle">Upload (powered by Lufi) Info</string>
<string name="UploadInfo">Upload is een file hosting software die tijdelijk versleutelde bestanden opslaat, zodat u ze kunt delen met anderen via een link. Alle bestanden worden gecodeerd voordat ze uw computer verlaten, wat betekent dat de server geen kennis heeft van gehoste gegevens.\nEr is geen registratie vereist.</string>
<string name="SearxTitle">Searx Info</string>
<string name="SearxInfo">Searx is een anoniem multi zoekmachine platform, dat de resultaten van andere zoekmachines samenvoegt en geen informatie over de gebruikers opslaat. Geen tracking, geen profilering, geen data mining door grote bedrijven.\nEr is geen registratie vereist.</string>
<string name="PollsTitle">Polls Help</string>
<string name="PollsInfo">Framadate is een online dienst om snel en eenvoudig een afspraak te plannen of een beslissing te nemen.\nEr is geen registratie vereist.</string>
<string name="BoardTitle">Project Management Bord Info</string>
<string name="BoardInfo">Taiga is een project management tool, ontwikkeld voor programmeurs, ontwerpers en startups die werken met een flexibele methodologie in gedachten. Het kan echter op vrijwel elk project of groep worden toegepast, zelfs buiten de IT-omgeving.</string>
<string name="UserTitle">Gebruikerswachtwoordbeheer Help</string>
<string name="UserInfo">Gebruik ons User Self Service Center om uw gebruikers- en wachtwoordgegevens te beheren</string>
<string name="StateTitle">Status Info</string>
@ -103,8 +97,6 @@
<string name="HowToInfo">Onze pagina met howtos en tutorials om je te helpen je weg te vinden in de verschillende Disroot diensten.</string>
<string name="AboutTitle">Over Info</string>
<string name="AboutInfo">Dit is de over-pagina van deze app</string>
<string name="ForumTitle">Forum Help</string>
<string name="ForumInfo">Discourse is een volledig open-source moderne benadering van discussiefora. Het biedt alles wat uw gemeenschap, groep of collectief nodig heeft om hun communicatieplatform te creëren.</string>
<string name="LogoTitle">Heb je echt gewoon de lange druk op het logo geprobeerd?</string>
<string name="LogoInfo">Waarom? Het is gewoon een logo.\n Wees niet te nieuwsgierig ;-)</string>
<string name="LogoBtn">Disroot rules \\o/</string>
@ -139,7 +131,7 @@
<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="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>
@ -155,7 +147,6 @@
<string name="do_you_want_to_exit">Will je de app verlaten?</string>
<string name="action_optimization">Batterij optimalisatie</string>
<string name="OptimizationTitle">Batterij optimalisatie!</string>
<string name="action_board">Project bord</string>
<string name="action_user">Account</string>
<string name="action_searx">Zoeken</string>
<string name="OptimizationInfo">De Disroot app kan synchroniseren met de statuspagina van Disroot. Dit betekent dat u realtime updates ontvangt over problemen, uitvaltijden, gepland onderhoud en andere zaken die worden gepubliceerd via https://state.disroot.org\nWe raden aan om de batterijoptimalisatie uit te schakelen en de Disroot app op de achtergrond te laten draaien. Als u niet zeker bent, kunt u de instelling later altijd nog wijzigen via het menu van de Disroot app.</string>
@ -180,4 +171,8 @@
<string name="translatorsTitle">Vertalers:</string>
<string name="artworksTitle">Artwork:</string>
<string name="Fixed">Opgelost</string>
<string name="down">Down</string>
<string name="more_info">Tap for more info</string>
<string name="info">info</string>
</resources>

View File

@ -4,15 +4,12 @@
<string name="action_mail">E-mail</string>
<string name="action_cloud">Nuvem</string>
<string name="action_diaspora">Diaspora*</string>
<string name="action_forum">Fórum</string>
<string name="action_chat">Chat</string>
<string name="action_pad">Pad</string>
<string name="action_calc">Calc</string>
<string name="action_cryptpad">Cryptpad</string>
<string name="action_bin">Paste bin</string>
<string name="action_upload">Upload</string>
<string name="action_searx">Pesquisa</string>
<string name="action_poll">Sondagens</string>
<string name="action_board">Quadro de projetos</string>
<string name="action_state">Status</string>
<string name="action_howto">Tutorial</string>
<string name="action_about">Sobre</string>
@ -44,8 +41,8 @@
<string name="disrootUrl">https://disroot.org</string>
<string name="disroot"> * Comunidade Disrootu (Disroot):</string>
<string name="fDroid">F-Droid</string>
<string name="thirdparty">Bibliotecas de Terceiros</string>
<string name="thirdpartyText"><a href="https://github.com/cketti/ckChangeLog">ckHistórico de modificações: </a>Apache License 2.0\n\n<a href="https://github.com/wsdfhjxc/taponium/">Taponium: </a>GNU General Public License v3.0</string>
<string name="thirdParty">Bibliotecas de Terceiros</string>
<string name="thirdPartyText"><a href="https://github.com/cketti/ckChangeLog">ckHistórico de modificações: </a>Apache License 2.0\n\n<a href="https://github.com/wsdfhjxc/taponium/">Taponium: </a>GNU General Public License v3.0</string>
<string name="misc">Diversos</string>
<string name="miscDio">Usamos o Diolinx como a base para criar este aplicativo. Pode dar uma olhada é de Software Livre!</string>
<string name="miscDioBtn">Quero saber mais</string>
@ -74,18 +71,14 @@
<string name="PadTitle">Sobre EtherPad</string>
<string name="ChatTitle">Configurações de XMPP\n</string>
<string name="ChatInfo">Conversations é um aplicativo de mensagens instantâneas de código livre, padrão, descentralizado e federado para conversar com seus contactos ou com grupos.\n\nID do Jabber :\n Seu endereço de email do Disroot completo\n\nSenha :\n A sua senha do Disroot</string>
<string name="CalcInfo">Com o EtherCalc pode trabalhar colaborativamente com outros em inventrários, questionários, gestão de listas, sessões de brainstorming e mais!\nNão é necessário ter uma conta para usar.</string>
<string name="CalcTitle">Sobre EtherCalc</string>
<string name="CryptpadInfo">Uma alternativa privada por projecto às ferramentas de escritório populares.\nNão é necessário ter uma conta para usar.</string>
<string name="CryptpadTitle">Sobre Cryptpad</string>
<string name="BinTitle">Sobre PrivateBin</string>
<string name="BinInfo">PrivateBin é uma ferramenta de código livre pastebin e fórum de discussão. Os dados são criptografados/descriptografados no navegador para que o servidor não possa aceder aos seus dados. Basta colar um texto e clicar no “Enviar”, definir data de expiração (e outros ajustes) e compartilhar o link URL.\nNão é necessário ter uma conta para usar.</string>
<string name="UploadTitle">Sobre Upload (desenvolvido por Lufi)</string>
<string name="UploadInfo">Upload é um software para compartilhar os arquivos que temporariamente armazena eles criptografados para que você os possa compartilhar com outras pessoas via link. Todos os arquivos são criptografados antes de ser enviados do seu computador, o que significa que o servidor não sabe que dados estão armazenados.\nNão é necessário ter uma conta para usar.</string>
<string name="SearxTitle">Sobre Searx</string>
<string name="SearxInfo">Searx é uma plataforma de busca múltipla, que agrega resultados de pesquisa de várias plataformas de busca e não armazena informação sobre seus usuários. Sem rastreamento, profiling ou coleta de dados.\nNão é necessário ter uma conta para usar.</string>
<string name="PollsTitle">Sobre Sondagens</string>
<string name="PollsInfo">Framadate é um serviço online para planear ou marcar reuniões ou tomar decisões rapidamente de um modo fácil.\nNão é necessário ter uma conta para usar.</string>
<string name="BoardTitle">Sobre Programa de gestão de projetos</string>
<string name="BoardInfo">O Taiga é uma ferramenta de gestão de projetos, criada para desenvolvedores, designers e startups que usam a metodologia de trabalho agile. No entanto pode ser usado por virtualmente qualquer tipo de projeto ou grupo, mesmo fora do mundo das tecnologias de informação.</string>
<string name="UserTitle">Sobre Gerenciador das senhas do usuário</string>
<string name="UserInfo">Use o nosso User Self Service Center (Centro de Auto-Atendimento ao Usuário) para gerenciar seus dados de usuário e senhas</string>
<string name="StateTitle">Sobre State</string>
@ -95,8 +88,6 @@
<string name="HowToInfo">O nosso site com tutoriais para ajudar você a navegar e usar os vários serviços do Disroot.</string>
<string name="AboutTitle">Info de Sobre</string>
<string name="AboutInfo">Esta é o site com informações sobre este App</string>
<string name="ForumTitle">Sobre Fórum</string>
<string name="ForumInfo">Discourse é uma abordagem moderna a fóruns de discussão, totalmente de código-livre. Oferece tudo o que a sua comunidade, grupo ou colectivo necessita para criar a sua plataforma de comunicação.</string>
<string name="LogoTitle">Você realmente tentou pressionar sobre o logo?</string>
<string name="LogoInfo">Por quê? É apenas um logo.\nNão seja tão curioso ;-)</string>
<string name="LogoBtn">Viva Disroot \\o/</string>
@ -132,7 +123,7 @@
<string name="Cloud">Nuvem</string>
<string name="PerformanceIssues">Problemas de desempenho</string>
<string name="Notification">Tudo certo</string>
<string name="Notificationissues">Alguns sistemas estão enfrentando problemas</string>
<string name="NotificationIssues">Alguns sistemas estão enfrentando problemas</string>
<string name="state_messages_btn">Mostrar mensagens de Status</string>
<string name="state_btn">Mostrar Status de Serviço</string>
<string name="ScheduledAt">Programado em: \</string>
@ -159,7 +150,7 @@
<string name="deviceName">Nome do dispositivo:</string>
<string name="edit_apps_title">Mostrar/ocultar apps</string>
<string name="settings">Configurações</string>
<string name="WelcomeInfo">Disroot é uma plataforma que fornece serviços on-line baseados em princípios de liberdade, privacidade, federação e descentralização.\nEste App é como seu canivete suíço para a plataforma Disroot, feito pela comunidade para a comunidade.\nSe você não tiver uma conta do Disroot mesmo assim pode usar este App e acessar todos os serviços do Disroot que não requerem uma conta:\n \ \ \ &#8226; Etherpad\n \ \ \ &#8226; Ethercalc\n \ \ \ &#8226; Private bin\n \ \ \ &#8226; Upload\n \ \ \ &#8226; Sondagens\n \ \ \ &#8226; Searx\n \ \ \ &#8226; Chamadas\n\nnO App pode exigir que você instale aplicativos adicionais. Recomendamos fortemente que você instale o F-Droid - uma loja de aplicativos gratuitos e de código livre - nem todos os aplicativos daí podem ser encontrados na Loja de Google Play e além disso o F-Droid é mais orientado para a privacidade (sem rastreamento, sem necessidade de conta) você pode fazer o download, tocando no ícone do F-droid.\n</string>
<string name="WelcomeInfo">Disroot é uma plataforma que fornece serviços on-line baseados em princípios de liberdade, privacidade, federação e descentralização.\nEste App é como seu canivete suíço para a plataforma Disroot, feito pela comunidade para a comunidade.\nSe você não tiver uma conta do Disroot mesmo assim pode usar este App e acessar todos os serviços do Disroot que não requerem uma conta:\n \ \ \ &#8226; Cryptpad\n \ \ \ &#8226; Private bin\n \ \ \ &#8226; Upload\n \ \ \ &#8226; Sondagens\n \ \ \ &#8226; Searx\n \ \ \ &#8226; Chamadas\n\nnO App pode exigir que você instale aplicativos adicionais. Recomendamos fortemente que você instale o F-Droid - uma loja de aplicativos gratuitos e de código livre - nem todos os aplicativos daí podem ser encontrados na Loja de Google Play e além disso o F-Droid é mais orientado para a privacidade (sem rastreamento, sem necessidade de conta) você pode fazer o download, tocando no ícone do F-droid.\n</string>
<string name="hide">Ocultar app</string>
<string name="dashboard">Painel de controle</string>
<string name="action_calls">Chamadas</string>
@ -175,4 +166,8 @@
<string name="translatorsTitle">Tradutores:</string>
<string name="artworksTitle">Arte:</string>
<string name="Fixed">Resolvido</string>
<string name="down">Down</string>
<string name="more_info">Tap for more info</string>
<string name="info">info</string>
</resources>

View File

@ -4,13 +4,11 @@
<string name="action_mail">Email</string>
<string name="action_cloud">Cloud</string>
<string name="action_diaspora">Diaspora*</string>
<string name="action_forum">Fórum</string>
<string name="action_chat">Chat</string>
<string name="action_pad">Etherpad</string>
<string name="action_calc">EtherCalc</string>
<string name="action_cryptpad">Cryptpad</string>
<string name="action_bin">Private bin</string>
<string name="action_upload">Upload</string>
<string name="action_poll">Poll</string>
<string name="action_state">State</string>
<string name="action_howto">How to</string>
@ -32,7 +30,7 @@
<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 Suíç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="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 Suíç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; Cryptpad\n \ \ \ &#8226; Cryptpad\n \ \ \ &#8226; Private bin\n \ \ \ &#8226; Upload\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">Ajuda</string>
<string name="license">Licença</string>
@ -50,8 +48,8 @@
<string name="disrootUrl">https://disroot.org</string>
<string name="disroot"> * Disroot Community (Disroot):</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>
<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>
<string name="misc">Miscellaneous</string>
<string name="miscDio">Nós usamos o Diolinx como a base para criar esta aplicação. Pode dar uma olhadela, também é Software Livre!</string>
<string name="miscDioBtn">Contem-me mais</string>
@ -80,18 +78,14 @@
<string name="PadTitle">Sobre EtherPad</string>
<string name="ChatTitle">Definições do XMPP\n</string>
<string name="ChatInfo">O Conversations uma aplicação de mensagens instantâneas descentralizada e federada, livre, standard e open-source para conversar com os seus contactos ou com grupos.\n\nJabber ID :\n O seu endereço de email do Disroot completo\n\nPassword :\n A sua password do Disroot</string>
<string name="CalcInfo">Com o EtherCalc pode trabalhar colaborativamente com outros em inventrários, questionários, gestão de listas, sessões de brainstorming e mais!\nNão é necessário ter uma conta de utilizador para usar.</string>
<string name="CalcTitle">Sobre EtherCalc</string>
<string name="CryptpadInfo">Uma alternativa privada por projecto às ferramentas de escritório populares.\nNão é necessário ter uma conta de utilizador para usar.</string>
<string name="CryptpadTitle">Sobre Cryptpad</string>
<string name="BinTitle">Sobre PrivateBin</string>
<string name="BinInfo">PrivateBin é um pastebin open-souce e fórum de discussão. Os dados são encriptados e desencriptados no browser para que o servidor não possa aceder aos dados. Basta colar um texto e carregar em “Send”, definir data de expiração (e outras configurações) e partilhar o link URL.\nNão é necessário ter uma conta de utilizador para usar.</string>
<string name="UploadTitle">Sobre Upload (Lufi)</string>
<string name="UploadInfo">Upload é um software para partilhar ficheiros que armazena temporariamente ficheiros encriptados para que você os possa partilhar com outras pessoas usando um link. Todos os ficheiros são encriptados antes de deixaram o seu computador, o que significa que o servidor não sabe que dados estão armazenados.\nNão é necessário ter uma conta de utilizador para usar.</string>
<string name="SearxTitle">Sobre Searx</string>
<string name="SearxInfo"> Searx é uma plataforma multi motores de busca, que agrega resultados de pesquisa de outros motores de busca ao mesmo tempo que não armazena informação acerca dos seus utilizadores. Sem tracking, profiling ou data mining. \nNão é necessário ter uma conta de utilizador para usar.</string>
<string name="PollsTitle">Sobre Polls</string>
<string name="PollsInfo">Framadate é um serviço online para planear ou marcar reuniões ou tomar decisões rapidamente de um modo fácil.\nNão é necessário ter uma conta de utilizador para usar.</string>
<string name="BoardTitle">Sobre o Taiga, programa de gestão de projetos</string>
<string name="BoardInfo">O Taiga é uma ferramenta de gestão de projetos, criada para programadores, designers e startups que usam a metodologia de trabalho agile. No entanto pode ser usado por virtualmente qualquer projeto ou grupo, mesmo fora do mundo das tecnologias de informação.</string>
<string name="UserTitle">Gestão de Password de Utilizador</string>
<string name="UserInfo">Use o nosso Self Service Center de utilizador para gerir a sua conta de utilizador e a sua password</string>
<string name="StateTitle">Sobre State</string>
@ -101,8 +95,6 @@
<string name="HowToInfo">A nossa página com tutoriais para ajudar a navegar e utilizar os vários serviços do Disroot.</string>
<string name="AboutTitle">Sobre Descrição</string>
<string name="AboutInfo">Esta é a página com informações acerca desta app</string>
<string name="ForumTitle"> Sobre Fórum</string>
<string name="ForumInfo">Discourse é uma abordagem moderna a fóruns de discussão completamente open-source. Oferece tudo o que a sua comunidade, grupo ou colectivo necessita para criar a sua plataforma de comunicação.</string>
<string name="LogoTitle">Acabou mesmo de tentar mesmo carregar longamente no logotipo?</string>
<string name="LogoInfo">Prâ quê? É apenas um logótipo.\nNão seja demasiado curioso ;-)</string>
<string name="LogoBtn">Disroot rula \\o/</string>
@ -137,7 +129,7 @@
<string name="Cloud">Cloud</string>
<string name="PerformanceIssues">Problemas de performance</string>
<string name="Notification">Sem problemas</string>
<string name="Notificationissues">Alguns serviços estão com problemas</string>
<string name="NotificationIssues">Alguns serviços estão com problemas</string>
<string name="state_messages_btn">Mostrar mensagens de State</string>
<string name="state_btn">Mostrar estado dos serviços</string>
<string name="ScheduledAt">Agendado para:</string>
@ -153,7 +145,6 @@
<string name="do_you_want_to_exit">Queres sair da aplicação?</string>
<string name="action_optimization">Otimização da bateria</string>
<string name="OptimizationTitle">Otimização da bateria!</string>
<string name="action_board">Project board</string>
<string name="action_user">Conta</string>
<string name="action_searx">Pesquisa</string>
<string name="OptimizationInfo">Esta aplicação consegue sincronizar com a status page do Disroot. Isso significa que recebes atualizações e informações em tempo real acerca de: problemas com o serviço, atualizações de software, quando um serviço é colocado em manutenção, que são publicadas em https://state.disroot.org\nNós recomendamos desativar a otimização de bateria e permitir esta aplicação funcionar em background. Se tiveres dúvidas acerca disto podes sempre alterar as permissões mais tarde a partir do menu da aplicação.</string>
@ -178,4 +169,8 @@
<string name="translatorsTitle">Tradutores:</string>
<string name="artworksTitle">Desenho:</string>
<string name="Fixed">Resolvido</string>
<string name="down">Down</string>
<string name="more_info">Tap for more info</string>
<string name="info">info</string>
</resources>

View File

@ -4,13 +4,11 @@
<string name="action_mail">E-pošta</string>
<string name="action_cloud">Oblak</string>
<string name="action_diaspora">Diaspora*</string>
<string name="action_forum">Forum</string>
<string name="action_chat">Ćaskanje</string>
<string name="action_pad">Etherpad</string>
<string name="action_calc">EtherCalc</string>
<string name="action_cryptpad">Cryptpad</string>
<string name="action_bin">PrivateBin</string>
<string name="action_upload">Otpremi</string>
<string name="action_poll">Polls</string>
<string name="action_state">Stanje servisa</string>
<string name="action_howto">Uputstva</string>
@ -32,7 +30,7 @@
<string name="CloudInfoTitle">Nextcloud podešavanja</string>
<string name="CloudInfo">Sinhronizujte i osigurajte vaše podatke. Pomoću Nextcloud usluge možete deliti vaše datoteke, kalendare, kontakte i još mnogo toga.\n\nServer:\n https://cloud.disroot.org\n\nKorisničko ime:\n vaše_disroot_korisničko ime\n\nLozinka:\n vaša_disroot_lozinka.</string>
<string name="WelcomeTitle">Dobro došli</string>
<string name="WelcomeInfo">Disroot platforma obezbeđuje internet usluge zasnovane na principima slobode, privatnosti, federacije i decentralizacije.\nOva aplikacija je višenamenska alatka za Disroot platformu, koju su članovi zajednice napravili za zajednicu.\nAko nemate nalog na Disroot platformi, možete koristiti ovu aplikaciju za pristup svim Disroot uslugama za koje nije potreban nalog:\n \ \ \ &#8226; Etherpad\n \ \ \ &#8226; Ethercalc\n \ \ \ &#8226; PrivateBin\n \ \ \ &#8226; Otpremi\n \ \ \ &#8226; Polls\n \ \ \ &#8226; Searx\n \ \ \ &#8226; Diaspora* (potreban zaseban Diaspora nalog)\n\nOva aplikacija možda će zahtevati instalaciju dodatnih aplikacija. Preporučujemo da instalirate F-Droid, besplatnu prodavnicu otvorenog koda, jer pojedine aplikacije nisu dostupne na Play prodavnici, a pritom F-Droid nudi više privatnosti (nema praćenja, nije potreban nalog). Aplikaciju možete preuzeti dodirom na F-droid ikonicu.\n</string>
<string name="WelcomeInfo">Disroot platforma obezbeđuje internet usluge zasnovane na principima slobode, privatnosti, federacije i decentralizacije.\nOva aplikacija je višenamenska alatka za Disroot platformu, koju su članovi zajednice napravili za zajednicu.\nAko nemate nalog na Disroot platformi, možete koristiti ovu aplikaciju za pristup svim Disroot uslugama za koje nije potreban nalog:\n \ \ \ &#8226; Cryptpad\n \ \ \ &#8226; Cryptpad\n \ \ \ &#8226; PrivateBin\n \ \ \ &#8226; Otpremi\n \ \ \ &#8226; Searx\n \ \ \ &#8226; Diaspora* (potreban zaseban Diaspora nalog)\n\nOva aplikacija možda će zahtevati instalaciju dodatnih aplikacija. Preporučujemo da instalirate F-Droid, besplatnu prodavnicu otvorenog koda, jer pojedine aplikacije nisu dostupne na Play prodavnici, a pritom F-Droid nudi više privatnosti (nema praćenja, nije potreban nalog). Aplikaciju možete preuzeti dodirom na F-droid ikonicu.\n</string>
<string name="help">Pomoć</string>
<string name="license">Licenca</string>
@ -51,8 +49,8 @@
<string name="disrootUrl">https://disroot.org</string>
<string name="disroot"> * Disroot zajednica (Disroot):</string>
<string name="fDroid">F-Droid</string>
<string name="thirdparty">Biblioteke treće strane</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>
<string name="thirdParty">Biblioteke treće strane</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>
<string name="misc">Ostalo</string>
<string name="miscDio">Iskoristili smo Diolinx kao osnovu naše aplikacije. Proverite, to je takođe besplatan softver!</string>
<string name="miscDioBtn">Detaljnije</string>
@ -81,18 +79,14 @@
<string name="PadTitle">EtherPad detalji</string>
<string name="ChatTitle">XMPP podešavanja\n</string>
<string name="ChatInfo">Conversations je besplatna, otvorenog koda, decentralizovana i federativna aplikacija za brzo slanje poruka i ćaskanje sa pojedincima ili grupama.\n\nJabber ID :\n Vaša puna Disroot imejl adresa\n\nLozinka :\n Vaša Disroot lozinka</string>
<string name="CalcInfo">Pomoću EtherCalc-a možete grupno raditi na popisnim listama, anketnim formama, upravljanju listama, kreativnim sastancima i još mnogo čemu!\nRegistracija nije potrebna.</string>
<string name="CalcTitle">EtherCalc detalji</string>
<string name="CryptpadInfo">Pomoću Cryptpad-a možete grupno raditi na popisnim listama, anketnim formama, upravljanju listama, kreativnim sastancima i još mnogo čemu!\nRegistracija nije potrebna.</string>
<string name="CryptpadTitle">Cryptpad detalji</string>
<string name="BinTitle">PrivateBin pomoć</string>
<string name="BinInfo">PrivateBin je servis otvorenog koda, a služi kao \'korpa za odlaganje i deljenje\' i kao forum. Podaci se šifruju/dešifruju u pregledaču, što znači da server ne prepoznaje sadržaj pohranjenih datoteka. Nalepite tekst, kliknite “Pošalji”, odredite rok trajanja (i ostala obeležja) i podelite vezu.\nRegistracija nije potrebna.</string>
<string name="UploadTitle">Otpremi (servis pokreće Lufi) Info</string>
<string name="UploadInfo">Upload (Otpremi) je softver za privremeno i šifrovano skladištenje datoteka, koje pomoću veze možete podeliti sa drugima. Sve datoteke šifruju se pre slanja sa vašeg računara, što znači da server ne prepoznaje sadržaj pohranjenih datoteka.\nRegistracija nije potrebna.</string>
<string name="SearxTitle">Searx detalji</string>
<string name="SearxInfo">Searx je platforma za anonimno pretraživanje interneta, koja sakuplja rezultate sa drugih pretraživača, a pritom ne čuva podatke o svojim korisnicima. Nema praćenja, profiliranja i prikupljanja podataka od strane velikih korporacija. \nRegistracija nije potrebna.</string>
<string name="PollsTitle">Polls pomoć</string>
<string name="PollsInfo">Framadate je mrežni servis za planiranje sastanaka i pomaže da brzo i lako donosite odluke.\nRegistracija nije potrebna.</string>
<string name="BoardTitle">Upravljanje projektima - detalji</string>
<string name="BoardInfo">Taiga je alat za upravljanje projektima, namenjen programerima, dizajnerima i novonastalim preduzećima za moderno poslovanje. Međutim, može se primeniti i na bilo koji projekat ili grupu izvan IT sektora.</string>
<string name="UserTitle">Pomoć u vezi korisničke lozinke</string>
<string name="UserInfo">U našem korisničkom centru možete izmeniti vaše podatke i lozinku</string>
<string name="StateTitle">O stanju servisa</string>
@ -102,8 +96,6 @@
<string name="HowToInfo">Naša stranica sa uputstvima i vodičima pomoći će vam da se snađete sa različitim Disroot servisima.</string>
<string name="AboutTitle">O aplikaciji</string>
<string name="AboutInfo">Stranica sadrži kraći opis ove aplikacije.</string>
<string name="ForumTitle">O forumu</string>
<string name="ForumInfo">Discourse predstavlja otvoren i moderan pristup diskusijama na forumu. Nudi sve što je potrebno jednoj zajednici, grupi ili kolektivu, da uspostavi sopstvenu platformu za komunikaciju.</string>
<string name="LogoTitle">Zaista ste pokušali dužim pritiskom na logo?</string>
<string name="LogoInfo">Zašto? To je samo logo.\nRadoznalost je ubila mačku ;-)</string>
<string name="LogoBtn">Disroot je zakon \\o/</string>
@ -138,7 +130,7 @@
<string name="Cloud">Oblak</string>
<string name="PerformanceIssues">Problemi sa performansama</string>
<string name="Notification">Nema problema</string>
<string name="Notificationissues">Problemi u radu pojedinih servisa</string>
<string name="NotificationIssues">Problemi u radu pojedinih servisa</string>
<string name="state_messages_btn">Prikaži poruke o stanju servisa</string>
<string name="state_btn">Prikaži stanje servisa</string>
<string name="ScheduledAt">Zakazano za:</string>
@ -154,7 +146,6 @@
<string name="do_you_want_to_exit">Želite da izađete?</string>
<string name="action_optimization">Optimizacija baterije</string>
<string name="OptimizationTitle">Optimizacija baterije!</string>
<string name="action_board">Projektna tabla</string>
<string name="action_user">Nalog</string>
<string name="action_searx">Pretraga</string>
<string name="OptimizationInfo">Disroot aplikacija može sinhronizovati podatke sa statusnom stranicom sajta. To znači da možete dobijati obaveštenja u realnom vremenu o problemima, zastojima, planiranom održavanju i sl. objavama sa https://state.disroot.org\nPreporučujemo da isključite optimizaciju baterije i dozvolite Disroot aplikaciji rad u pozadini. Ako niste sigurni, podešavanja kasnije možete promeniti u meniju aplikacije.</string>
@ -179,4 +170,8 @@
<string name="translatorsTitle">Prevodioci:</string>
<string name="artworksTitle">Crteži:</string>
<string name="Fixed">Fixed</string>
<string name="down">Down</string>
<string name="more_info">Tap for more info</string>
<string name="info">info</string>
</resources>

View File

@ -1,4 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="info">info</string>
</resources>

View File

@ -4,15 +4,12 @@
<string name="action_mail">Mail</string>
<string name="action_cloud">Cloud</string>
<string name="action_diaspora">Diaspora*</string>
<string name="action_forum">Forum</string>
<string name="action_chat">Chat</string>
<string name="action_pad">Pad</string>
<string name="action_calc">Calc</string>
<string name="action_cryptpad">Cryptpad</string>
<string name="action_bin">Paste bin</string>
<string name="action_upload">Upload</string>
<string name="action_searx">Search</string>
<string name="action_poll">Polls</string>
<string name="action_board">Project board</string>
<string name="action_state">State</string>
<string name="action_howto">How to</string>
<string name="action_about">About</string>
@ -44,8 +41,8 @@
<string name="disrootUrl">https://disroot.org</string>
<string name="disroot"> * Disroot Community (Disroot):</string>
<string name="fDroid">F-Droid</string>
<string name="thirdparty">Third-Party Libraries</string>
<string name="thirdpartyText"><a href="https://github.com/cketti/ckChangeLog">ckChangelog: </a>Apache License 2.0\n\n<a href="https://github.com/wsdfhjxc/taponium/">Taponium: </a>GNU General Public License v3.0</string>
<string name="thirdParty">Third-Party Libraries</string>
<string name="thirdPartyText"><a href="https://github.com/cketti/ckChangeLog">ckChangelog: </a>Apache License 2.0\n\n<a href="https://github.com/wsdfhjxc/taponium/">Taponium: </a>GNU General Public License v3.0</string>
<string name="misc">Miscellaneous</string>
<string name="miscDio">We used Diolinux as our starting base to create this app. Go check it out, it\'s free software as well!</string>
<string name="miscDioBtn">Tell me more</string>
@ -67,36 +64,30 @@
<string name="SpreadTheWordBtn">Share the app</string>
<string name="DisrootWeb">Disroot web</string>
<string name="FirstTitle">Last couple of things!</string>
<string name="FirstInfo">&#8226; By doing a long press on each icon you can get extra information… \n\n&#8226; The app can sync with the status page of Disroot. This means that you will receive realtime updates on issues, downtimes, scheduled maintenace and others published via https://state.disroot.org\nWe recommend to turn off battery optimization and allow Disroot app to run in the background. If you\'re not sure, you can always change the setting from the Disroot app menu later.</string>
<string name="FirstInfo">&#8226; By doing a long press on each icon you can get extra information… \n\n&#8226; The app can sync with the status page of Disroot. This means that you will receive realtime updates on issues, downtimes, scheduled maintenance and others published via https://status.disroot.org\nWe recommend to turn off battery optimization and allow Disroot app to run in the background. If you\'re not sure, you can always change the setting from the Disroot app menu later.</string>
<string name="DiasporaTitle">Diaspora* Settings</string>
<string name="DiasporaInfo">Distributed and decentralized social network. Post, share, like, create communities.\n\nUsername:\n your_diaspora_username@pod.disroot.org\n\nPassword:\n your_diaspora_password</string>
<string name="PadInfo">With Etherpad write articles, press releases, to-do lists, etc. together with friends, fellow students or colleagues, all working on the same document at the same time.\nNo registration is required.</string>
<string name="PadTitle">EtherPad Info</string>
<string name="ChatTitle">XMPP Settings\n</string>
<string name="ChatInfo">Conversations is a free, standard and open-source decentralized and federated instant messaging application for chatting with contacts or within groups.\n\nJabber ID :\n Your full Disroot email address\n\nPassword :\n Your Disroot password</string>
<string name="CalcInfo">With EtherCalc work together on inventories, survey forms, list management, brainstorming sessions and more!\nNo registration is required.</string>
<string name="CalcTitle">EtherCalc Info</string>
<string name="CryptpadInfo">A private-by-design alternative to popular office tools.\nNo registration is required.</string>
<string name="CryptpadTitle">Cryptpad Info</string>
<string name="BinTitle">PrivateBin Help</string>
<string name="BinInfo">PrivateBin is an open-source online pastebin and discussion board. Data is encrypted/decrypted in the browser so that the server has zero knowledge of hosted data. Just paste a text, click “Send”, set expiration (and other features) and share the URL.\nNo registration is required.</string>
<string name="UploadTitle">Upload (powered by Lufi) Info</string>
<string name="UploadInfo">Upload is a file hosting software that temporarily stores encrypted files so you can share them with others using a link. All files are encrypted before they leave your computer meaning server has zero knowledge of hosted data.\nNo registration is required.</string>
<string name="SearxTitle">Searx Info</string>
<string name="SearxInfo">Searx is an anonymous multi search engine platform, aggregating the results of other search engines while not storing information about its users. No tracking, profiling, no data mining by big corporations. \nNo registration is required.</string>
<string name="PollsTitle">Polls Help</string>
<string name="PollsInfo">Framadate is an online service for planning an appointment or making a decision quickly and easily.\nNo registration is required.</string>
<string name="BoardTitle">Project Management Board Info</string>
<string name="BoardInfo">Taiga is a project management tool, developed for programmers, designers and startups working with agile methodology in mind. It can however be applied to virtually any project or group, even outside of IT realm.</string>
<string name="UserTitle">User Password Management Help</string>
<string name="UserInfo">Use our User Self Service Center to manage your user and password data</string>
<string name="StateTitle">State Info</string>
<string name="StateInfo">Page to see the current state of Disroot services. Here you can see if any service has a problem, if there are any performance issues, as well as get to know when we schedule maintenance in which time some services might be unavailable.\n\n<b>Alternative ways to get State updates:</b></string>
<string name="state_help">State on XMPP</string>
<string name="HowToTitle">How to Info</string>
<string name="HowToInfo">Our page with howtos and tutorials to help you find your way around the various Disroot services.</string>
<string name="HowToInfo">Our page with howto\'s and tutorials to help you find your way around the various Disroot services.</string>
<string name="AboutTitle">About Info</string>
<string name="AboutInfo">This is the about page of this app</string>
<string name="ForumTitle">Forum Help</string>
<string name="ForumInfo">Discourse is a fully open-source modern approach to discussion forums. It offers everything your community, group or collective needs to create their communication platform.</string>
<string name="LogoTitle">Did you really just try the long press on the logo?</string>
<string name="LogoInfo">Why? It\'s just a logo.\nDon\'t be too curious ;-)</string>
<string name="LogoBtn">Disroot rules \\o/</string>
@ -132,7 +123,7 @@
<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="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>
@ -159,7 +150,7 @@
<string name="deviceName">Device name:</string>
<string name="edit_apps_title">Show/hide apps</string>
<string name="settings">Settings</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; Calls\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="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; Cryptpad\n \ \ \ &#8226; Private bin\n \ \ \ &#8226; Upload\n \ \ \ &#8226; Searx\n \ \ \ &#8226; Calls\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="hide">Hide app</string>
<string name="dashboard">Dashboard</string>
<string name="action_calls">Calls</string>
@ -174,5 +165,8 @@
<string name="devsTitle">Developers:</string>
<string name="translatorsTitle">Translators:</string>
<string name="artworksTitle">Artwork:</string>
<string name="Fixed">Risolto</string>
<string name="Fixed">Solved</string>
<string name="down">Down</string>
<string name="more_info">Tap for more info</string>
<string name="info">info</string>
</resources>

View File

@ -1,5 +1,25 @@
<?xml version="1.0" encoding="utf-8"?>
<changelog>
<release version="2.0.8" versioncode="31" >
<change>Removal of Forum and Board</change>
<change>Correction of Disroot Calls variables</change>
</release>
<release version="2.0.7" versioncode="30" >
<change>Correction of informative state messages</change>
</release>
<release version="2.0.6" versioncode="29" >
<change>Corrected changelog</change>
</release>
<release version="2.0.5" versioncode="28" >
<change>Solved installed apps check for Android 11 and higher</change>
</release>
<release version="2.0.4" versioncode="27" >
<change>Migration to new cState "https://status.disroot.org"</change>
<change>Added Cryptpad and removed obsolete Calc + Polls</change>
<change>correction "need more help" link for notes</change>
<change>Solved installed apps check for Android 11 and higher</change>
<change>Updated SDK and gradle</change>
</release>
<release version="2.0.3" versioncode="26" >
<change>Changed to new git repo</change>
<change>Updated Constant variables with new git URL</change>
@ -20,12 +40,12 @@
</release>
<release version="1.2.3" versioncode="22" >
<change>Cleaned up code for better maintenance</change>
<change>Made Third party links klickable</change>
<change>Made Third party links clickable</change>
<change>Made application info fully translatable</change>
<change>Made Device info fully translatable</change>
</release>
<release version="1.2.2" versioncode="21" >
<change>Removed battery optimization promt on updates</change>
<change>Removed battery optimization prompt on updates</change>
<change>Corrected links in description in F-droid</change>
<change>Added Sr and De translations of the description in F-Droid</change>
<change>Spanish en German translation updated</change>
@ -79,7 +99,7 @@
<change>A few other small fixes</change>
</release>
<release version="1.0.2" versioncode="12" >
<change>Third partie cookies disabled</change>
<change>Third party cookies disabled</change>
<change>Fixed French translation</change>
<change>Added more clear dialogs for additional apps</change>
</release>

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<data-extraction-rules>
<cloud-backup>
</cloud-backup>
</data-extraction-rules>

View File

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

View File

@ -1,6 +1,6 @@
#Fri Oct 28 07:31:51 CEST 2022
distributionBase=GRADLE_USER_HOME
distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-bin.zip
distributionPath=wrapper/dists
distributionSha256Sum=9af7345c199f1731c187c96d3fe3d31f5405192a42046bafa71d846c3d9adacb
distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME

View File

@ -2,10 +2,9 @@
Diese App ist Dein Schweizer Taschenmesser für die Disroot-Plattform, von der Gemeinschaft für die Gemeinschaft.
Auch wenn Du keinen Disroot-Account hast, kannst Du diese App benutzen, um auf alle Disroot-Dienste zuzugreifen, die keinen Account benötigen:
* Etherpad
* Ethercalc
* Cryptpad
* Private bin
* Upload
* Poll
* Searx
* Calls

View File

@ -2,10 +2,9 @@
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:
* Etherpad
* Ethercalc
* Cryptpad
* Private bin
* Upload
* Poll
* Searx
* Calls

View File

@ -2,7 +2,7 @@
Esta aplicación es como la navaja suiza de la plataforma <b>Disroot</b>, hecha por la comunidad para la comunidad.
Si no tienes una cuenta de <b>Disroot</b> igual puedes utilizar esta aplicación para acceder a todos los servicios que no la requieren:
* Etherpad
* Ethercalc
* Cryptpad
* Private bin
* Subir archivos
* Encuestas

View File

@ -2,10 +2,9 @@
Cette application est comme votre couteau suisse sur la plateforme Disroot, faite par la communauté pour la communauté.
Si vous n'avez pas de compte Disroot, vous pouvez toujours utiliser cette application pour accéder à tous les services Disroot qui ne nécessitent pas de compte :
* Etherpad
* Ethercalc
* Cryptpad
* Private bin
* Upload (Téléverser)
* Poll (Sondage)
* Searx
* Calls

View File

@ -2,10 +2,9 @@
Questa applicazione è come il tuo coltellino svizzero per la piattaforma Disroot, realizzata dalla comunità per la comunità.
Se non si dispone di un account Disroot è comunque possibile utilizzare questa applicazione per accedere a tutti i servizi Disroot che non richiedono un account:
* Etherpad
* Ethercalc
* Cryptpad
* Private bin
* Upload
* Poll
* Searx
* Calls

View File

@ -2,10 +2,9 @@
Deze app is als uw Zwitsers legermes voor het Disroot-platform, gemaakt door de gemeenschap voor de gemeenschap.
Als u geen Disroot account heeft kunt u deze app nog steeds gebruiken om toegang te krijgen tot alle Disroot diensten die geen account nodig hebben:
* Etherpad
* Ethercalc
* Cryptpad
* Private bin
* Upload
* Poll
* Searx
* Calls

View File

@ -2,10 +2,9 @@
Ova aplikacija je višenamenska alatka za Disroot platformu, koju su članovi zajednice napravili za zajednicu.
Ako nemate nalog na Disroot platformi, možete koristiti ovu aplikaciju za pristup svim Disroot uslugama za koje nije potreban nalog:
* Etherpad
* Ethercalc
* Cryptpad
* Private bin
* Upload
* Poll
* Searx
* Diaspora* (potreban zaseban Diaspora nalog)