From 33356660c0bd712a02ee7fd05ba77dcf871b0027 Mon Sep 17 00:00:00 2001
From: massimiliano <massimiliano@disroot.org>
Date: Sun, 25 Nov 2018 11:54:36 +0100
Subject: [PATCH] State page using api's instead of webview

---
 .idea/caches/build_file_checksums.ser         | Bin 534 -> 534 bytes
 app/build.gradle                              |   4 +
 app/src/main/AndroidManifest.xml              |  32 +--
 .../disroot/disrootapp/ui/MainActivity.java   |   8 +-
 .../disroot/disrootapp/ui/StateActivity.java  | 203 ++++++++++++++++++
 .../disroot/disrootapp/utils/HttpHandler.java |  66 ++++++
 app/src/main/res/layout/activity_state.xml    |  35 +++
 app/src/main/res/layout/list_item.xml         |  38 ++++
 app/src/main/res/values-es/strings.xml        |   1 +
 app/src/main/res/values-fr/strings.xml        |   1 +
 app/src/main/res/values-it/strings.xml        |   1 +
 app/src/main/res/values-nl/strings.xml        |   1 +
 app/src/main/res/values-pt/strings.xml        |   1 +
 app/src/main/res/values-sr/strings.xml        |   1 +
 app/src/main/res/values/strings.xml           |   4 +-
 app/src/main/res/values/styles.xml            |  12 +-
 16 files changed, 384 insertions(+), 24 deletions(-)
 create mode 100644 app/src/main/java/org/disroot/disrootapp/ui/StateActivity.java
 create mode 100644 app/src/main/java/org/disroot/disrootapp/utils/HttpHandler.java
 create mode 100644 app/src/main/res/layout/activity_state.xml
 create mode 100644 app/src/main/res/layout/list_item.xml

diff --git a/.idea/caches/build_file_checksums.ser b/.idea/caches/build_file_checksums.ser
index 4eeba38c66b08b55b0ce8de5ffd3305e2242821a..c83edae13c0e9cb50e4622f8bd7551f9d70d30be 100644
GIT binary patch
delta 33
rcmV++0N($W1eOGlm;_20+o7?XX#o+9<doh7k?t$D`ss&-(7il(`gjn3

delta 33
rcmV++0N($W1eOGlm;^GH)()|pX#o-N%YoptL-c8Y`4s;Os;v8X`|l8>

diff --git a/app/build.gradle b/app/build.gradle
index ee2693a..a9b8807 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -44,3 +44,7 @@ dependencies {
 repositories {
     mavenCentral()
 }
+
+dependencies {
+    implementation 'com.android.support.constraint:constraint-layout:+'
+}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index f7fa6ce..d15645f 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -4,20 +4,19 @@
 
     <uses-permission android:name="android.permission.INTERNET" />
     <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
-    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
-    <uses-permission android:name="android.permission.CAMERA"/>
-
+    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
+    <uses-permission android:name="android.permission.CAMERA" />
 
     <application
+        android:allowBackup="true"
+        android:fullBackupContent="@xml/backup_descriptor"
         android:hardwareAccelerated="true"
         android:icon="@mipmap/ic_disroot"
         android:label="@string/app_name"
-        android:theme="@style/DisTheme"
         android:supportsRtl="true"
-        android:allowBackup="true"
-        android:fullBackupContent="@xml/backup_descriptor">
+        android:theme="@style/DisTheme">
         <activity
-            android:name="org.disroot.disrootapp.ui.SplashScreenActivity"
+            android:name=".ui.SplashScreenActivity"
             android:configChanges="orientation|screenSize"
             android:label="@string/app_name">
             <intent-filter>
@@ -27,7 +26,7 @@
             </intent-filter>
         </activity>
         <activity
-            android:name="org.disroot.disrootapp.ui.MainActivity"
+            android:name=".ui.MainActivity"
             android:configChanges="orientation|screenSize"
             android:hardwareAccelerated="true"
             android:label="@string/app_name">
@@ -43,23 +42,24 @@
             </intent-filter>
         </activity>
         <activity
-            android:name="org.disroot.disrootapp.ui.AboutActivity"
+            android:name=".ui.AboutActivity"
             android:label="@string/title_activity_about"
             android:theme="@style/DisTheme" />
-        <activity android:name="org.disroot.disrootapp.ui.WelcomeActivity" />
-
-
+        <activity android:name=".ui.WelcomeActivity" />
         <activity
             android:name="wsdfhjxc.taponium.MainActivity"
-            android:screenOrientation="portrait"
-            android:label="@string/title_activity_tap">
+            android:label="@string/title_activity_tap"
+            android:screenOrientation="portrait">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
+
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
         </activity>
-
-
+        <activity
+            android:name=".ui.StateActivity"
+            android:label="@string/title_activity_state"
+            android:theme="@style/DisTheme"></activity>
     </application>
 
 </manifest>
\ No newline at end of file
diff --git a/app/src/main/java/org/disroot/disrootapp/ui/MainActivity.java b/app/src/main/java/org/disroot/disrootapp/ui/MainActivity.java
index 1ef56f7..27e914d 100644
--- a/app/src/main/java/org/disroot/disrootapp/ui/MainActivity.java
+++ b/app/src/main/java/org/disroot/disrootapp/ui/MainActivity.java
@@ -518,6 +518,7 @@ public class MainActivity extends AppCompatActivity implements View.OnLongClickL
         });
         button.setOnClickListener(new View.OnClickListener() {
             public void onClick(View arg0) {
+                Intent goState = new Intent(MainActivity.this, StateActivity.class);
                 //first time tap check
                 if (firstStart.getBoolean("firsttap", true)){
                     showFirstTap();
@@ -525,9 +526,10 @@ public class MainActivity extends AppCompatActivity implements View.OnLongClickL
                     return;
                 }
                 else
-                webView.loadUrl(Constants.URL_DisApp_STATE);
-                webView.setVisibility(View.VISIBLE);
-                dashboard.setVisibility(View.GONE);
+                MainActivity.this.startActivity(goState);
+                //webView.loadUrl(Constants.URL_DisApp_STATE);
+                //webView.setVisibility(View.VISIBLE);
+                //dashboard.setVisibility(View.GONE);
             }
 
         });
diff --git a/app/src/main/java/org/disroot/disrootapp/ui/StateActivity.java b/app/src/main/java/org/disroot/disrootapp/ui/StateActivity.java
new file mode 100644
index 0000000..2289324
--- /dev/null
+++ b/app/src/main/java/org/disroot/disrootapp/ui/StateActivity.java
@@ -0,0 +1,203 @@
+package org.disroot.disrootapp.ui;
+
+import android.annotation.SuppressLint;
+import android.app.ProgressDialog;
+import android.os.AsyncTask;
+import android.os.Bundle;
+import android.support.v7.app.AppCompatActivity;
+import android.support.v7.widget.Toolbar;
+import android.util.Log;
+import android.view.View;
+import android.widget.ListAdapter;
+import android.widget.ListView;
+import android.widget.SimpleAdapter;
+import android.widget.Toast;
+
+import org.disroot.disrootapp.R;
+import org.disroot.disrootapp.utils.HttpHandler;
+import org.json.JSONArray;
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+
+public class StateActivity extends AppCompatActivity {
+
+    private String TAG = MainActivity.class.getSimpleName();
+
+    private ProgressDialog pDialog;
+    private ListView lv;
+
+    // URL to get data JSON
+    static String url = "https://state.disroot.org/api/v1/components";
+    static String url1 = "https://state.disroot.org/api/v1/components?page=2";
+
+    ArrayList<HashMap<String, String>> stateList;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_state);
+
+        Toolbar toolbar = findViewById(R.id.toolbar);
+        setSupportActionBar(toolbar);
+        toolbar.setNavigationIcon(R.drawable.ic_arrow_back);
+        toolbar.setNavigationOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                onBackPressed();
+            }
+        });
+
+        stateList = new ArrayList<>();
+
+        lv = findViewById(R.id.list);
+
+        new GetList().execute();
+    }
+
+    /**
+     * Async task class to get json by making HTTP call
+     */
+    @SuppressLint("StaticFieldLeak")
+    class GetList extends AsyncTask<Void, Void, Void> {
+
+        @Override
+        protected void onPreExecute() {
+            super.onPreExecute();
+            // Showing progress dialog
+            pDialog = new ProgressDialog(StateActivity.this);
+            pDialog.setMessage("Please wait...");
+            pDialog.setCancelable(false);
+            pDialog.show();
+        }
+
+        @Override
+        protected Void doInBackground(Void... arg0) {
+            HttpHandler sh = new HttpHandler();
+
+            // Making a request to url and getting response
+            String jsonStr0 = sh.makeServiceCall(url);
+            String jsonStr1 = sh.makeServiceCall(url1);
+
+            Log.e(TAG, "Response from url: " + jsonStr0);
+
+            if (jsonStr0 != null) {
+                try {
+                    JSONObject jsonObj = new JSONObject(jsonStr0);
+
+                    // Getting JSON Array node
+                    JSONArray data = jsonObj.getJSONArray("data");
+
+                    // looping through All data
+                    for (int i = 0; i < data.length(); i++) {
+                        JSONObject c = data.getJSONObject(i);
+
+                        String id = c.getString("id");
+                        String name = c.getString("name");
+                        String description = c.getString("description");
+                        String updated_at = c.getString("updated_at");
+                        String 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", updated_at);
+                        service.put("status_name", status_name);
+
+                        // adding service to service list
+                        stateList.add(service);
+                    }
+                } catch (final JSONException e) {
+                    Log.e(TAG, "Json parsing error: " + e.getMessage());
+                    runOnUiThread(new Runnable() {
+                        @Override
+                        public void run() {
+                            Toast.makeText(getApplicationContext(),
+                                    "Json parsing error: " + e.getMessage(),
+                                    Toast.LENGTH_LONG)
+                                    .show();
+                        }
+                    });
+                }
+            }if (jsonStr1 != null) {//next page
+                try {
+                    JSONObject jsonObj = new JSONObject(jsonStr1);
+
+                    // Getting JSON Array node
+                    JSONArray data = jsonObj.getJSONArray("data");
+
+                    // looping through All data
+                    for (int i = 0; i < data.length(); i++) {
+                        JSONObject c = data.getJSONObject(i);
+
+                        String id = c.getString("id");
+                        String name = c.getString("name");
+                        String description = c.getString("description");
+                        String updated_at = c.getString("updated_at");
+                        String 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", updated_at);
+                        service.put("status_name", status_name);
+
+                        // adding service to service list
+                        stateList.add(service);
+                    }
+                } catch (final JSONException e) {
+                    Log.e(TAG, "Json parsing error: " + e.getMessage());
+                    runOnUiThread(new Runnable() {
+                        @Override
+                        public void run() {
+                            Toast.makeText(getApplicationContext(),
+                                    "Json parsing error: " + e.getMessage(),
+                                    Toast.LENGTH_LONG)
+                                    .show();
+                        }
+                    });
+                }
+            } else {
+                Log.e(TAG, "Couldn't get json from server.");
+                runOnUiThread(new Runnable() {
+                    @Override
+                    public void run() {
+                        Toast.makeText(getApplicationContext(),
+                                "Couldn't get json from server. Check LogCat for possible errors!",
+                                Toast.LENGTH_LONG)
+                                .show();
+                    }
+                });
+            }
+            return null;
+        }
+
+        @Override
+        protected void onPostExecute(Void result) {
+            super.onPostExecute(result);
+            // Dismiss the progress dialog
+            if (pDialog.isShowing())
+                pDialog.dismiss();
+
+
+             //Updating parsed JSON data into ListView
+
+            ListAdapter adapter = new SimpleAdapter(
+                    StateActivity.this, stateList,
+                    R.layout.list_item, new String[]{"name", "description", "updated_at",
+                    "status_name"}, new int[]{R.id.name,
+                    R.id.description,R.id.updated_at, R.id.status_name});
+            lv.setAdapter(adapter);
+        }
+    }
+}
\ No newline at end of file
diff --git a/app/src/main/java/org/disroot/disrootapp/utils/HttpHandler.java b/app/src/main/java/org/disroot/disrootapp/utils/HttpHandler.java
new file mode 100644
index 0000000..b8ffdbd
--- /dev/null
+++ b/app/src/main/java/org/disroot/disrootapp/utils/HttpHandler.java
@@ -0,0 +1,66 @@
+package org.disroot.disrootapp.utils;
+import android.util.Log;
+
+import java.io.BufferedInputStream;
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.net.HttpURLConnection;
+import java.net.MalformedURLException;
+import java.net.ProtocolException;
+import java.net.URL;
+
+/**
+ * Created by Ravi Tamada on 01/09/16.
+ * www.androidhive.info
+ */
+public class HttpHandler {
+
+    private static final String TAG = HttpHandler.class.getSimpleName();
+
+    public HttpHandler() {
+    }
+
+    public String makeServiceCall(String reqUrl) {
+        String response = null;
+        try {
+            URL url = new URL(reqUrl);
+            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
+            conn.setRequestMethod("GET");
+            // read the response
+            InputStream in = new BufferedInputStream(conn.getInputStream());
+            response = convertStreamToString(in);
+        } catch (MalformedURLException e) {
+            Log.e(TAG, "MalformedURLException: " + e.getMessage());
+        } catch (ProtocolException e) {
+            Log.e(TAG, "ProtocolException: " + e.getMessage());
+        } catch (IOException e) {
+            Log.e(TAG, "IOException: " + e.getMessage());
+        } catch (Exception e) {
+            Log.e(TAG, "Exception: " + e.getMessage());
+        }
+        return response;
+    }
+
+    private String convertStreamToString(InputStream is) {
+        BufferedReader reader = new BufferedReader(new InputStreamReader(is));
+        StringBuilder sb = new StringBuilder();
+
+        String line;
+        try {
+            while ((line = reader.readLine()) != null) {
+                sb.append(line).append('\n');
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+        } finally {
+            try {
+                is.close();
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+        }
+        return sb.toString();
+    }
+}
diff --git a/app/src/main/res/layout/activity_state.xml b/app/src/main/res/layout/activity_state.xml
new file mode 100644
index 0000000..f08a549
--- /dev/null
+++ b/app/src/main/res/layout/activity_state.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:orientation="vertical"
+    tools:context=".ui.StateActivity">
+
+    <android.support.design.widget.AppBarLayout
+        android:id="@+id/appbar"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:paddingTop="@dimen/appbar_padding_top"
+        android:theme="@style/DisTheme.AppBarOverlay">
+
+    <android.support.v7.widget.Toolbar
+        android:id="@+id/toolbar"
+        android:layout_width="match_parent"
+        android:layout_height="?attr/actionBarSize"
+        android:layout_weight="1"
+        android:background="?attr/colorPrimary"
+        app:layout_scrollFlags="scroll|enterAlways"
+        app:popupTheme="@style/DisTheme.PopupOverlay"
+        app:title="@string/app_name">
+
+    </android.support.v7.widget.Toolbar>
+    </android.support.design.widget.AppBarLayout>
+    <ListView
+        android:id="@+id/list"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:background="#203140"/>
+
+</LinearLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/list_item.xml b/app/src/main/res/layout/list_item.xml
new file mode 100644
index 0000000..31c1078
--- /dev/null
+++ b/app/src/main/res/layout/list_item.xml
@@ -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/updated_at"
+        android:layout_width="fill_parent"
+        android:layout_height="wrap_content"
+        android:paddingBottom="2dip"
+        android:textColor="#ffffff"/>
+
+    <TextView
+        android:id="@+id/status_name"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:textColor="#49e13f"
+        android:textStyle="bold" />
+</LinearLayout>
diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml
index 561ed82..4b8167d 100644
--- a/app/src/main/res/values-es/strings.xml
+++ b/app/src/main/res/values-es/strings.xml
@@ -135,5 +135,6 @@
     <string name="MailDialog">Para continuar, primero necesitas instalar K9-Mail.\nPor favor, selecciona Instalar para continuar desde F-Droid.</string>
     <string name="CloudDialog">Para continuar, primero necesitas instalar la app de Nextcloud.\nPor favor, selecciona Instalar para continuar desde F-Droid.</string>
     <string name="ChatDialog">Para continuar, primero necesitas instalar Conversations.\nPor favor, selecciona Instalar para continuar desde F-Droid.</string>
+    <string name="app_state">Disroot state</string>
 
 </resources>
diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml
index 6ed74d7..4f1a5b6 100644
--- a/app/src/main/res/values-fr/strings.xml
+++ b/app/src/main/res/values-fr/strings.xml
@@ -164,5 +164,6 @@
     <string name="MailDialog">Pour continuer, vous devez d\'abord installer K9-Mail.\nVeuillez sélectionner Installer pour continuer l\'installation avec F-Droid.</string>
     <string name="CloudDialog">Pour continuer, vous devez d\'abord installer l\'application Nextcloud.\nVeuillez sélectionner Installer pour continuer l\'installation avec F-Droid.</string>
     <string name="ChatDialog">Pour continuer, vous devez d\'abord installer Conversations.\nVeuillez sélectionner Installer pour continuer l\'installation avec F-Droid.</string>
+    <string name="app_state">Disroot state</string>
 
 </resources>
diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml
index 85cec92..d786ea6 100644
--- a/app/src/main/res/values-it/strings.xml
+++ b/app/src/main/res/values-it/strings.xml
@@ -134,5 +134,6 @@
     <string name="MailDialog">Per continuare è necessario installare K9-Mail.\nSelezionate installa per continuare con l\'installazione su F-Droid.</string>
     <string name="CloudDialog">Per continuare è necessario installare la app di Nextcloud.\nSelezionate installa per continuare con l\'installazione su F-Droid.</string>
     <string name="ChatDialog">Per continuare è necessario installare Conversations.\nSelezionate installa per continuare con l\'installazione su F-Droid.</string>
+    <string name="app_state">Disroot state</string>
 
 </resources>
diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml
index 254bb80..23e36a9 100644
--- a/app/src/main/res/values-nl/strings.xml
+++ b/app/src/main/res/values-nl/strings.xml
@@ -135,5 +135,6 @@
     <string name="MailDialog">Om verder te gaan moet u eerst K9-Mail installeren.\nSelecteer Installeren om verder te gaan met de installatie op F-Droid.</string>
     <string name="CloudDialog">Om verder te gaan moet u eerst Nextcloud app installeren.\nSelecteer Installeren om verder te gaan met de installatie op F-Droid.</string>
     <string name="ChatDialog">Om verder te gaan moet u eerst Conversations installeren.\nSelecteer Installeren om verder te gaan met de installatie op F-Droid.</string>
+    <string name="app_state">Disroot state</string>
 
 </resources>
diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml
index 2e85bf3..6636e99 100644
--- a/app/src/main/res/values-pt/strings.xml
+++ b/app/src/main/res/values-pt/strings.xml
@@ -134,5 +134,6 @@
     <string name="MailDialog">To continue you need to install K9-Mail first.\nPlease select install to continue with the installatin on F-Droid.</string>
     <string name="CloudDialog">To continue you need to install the Nextcloud app first.\nPlease select install to continue with the installatin on F-Droid.</string>
     <string name="ChatDialog">To continue you need to install Conversations first.\nPlease select install to continue with the installatin on F-Droid.</string>
+    <string name="app_state">Disroot state</string>
 
 </resources>
diff --git a/app/src/main/res/values-sr/strings.xml b/app/src/main/res/values-sr/strings.xml
index 8e39f3a..6703ec5 100644
--- a/app/src/main/res/values-sr/strings.xml
+++ b/app/src/main/res/values-sr/strings.xml
@@ -135,5 +135,6 @@
     <string name="MailDialog">To continue you need to install K9-Mail first.\nPlease select install to continue with the installatin on F-Droid.</string>
     <string name="CloudDialog">To continue you need to install the Nextcloud app first.\nPlease select install to continue with the installatin on F-Droid.</string>
     <string name="ChatDialog">To continue you need to install Conversations first.\nPlease select install to continue with the installatin on F-Droid.</string>
+    <string name="app_state">Disroot state</string>
 
 </resources>
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 3f4cb0d..64c41e4 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -44,7 +44,7 @@
     <string name="licenseTitle">License</string>
     <string name="license_button">GNU LGPLv3.0 License</string>
 
-    <string translatable="false" name="licenseText">Copyright © 2007 Free Software Foundation, Inc.\n
+    <string name="licenseText" translatable="false">Copyright © 2007 Free Software Foundation, Inc.\n
         This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, version 3 of the License only.\n\n
         This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more details.
     </string>
@@ -134,5 +134,7 @@
     <string name="MailDialog">To continue you need to install K9-Mail first.\nPlease select install to continue with the installatin on F-Droid.</string>
     <string name="CloudDialog">To continue you need to install the Nextcloud app first.\nPlease select install to continue with the installatin on F-Droid.</string>
     <string name="ChatDialog">To continue you need to install Conversations first.\nPlease select install to continue with the installatin on F-Droid.</string>
+    <string name="title_activity_state">StateActivity</string>
+    <string name="app_state">Disroot state</string>
 
 </resources>
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index 64e14c0..91fa2b0 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -14,19 +14,23 @@
 
     <style name="Widget.MyApp.ActionBar" parent="Widget.AppCompat.ActionBar">
         <item name="theme">@style/ThemeOverlay.MyApp.ActionBar</item>
-        <item name="popupTheme">@style/ThemeOverlay.AppCompat.Dark</item> <!--change theme for actionbar poupmenu-->
+        <item name="popupTheme">@style/ThemeOverlay.AppCompat.Dark
+        </item> <!--change theme for actionbar poupmenu-->
     </style>
 
     <style name="ThemeOverlay.MyApp.ActionBar" parent="ThemeOverlay.AppCompat.Dark.ActionBar">
         <item name="android:textColorPrimary">@android:color/white</item>
-        <item name="android:actionMenuTextColor">@android:color/white</item><!--<item name="android:textSize">18sp</item>-->
+        <item name="android:actionMenuTextColor">@android:color/white
+        </item><!--<item name="android:textSize">18sp</item>-->
     </style>
 
     <style name="DisTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />
 
     <style name="DisTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />
+
     <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
-    <!-- Customize your theme here. -->
-        <item name="cardViewStyle">@style/CardView</item></style>
+        <!-- Customize your theme here. -->
+        <item name="cardViewStyle">@style/CardView</item>
+    </style>
 
 </resources>
-- 
GitLab