diff --git a/app/build.gradle b/app/build.gradle index 7900c572..0d1e638c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,4 +1,5 @@ apply plugin: 'com.android.application' +apply plugin: 'android-apt' android { compileSdkVersion 23 @@ -34,6 +35,8 @@ dependencies { compile 'com.android.support:support-v4:23.3.0' // More libraries - compile 'com.jakewharton:butterknife:7.0.1' compile 'com.getbase:floatingactionbutton:1.9.1' + compile 'com.jakewharton:butterknife:8.0.1' + apt 'com.jakewharton:butterknife-compiler:8.0.1' + } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index e4ca42a7..9fe46480 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -26,7 +26,7 @@ 4 && filter.getText().toString().contains("")) - askConfirmation(filter.getText().toString()); - else - Snackbar.make(lv, R.string.valid_pod, Snackbar.LENGTH_LONG).show(); - } - }); - podListReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { @@ -89,9 +85,6 @@ public class PodsActivity extends AppCompatActivity { Bundle extras = intent.getExtras(); String[] pods = extras.getStringArray("pods"); - if (progressDialog != null) - progressDialog.dismiss(); - if (pods != null && pods.length > 0) updateListview(pods); else { @@ -103,37 +96,38 @@ public class PodsActivity extends AppCompatActivity { registerReceiver(podListReceiver, new IntentFilter(GetPodsService.MESSAGE)); - progressDialog = new ProgressDialog(PodsActivity.this); - progressDialog.setCancelable(false); - progressDialog.setIndeterminate(true); - progressDialog.setMessage(getString(R.string.loading_podlist)); - - if (Helpers.isOnline(PodsActivity.this)) { - progressDialog.show(); - } else { + if (!Helpers.isOnline(PodSelectionActivity.this)) { Snackbar.make(lv, R.string.no_internet, Snackbar.LENGTH_LONG).show(); } + } + @OnClick(R.id.podselection__button_select_pod) + public void onButtonSelectPodClicked(View view) { + if (filter.getText().length() > 4 && filter.getText().toString().contains("")) { + askConfirmation(filter.getText().toString()); + } else { + Snackbar.make(lv, R.string.valid_pod, Snackbar.LENGTH_LONG).show(); + } } @Override protected void onResume() { super.onResume(); - Intent i = new Intent(PodsActivity.this, GetPodsService.class); + Intent i = new Intent(PodSelectionActivity.this, GetPodsService.class); startService(i); } - private void updateListview(String[] source) { + private void updateListview(String[] allPods) { final ArrayList podList = new ArrayList<>(); - for (String aSource : source) { - podList.add(aSource.toLowerCase()); + for (String pod : allPods) { + podList.add(pod.toLowerCase()); } - Collections.sort(podList); + //Collections.sort(podList); final ArrayAdapter adapter = new ArrayAdapter<>( - PodsActivity.this, + PodSelectionActivity.this, android.R.layout.simple_list_item_1, podList); lv.setAdapter(adapter); @@ -150,55 +144,36 @@ public class PodsActivity extends AppCompatActivity { public void onTextChanged(CharSequence s, int start, int before, int count) { (adapter).getFilter().filter(s.toString()); } - - @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } - - @Override public void afterTextChanged(Editable s) { } }); - } private void askConfirmation(final String podDomain) { - if (Helpers.isOnline(PodsActivity.this)) { - new AlertDialog.Builder(PodsActivity.this) + podSelected = podDomain; + + // Make link clickable + final SpannableString dialogMessage = new SpannableString(getString(R.string.confirm_pod, podDomain)); + Linkify.addLinks(dialogMessage, Linkify.ALL); + + if (Helpers.isOnline(PodSelectionActivity.this)) { + new AlertDialog.Builder(PodSelectionActivity.this) .setTitle(getString(R.string.confirmation)) - .setMessage(getString(R.string.confirm_pod) + podDomain + "?") + .setMessage(dialogMessage) .setPositiveButton(R.string.yes, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { - - app.getSettings().setPodDomain(podDomain); - - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { - try { - CookieManager.getInstance().removeAllCookies(null); - CookieManager.getInstance().removeSessionCookies(null); - } catch (Exception e) { - e.printStackTrace(); - } - } else { - try { - CookieManager.getInstance().removeAllCookie(); - CookieManager.getInstance().removeSessionCookie(); - } catch (Exception e) { - e.printStackTrace(); - } - } - - Intent i = new Intent(PodsActivity.this, MainActivity.class); dialog.cancel(); - startActivity(i); - finish(); + onPodSelectionConfirmed(); } }) .setNegativeButton(R.string.no, new DialogInterface.OnClickListener() { @TargetApi(11) public void onClick(DialogInterface dialog, int id) { dialog.cancel(); + podSelected = ""; } }).show(); @@ -207,18 +182,41 @@ public class PodsActivity extends AppCompatActivity { } } + public void onPodSelectionConfirmed(){ + app.getSettings().setPodDomain(podSelected); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + try { + CookieManager.getInstance().removeAllCookies(null); + CookieManager.getInstance().removeSessionCookies(null); + } catch (Exception e) { + e.printStackTrace(); + } + } else { + try { + CookieManager.getInstance().removeAllCookie(); + CookieManager.getInstance().removeSessionCookie(); + } catch (Exception e) { + e.printStackTrace(); + } + } + + Intent intent = new Intent(PodSelectionActivity.this, MainActivity.class); + intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); + startActivity(intent); + overridePendingTransition(R.anim.fadein, R.anim.fadeout); + finish(); + } + @Override public void onBackPressed() { - Snackbar snackbar = Snackbar - .make(lv, R.string.confirm_exit, Snackbar.LENGTH_LONG) + Snackbar.make(lv, R.string.confirm_exit, Snackbar.LENGTH_LONG) .setAction(R.string.yes, new View.OnClickListener() { - @Override public void onClick(View view) { moveTaskToBack(true); } - }); - snackbar.show(); + }) + .show(); } @Override @@ -235,20 +233,18 @@ public class PodsActivity extends AppCompatActivity { @Override public boolean onOptionsItemSelected(MenuItem item) { - int id = item.getItemId(); - - if (id == R.id.action_reload) { - if (Helpers.isOnline(PodsActivity.this)) { - progressDialog.show(); - Intent i = new Intent(PodsActivity.this, GetPodsService.class); - startService(i); - return true; - } else { - Snackbar.make(lv, R.string.no_internet, Snackbar.LENGTH_LONG).show(); - return false; + switch (item.getItemId()) { + case R.id.action_reload: { + if (Helpers.isOnline(PodSelectionActivity.this)) { + Intent i = new Intent(PodSelectionActivity.this, GetPodsService.class); + startService(i); + return true; + } else { + Snackbar.make(lv, R.string.no_internet, Snackbar.LENGTH_LONG).show(); + return false; + } } } - return super.onOptionsItemSelected(item); } diff --git a/app/src/main/java/com/github/dfa/diaspora_android/activity/SplashActivity.java b/app/src/main/java/com/github/dfa/diaspora_android/activity/SplashActivity.java index 176e4ec4..ac93bdbd 100644 --- a/app/src/main/java/com/github/dfa/diaspora_android/activity/SplashActivity.java +++ b/app/src/main/java/com/github/dfa/diaspora_android/activity/SplashActivity.java @@ -22,6 +22,7 @@ package com.github.dfa.diaspora_android.activity; import android.content.Intent; import android.content.res.TypedArray; import android.os.Bundle; +import android.os.Handler; import android.support.v7.app.AppCompatActivity; import android.view.WindowManager; import android.widget.ImageView; @@ -39,33 +40,34 @@ public class SplashActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, - WindowManager.LayoutParams.FLAG_FULLSCREEN); - setContentView(R.layout.activity_splash); + setContentView(R.layout.splash_activity); app = (App) getApplication(); - ImageView imgSplash = (ImageView) findViewById(R.id.imgSplash); + ImageView imgSplash = (ImageView) findViewById(R.id.splash__splashimage); TypedArray images = getResources().obtainTypedArray(R.array.splash_images); int choice = (int) (Math.random() * images.length()); imgSplash.setImageResource(images.getResourceId(choice, R.drawable.splashscreen1)); images.recycle(); - - Timer timer = new Timer(); - timer.schedule(new TimerTask() { + int delay = getResources().getInteger(R.integer.splash_delay); + Handler handler = new Handler(); + handler.postDelayed(new Runnable() { @Override public void run() { - Intent i; + + Intent intent; if (!app.getSettings().getPodDomain().equals("")) { - i = new Intent(SplashActivity.this, MainActivity.class); + intent = new Intent(SplashActivity.this, MainActivity.class); } else { - i = new Intent(SplashActivity.this, PodsActivity.class); + intent = new Intent(SplashActivity.this, PodSelectionActivity.class); } - startActivity(i); + intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); + startActivity(intent); + overridePendingTransition(R.anim.fadein, R.anim.fadeout); finish(); } - }, 2000); + }, delay); } diff --git a/app/src/main/java/com/github/dfa/diaspora_android/task/GetPodsService.java b/app/src/main/java/com/github/dfa/diaspora_android/task/GetPodsService.java index c07c5a5d..43822a24 100644 --- a/app/src/main/java/com/github/dfa/diaspora_android/task/GetPodsService.java +++ b/app/src/main/java/com/github/dfa/diaspora_android/task/GetPodsService.java @@ -97,15 +97,13 @@ public class GetPodsService extends Service { } //Parse the JSON Data try { - JSONObject j = new JSONObject(builder.toString()); - JSONArray jr = j.getJSONArray("pods"); - Log.d(TAG, "Number of entries " + jr.length()); + JSONObject jsonObjectAll = new JSONObject(builder.toString()); + JSONArray jsonArrayAll = jsonObjectAll.getJSONArray("pods"); + Log.d(TAG, "Number of entries " + jsonArrayAll.length()); list = new ArrayList<>(); - for (int i = 0; i < jr.length(); i++) { - JSONObject jo = jr.getJSONObject(i); - Log.d(TAG, jo.getString("domain")); - String secure = jo.getString("secure"); - if (secure.equals("true")) + for (int i = 0; i < jsonArrayAll.length(); i++) { + JSONObject jo = jsonArrayAll.getJSONObject(i); + if (jo.getString("secure").equals("true")) list.add(jo.getString("domain")); } diff --git a/app/src/main/java/com/github/dfa/diaspora_android/util/Helpers.java b/app/src/main/java/com/github/dfa/diaspora_android/util/Helpers.java index 1ad1da44..c46317b5 100644 --- a/app/src/main/java/com/github/dfa/diaspora_android/util/Helpers.java +++ b/app/src/main/java/com/github/dfa/diaspora_android/util/Helpers.java @@ -23,6 +23,7 @@ package com.github.dfa.diaspora_android.util; import android.content.Context; import android.net.ConnectivityManager; import android.net.NetworkInfo; +import android.support.v4.content.ContextCompat; import android.webkit.WebView; public class Helpers { diff --git a/app/src/main/res/anim/fadein.xml b/app/src/main/res/anim/fadein.xml new file mode 100644 index 00000000..fd0e7dd8 --- /dev/null +++ b/app/src/main/res/anim/fadein.xml @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/app/src/main/res/anim/fadeout.xml b/app/src/main/res/anim/fadeout.xml new file mode 100644 index 00000000..7134515f --- /dev/null +++ b/app/src/main/res/anim/fadeout.xml @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 5afc15cd..64684e19 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -19,7 +19,7 @@ android:layout_height="match_parent" android:layout_gravity="start" android:fitsSystemWindows="true" - app:headerLayout="@layout/nav_header_main" + app:headerLayout="@layout/main_nav_header" app:menu="@menu/navdrawer_main" /> diff --git a/app/src/main/res/layout/content_main.xml b/app/src/main/res/layout/content_main.xml index 762e6197..52cab41b 100644 --- a/app/src/main/res/layout/content_main.xml +++ b/app/src/main/res/layout/content_main.xml @@ -5,7 +5,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior" - tools:context="com.github.dfa.myapplication.MainActivity" + tools:context=".activity.MainActivity" tools:showIn="@layout/app_bar_main"> + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/nav_header_main.xml b/app/src/main/res/layout/nav_header_main.xml deleted file mode 100644 index e3e113d2..00000000 --- a/app/src/main/res/layout/nav_header_main.xml +++ /dev/null @@ -1,56 +0,0 @@ - - - - - - - - - - - - diff --git a/app/src/main/res/layout/activity_pods.xml b/app/src/main/res/layout/podselection_activity.xml similarity index 65% rename from app/src/main/res/layout/activity_pods.xml rename to app/src/main/res/layout/podselection_activity.xml index d2329f30..17274630 100644 --- a/app/src/main/res/layout/activity_pods.xml +++ b/app/src/main/res/layout/podselection_activity.xml @@ -7,48 +7,50 @@ android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" - tools:context="com.github.dfa.diaspora_android.activity.PodsActivity"> + tools:context=".activity.PodSelectionActivity"> + android:textAppearance="?android:attr/textAppearanceSmall" + android:autoLink="web" /> diff --git a/app/src/main/res/layout/activity_splash.xml b/app/src/main/res/layout/splash_activity.xml similarity index 83% rename from app/src/main/res/layout/activity_splash.xml rename to app/src/main/res/layout/splash_activity.xml index a5c9f697..87fdc060 100644 --- a/app/src/main/res/layout/activity_splash.xml +++ b/app/src/main/res/layout/splash_activity.xml @@ -2,10 +2,10 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - tools:context="com.github.dfa.diaspora_android.activity.SplashActivity"> + tools:context=".activity.SplashActivity"> + tools:context=".activity.PodSelectionActivity"> diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 2f2a1a4c..eb577560 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -5,13 +5,13 @@ Pod-Domain eingeben App beenden Pod-Adresse bestätigen - Anmerkung: Auf dieser Liste finden sich nur Einträge von podupti.me + Anmerkung: Die Podliste wird aus den sicheren Pods, die bei https://podupti.me gelistet sind generiert. Bitte einen gültigen Domain-Namen (URL) eingeben Fehler: Konnte die Podliste nicht abfragen! Podliste wird geladen… Entschuldigung, du musst mit dem Internet verbunden sein um fortzufahren. Bestätigung - Willst du folgenden Pod benutzen: + Möchtest du wirklich \nhttps://%1$s\nals deinen Diaspora Pod auswählen? Möchtest du die App verlassen? OK NEIN @@ -78,8 +78,8 @@ Bildschirmfoto teilen Bildschirmfoto speichern Bildschirmfoto wird gespeichert unter: - Diaspora Einstellungen - Ansichtseinstellungen + Pod Einstellungen + App Einstellungen Markdown Formatierung Lizenz Über die App | Hilfe diff --git a/app/src/main/res/values/color.xml b/app/src/main/res/values/color.xml index 181ef7be..43d2cedf 100644 --- a/app/src/main/res/values/color.xml +++ b/app/src/main/res/values/color.xml @@ -8,15 +8,15 @@ #607d8b #607d8b #CFD8DC - #ff9800 + #4CAF50 #212121 #727272 #FFFFFF #B6B6B6 - #ff9800 - #ffb74d + @color/accent + #388E3C #607d8b #90a4ae diff --git a/app/src/main/res/values/integers.xml b/app/src/main/res/values/integers.xml new file mode 100644 index 00000000..8235cf8f --- /dev/null +++ b/app/src/main/res/values/integers.xml @@ -0,0 +1,5 @@ + + + 1300 + 1500 + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 0db48a7b..f754e963 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -24,7 +24,7 @@ Select Pod Enter pod domain Confirm pod url - Note: This list is populated with only the secure pods from podupti.me + Note: The podlist is populated by secure pods listed on https://podupti.me. You can enter in the edit field any pod not listed. Please enter a valid domain name Error: Could not retrieve list of pods! Loading pod list … @@ -32,7 +32,7 @@ Sorry, you must be connected to the Internet to proceed Confirmation - Do you want to use the pod: + Do you really want to use\nhttps://%1$s\nas your Diaspora Pod? Do you want to exit? YES NO @@ -62,8 +62,8 @@ Aspects Change pod Public activities - View settings - Diaspora settings + App settings + Pod settings Share content Change font size diff --git a/build.gradle b/build.gradle index 03bced9f..327cdcb3 100644 --- a/build.gradle +++ b/build.gradle @@ -6,6 +6,7 @@ buildscript { } dependencies { classpath 'com.android.tools.build:gradle:2.1.0' + classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files @@ -15,6 +16,7 @@ buildscript { allprojects { repositories { jcenter() + mavenCentral() } }