diff --git a/app/build.gradle b/app/build.gradle
index f152d6588..b5699c4a6 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -7,8 +7,8 @@ android {
applicationId "fr.gouv.etalab.mastodon"
minSdkVersion 15
targetSdkVersion 27
- versionCode 122
- versionName "1.8.9"
+ versionCode 123
+ versionName "1.9.0"
}
flavorDimensions "default"
buildTypes {
@@ -40,7 +40,7 @@ allprojects {
}
ext.supportLibraryVersion = '27.1.1'
ext.glideLibraryVersion = '4.6.1'
-ext.conscryptLibraryVersion = '1.0.1'
+ext.conscryptLibraryVersion = '1.1.2'
ext.evernoteLibraryVersion = '1.2.5'
ext.gsonLibraryVersion = '2.8.2'
ext.guavaLibraryVersion = '24.1-android'
diff --git a/app/fdroid/release/app-fdroid-release-black_theme_fix_API27+.apk b/app/fdroid/release/app-fdroid-release-black_theme_fix_API27+.apk
new file mode 100644
index 000000000..2cf090202
Binary files /dev/null and b/app/fdroid/release/app-fdroid-release-black_theme_fix_API27+.apk differ
diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/activities/AboutActivity.java b/app/src/main/java/fr/gouv/etalab/mastodon/activities/AboutActivity.java
index 4a27eb076..14e77ee19 100644
--- a/app/src/main/java/fr/gouv/etalab/mastodon/activities/AboutActivity.java
+++ b/app/src/main/java/fr/gouv/etalab/mastodon/activities/AboutActivity.java
@@ -69,11 +69,20 @@ public class AboutActivity extends BaseActivity implements OnRetrieveRemoteAccou
super.onCreate(savedInstanceState);
SharedPreferences sharedpreferences = getSharedPreferences(Helper.APP_PREFS, android.content.Context.MODE_PRIVATE);
int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_DARK);
- if( theme == Helper.THEME_LIGHT){
- setTheme(R.style.AppTheme);
- }else {
- setTheme(R.style.AppThemeDark);
+ switch (theme){
+ case Helper.THEME_LIGHT:
+ setTheme(R.style.AppTheme);
+ break;
+ case Helper.THEME_DARK:
+ setTheme(R.style.AppThemeDark);
+ break;
+ case Helper.THEME_BLACK:
+ setTheme(R.style.AppThemeBlack);
+ break;
+ default:
+ setTheme(R.style.AppThemeDark);
}
+
if( getSupportActionBar() != null)
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
setContentView(R.layout.activity_about);
@@ -153,6 +162,16 @@ public class AboutActivity extends BaseActivity implements OnRetrieveRemoteAccou
}
});
+
+ Button about_support = findViewById(R.id.about_support);
+ about_support.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://liberapay.com/tom79/donate"));
+ startActivity(browserIntent);
+ }
+ });
+
setTitle(R.string.action_about);
lv_contributors.setExpanded(true);
lv_developers.setExpanded(true);
diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/activities/BaseMainActivity.java b/app/src/main/java/fr/gouv/etalab/mastodon/activities/BaseMainActivity.java
index 6aed798f6..aba1ea835 100644
--- a/app/src/main/java/fr/gouv/etalab/mastodon/activities/BaseMainActivity.java
+++ b/app/src/main/java/fr/gouv/etalab/mastodon/activities/BaseMainActivity.java
@@ -25,6 +25,7 @@ import android.content.IntentFilter;
import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.database.sqlite.SQLiteDatabase;
+import android.graphics.Paint;
import android.graphics.PorterDuff;
import android.net.Uri;
import android.os.AsyncTask;
@@ -117,6 +118,7 @@ import static fr.gouv.etalab.mastodon.helper.Helper.INTENT_ACTION;
import static fr.gouv.etalab.mastodon.helper.Helper.INTENT_TARGETED_ACCOUNT;
import static fr.gouv.etalab.mastodon.helper.Helper.NOTIFICATION_INTENT;
import static fr.gouv.etalab.mastodon.helper.Helper.PREF_KEY_ID;
+import static fr.gouv.etalab.mastodon.helper.Helper.THEME_BLACK;
import static fr.gouv.etalab.mastodon.helper.Helper.changeDrawableColor;
import static fr.gouv.etalab.mastodon.helper.Helper.changeUser;
import static fr.gouv.etalab.mastodon.helper.Helper.menuAccounts;
@@ -165,10 +167,18 @@ public abstract class BaseMainActivity extends BaseActivity
final int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_DARK);
- if( theme == Helper.THEME_LIGHT){
- setTheme(R.style.AppTheme_NoActionBar);
- }else {
- setTheme(R.style.AppThemeDark_NoActionBar);
+ switch (theme){
+ case Helper.THEME_LIGHT:
+ setTheme(R.style.AppTheme_NoActionBar);
+ break;
+ case Helper.THEME_DARK:
+ setTheme(R.style.AppThemeDark_NoActionBar);
+ break;
+ case Helper.THEME_BLACK:
+ setTheme(R.style.AppThemeBlack_NoActionBar);
+ break;
+ default:
+ setTheme(R.style.AppThemeDark_NoActionBar);
}
setContentView(R.layout.activity_main);
@@ -192,6 +202,8 @@ public abstract class BaseMainActivity extends BaseActivity
//Here, the user is authenticated
appBar = findViewById(R.id.appBar);
Toolbar toolbar = findViewById(R.id.toolbar);
+ if( theme == THEME_BLACK)
+ toolbar.setBackgroundColor(ContextCompat.getColor(BaseMainActivity.this, R.color.black));
setSupportActionBar(toolbar);
toolbarTitle = toolbar.findViewById(R.id.toolbar_title);
toolbar_search = toolbar.findViewById(R.id.toolbar_search);
@@ -210,7 +222,10 @@ public abstract class BaseMainActivity extends BaseActivity
iconHome.setColorFilter(ContextCompat.getColor(getApplicationContext(), R.color.dark_text), PorterDuff.Mode.SRC_IN);
iconHome.setImageResource(R.drawable.ic_home);
- iconHome.setColorFilter(ContextCompat.getColor(getApplicationContext(), R.color.mastodonC4), PorterDuff.Mode.SRC_IN);
+ if( theme == THEME_BLACK)
+ iconHome.setColorFilter(ContextCompat.getColor(getApplicationContext(), R.color.dark_icon), PorterDuff.Mode.SRC_IN);
+ else
+ iconHome.setColorFilter(ContextCompat.getColor(getApplicationContext(), R.color.mastodonC4), PorterDuff.Mode.SRC_IN);
@SuppressWarnings("ConstantConditions") @SuppressLint("CutPasteId")
@@ -387,7 +402,11 @@ public abstract class BaseMainActivity extends BaseActivity
if( tab.getCustomView() != null) {
ImageView icon = tab.getCustomView().findViewById(R.id.tab_icon);
if( icon != null)
- icon.setColorFilter(ContextCompat.getColor(getApplicationContext(), R.color.mastodonC4), PorterDuff.Mode.SRC_IN);
+ if( theme == THEME_BLACK)
+ icon.setColorFilter(ContextCompat.getColor(getApplicationContext(), R.color.dark_icon), PorterDuff.Mode.SRC_IN);
+ else
+ icon.setColorFilter(ContextCompat.getColor(getApplicationContext(), R.color.mastodonC4), PorterDuff.Mode.SRC_IN);
+
}
}
@@ -569,8 +588,10 @@ public abstract class BaseMainActivity extends BaseActivity
});
//Hide the default title
- if( getSupportActionBar() != null)
+ if( getSupportActionBar() != null) {
getSupportActionBar().setDisplayShowTitleEnabled(false);
+ getSupportActionBar().getThemedContext().setTheme(R.style.AppThemeBlack);
+ }
//Defines the current locale of the device in a static variable
currentLocale = Helper.currentLocale(getApplicationContext());
diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/activities/EditProfileActivity.java b/app/src/main/java/fr/gouv/etalab/mastodon/activities/EditProfileActivity.java
index e45f41a91..9976e3fa9 100644
--- a/app/src/main/java/fr/gouv/etalab/mastodon/activities/EditProfileActivity.java
+++ b/app/src/main/java/fr/gouv/etalab/mastodon/activities/EditProfileActivity.java
@@ -112,11 +112,20 @@ public class EditProfileActivity extends BaseActivity implements OnRetrieveAccou
SharedPreferences sharedpreferences = getSharedPreferences(Helper.APP_PREFS, android.content.Context.MODE_PRIVATE);
int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_DARK);
- if( theme == Helper.THEME_LIGHT){
- setTheme(R.style.AppTheme);
- }else {
- setTheme(R.style.AppThemeDark);
+ switch (theme){
+ case Helper.THEME_LIGHT:
+ setTheme(R.style.AppTheme);
+ break;
+ case Helper.THEME_DARK:
+ setTheme(R.style.AppThemeDark);
+ break;
+ case Helper.THEME_BLACK:
+ setTheme(R.style.AppThemeBlack);
+ break;
+ default:
+ setTheme(R.style.AppThemeDark);
}
+
setContentView(R.layout.activity_edit_profile);
ActionBar actionBar = getSupportActionBar();
diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/activities/HashTagActivity.java b/app/src/main/java/fr/gouv/etalab/mastodon/activities/HashTagActivity.java
index 54bcc996a..2fbe3e3b6 100644
--- a/app/src/main/java/fr/gouv/etalab/mastodon/activities/HashTagActivity.java
+++ b/app/src/main/java/fr/gouv/etalab/mastodon/activities/HashTagActivity.java
@@ -19,6 +19,7 @@ import android.content.Context;
import android.content.SharedPreferences;
import android.os.AsyncTask;
import android.os.Bundle;
+import android.support.v4.content.ContextCompat;
import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.widget.DividerItemDecoration;
import android.support.v7.widget.LinearLayoutManager;
@@ -40,6 +41,7 @@ import fr.gouv.etalab.mastodon.drawers.StatusListAdapter;
import fr.gouv.etalab.mastodon.helper.Helper;
import fr.gouv.etalab.mastodon.interfaces.OnRetrieveFeedsInterface;
+import static fr.gouv.etalab.mastodon.helper.Helper.THEME_BLACK;
/**
@@ -68,14 +70,24 @@ public class HashTagActivity extends BaseActivity implements OnRetrieveFeedsInte
SharedPreferences sharedpreferences = getSharedPreferences(Helper.APP_PREFS, android.content.Context.MODE_PRIVATE);
int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_DARK);
- if( theme == Helper.THEME_LIGHT){
- setTheme(R.style.AppTheme_NoActionBar);
- }else {
- setTheme(R.style.AppThemeDark_NoActionBar);
+ switch (theme){
+ case Helper.THEME_LIGHT:
+ setTheme(R.style.AppTheme_NoActionBar);
+ break;
+ case Helper.THEME_DARK:
+ setTheme(R.style.AppThemeDark_NoActionBar);
+ break;
+ case Helper.THEME_BLACK:
+ setTheme(R.style.AppThemeBlack_NoActionBar);
+ break;
+ default:
+ setTheme(R.style.AppThemeDark_NoActionBar);
}
setContentView(R.layout.activity_hashtag);
Toolbar toolbar = findViewById(R.id.toolbar);
+ if( theme == THEME_BLACK)
+ toolbar.setBackgroundColor(ContextCompat.getColor(HashTagActivity.this, R.color.black));
setSupportActionBar(toolbar);
if( getSupportActionBar() != null)
@@ -118,9 +130,6 @@ public class HashTagActivity extends BaseActivity implements OnRetrieveFeedsInte
new RetrieveFeedsAsyncTask(getApplicationContext(), RetrieveFeedsAsyncTask.Type.TAG, tag,null, max_id, HashTagActivity.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
}
});
- swipeRefreshLayout.setColorSchemeResources(R.color.mastodonC4,
- R.color.mastodonC2,
- R.color.mastodonC3);
final LinearLayoutManager mLayoutManager;
mLayoutManager = new LinearLayoutManager(this);
lv_status.setLayoutManager(mLayoutManager);
diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/activities/InstanceActivity.java b/app/src/main/java/fr/gouv/etalab/mastodon/activities/InstanceActivity.java
index 8ef609e14..edf8b8325 100644
--- a/app/src/main/java/fr/gouv/etalab/mastodon/activities/InstanceActivity.java
+++ b/app/src/main/java/fr/gouv/etalab/mastodon/activities/InstanceActivity.java
@@ -57,11 +57,20 @@ public class InstanceActivity extends BaseActivity implements OnRetrieveInstance
super.onCreate(savedInstanceState);
SharedPreferences sharedpreferences = getSharedPreferences(Helper.APP_PREFS, android.content.Context.MODE_PRIVATE);
int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_DARK);
- if( theme == Helper.THEME_LIGHT){
- setTheme(R.style.AppTheme);
- }else {
- setTheme(R.style.AppThemeDark);
+ switch (theme){
+ case Helper.THEME_LIGHT:
+ setTheme(R.style.AppTheme);
+ break;
+ case Helper.THEME_DARK:
+ setTheme(R.style.AppThemeDark);
+ break;
+ case Helper.THEME_BLACK:
+ setTheme(R.style.AppThemeBlack);
+ break;
+ default:
+ setTheme(R.style.AppThemeDark);
}
+
if( getSupportActionBar() != null)
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
setContentView(R.layout.activity_instance);
diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/activities/InstanceHealthActivity.java b/app/src/main/java/fr/gouv/etalab/mastodon/activities/InstanceHealthActivity.java
index b27a17b52..302a49aa8 100644
--- a/app/src/main/java/fr/gouv/etalab/mastodon/activities/InstanceHealthActivity.java
+++ b/app/src/main/java/fr/gouv/etalab/mastodon/activities/InstanceHealthActivity.java
@@ -18,6 +18,7 @@ package fr.gouv.etalab.mastodon.activities;
import android.annotation.SuppressLint;
import android.content.Intent;
+import android.content.SharedPreferences;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
@@ -76,7 +77,21 @@ public class InstanceHealthActivity extends BaseActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
- setTheme(R.style.AppThemeDark_NoActionBar);
+ SharedPreferences sharedpreferences = getSharedPreferences(Helper.APP_PREFS, android.content.Context.MODE_PRIVATE);
+ int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_DARK);
+ switch (theme){
+ case Helper.THEME_LIGHT:
+ setTheme(R.style.AppTheme);
+ break;
+ case Helper.THEME_DARK:
+ setTheme(R.style.AppThemeDark);
+ break;
+ case Helper.THEME_BLACK:
+ setTheme(R.style.AppThemeBlack);
+ break;
+ default:
+ setTheme(R.style.AppThemeDark);
+ }
setContentView(R.layout.activity_instance_social);
getWindow().setLayout(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
Bundle b = getIntent().getExtras();
diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/activities/ListActivity.java b/app/src/main/java/fr/gouv/etalab/mastodon/activities/ListActivity.java
index 94ac52a5b..7e5efdcdf 100644
--- a/app/src/main/java/fr/gouv/etalab/mastodon/activities/ListActivity.java
+++ b/app/src/main/java/fr/gouv/etalab/mastodon/activities/ListActivity.java
@@ -21,6 +21,7 @@ import android.content.Intent;
import android.content.SharedPreferences;
import android.os.AsyncTask;
import android.os.Bundle;
+import android.support.v4.content.ContextCompat;
import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.app.AlertDialog;
import android.support.v7.widget.LinearLayoutManager;
@@ -50,6 +51,8 @@ import fr.gouv.etalab.mastodon.drawers.StatusListAdapter;
import fr.gouv.etalab.mastodon.helper.Helper;
import fr.gouv.etalab.mastodon.interfaces.OnListActionInterface;
+import static fr.gouv.etalab.mastodon.helper.Helper.THEME_BLACK;
+
/**
* Created by Thomas on 14/12/2017.
@@ -76,15 +79,24 @@ public class ListActivity extends BaseActivity implements OnListActionInterface
super.onCreate(savedInstanceState);
SharedPreferences sharedpreferences = getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE);
int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_DARK);
- if( theme == Helper.THEME_LIGHT){
- setTheme(R.style.AppTheme_NoActionBar);
- }else {
- setTheme(R.style.AppThemeDark_NoActionBar);
+ switch (theme){
+ case Helper.THEME_LIGHT:
+ setTheme(R.style.AppTheme_NoActionBar);
+ break;
+ case Helper.THEME_DARK:
+ setTheme(R.style.AppThemeDark_NoActionBar);
+ break;
+ case Helper.THEME_BLACK:
+ setTheme(R.style.AppThemeBlack_NoActionBar);
+ break;
+ default:
+ setTheme(R.style.AppThemeDark_NoActionBar);
}
setContentView(R.layout.activity_list);
Toolbar toolbar = findViewById(R.id.toolbar);
+ if( theme == THEME_BLACK)
+ toolbar.setBackgroundColor(ContextCompat.getColor(ListActivity.this, R.color.black));
setSupportActionBar(toolbar);
-
if( getSupportActionBar() != null)
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
statuses = new ArrayList<>();
@@ -158,9 +170,27 @@ public class ListActivity extends BaseActivity implements OnListActionInterface
new ManageListsAsyncTask(ListActivity.this,listId, null ,null, ListActivity.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
}
});
- swipeRefreshLayout.setColorSchemeResources(R.color.mastodonC4,
- R.color.mastodonC2,
- R.color.mastodonC3);
+
+ switch (theme){
+ case Helper.THEME_LIGHT:
+ swipeRefreshLayout.setColorSchemeResources(R.color.mastodonC4,
+ R.color.mastodonC2,
+ R.color.mastodonC3);
+ swipeRefreshLayout.setProgressBackgroundColorSchemeColor(ContextCompat.getColor(ListActivity.this, R.color.white));
+ break;
+ case Helper.THEME_DARK:
+ swipeRefreshLayout.setColorSchemeResources(R.color.mastodonC4__,
+ R.color.mastodonC4,
+ R.color.mastodonC4);
+ swipeRefreshLayout.setProgressBackgroundColorSchemeColor(ContextCompat.getColor(ListActivity.this, R.color.mastodonC1_));
+ break;
+ case Helper.THEME_BLACK:
+ swipeRefreshLayout.setColorSchemeResources(R.color.dark_icon,
+ R.color.mastodonC2,
+ R.color.mastodonC3);
+ swipeRefreshLayout.setProgressBackgroundColorSchemeColor(ContextCompat.getColor(ListActivity.this, R.color.black_3));
+ break;
+ }
new ManageListsAsyncTask(ListActivity.this,listId, null ,null, ListActivity.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
}
diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/activities/LoginActivity.java b/app/src/main/java/fr/gouv/etalab/mastodon/activities/LoginActivity.java
index d9ccaf4cb..e98ecd531 100644
--- a/app/src/main/java/fr/gouv/etalab/mastodon/activities/LoginActivity.java
+++ b/app/src/main/java/fr/gouv/etalab/mastodon/activities/LoginActivity.java
@@ -111,11 +111,20 @@ public class LoginActivity extends BaseActivity {
SharedPreferences sharedpreferences = getSharedPreferences(Helper.APP_PREFS, android.content.Context.MODE_PRIVATE);
int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_DARK);
- if (theme == Helper.THEME_LIGHT) {
- setTheme(R.style.AppTheme);
- } else {
- setTheme(R.style.AppThemeDark);
+ switch (theme){
+ case Helper.THEME_LIGHT:
+ setTheme(R.style.AppTheme);
+ break;
+ case Helper.THEME_DARK:
+ setTheme(R.style.AppThemeDark);
+ break;
+ case Helper.THEME_BLACK:
+ setTheme(R.style.AppThemeBlack);
+ break;
+ default:
+ setTheme(R.style.AppThemeDark);
}
+
setContentView(R.layout.activity_login);
if (theme == Helper.THEME_DARK) {
diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/activities/ManageAccountsInListActivity.java b/app/src/main/java/fr/gouv/etalab/mastodon/activities/ManageAccountsInListActivity.java
index aa841310b..1eec21356 100644
--- a/app/src/main/java/fr/gouv/etalab/mastodon/activities/ManageAccountsInListActivity.java
+++ b/app/src/main/java/fr/gouv/etalab/mastodon/activities/ManageAccountsInListActivity.java
@@ -18,6 +18,7 @@ import android.content.Context;
import android.content.SharedPreferences;
import android.os.AsyncTask;
import android.os.Bundle;
+import android.support.v4.content.ContextCompat;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.text.Editable;
@@ -66,7 +67,25 @@ public class ManageAccountsInListActivity extends BaseActivity implements OnList
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
- setTheme(R.style.AppThemeDark_NoActionBar);
+ SharedPreferences sharedpreferences = getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE);
+ int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_DARK);
+ switch (theme){
+ case Helper.THEME_LIGHT:
+ setTheme(R.style.AppTheme_NoActionBar);
+ getWindow().getDecorView().setBackgroundColor(ContextCompat.getColor(ManageAccountsInListActivity.this, R.color.mastodonC3__));
+ break;
+ case Helper.THEME_DARK:
+ setTheme(R.style.AppThemeDark_NoActionBar);
+ getWindow().getDecorView().setBackgroundColor(ContextCompat.getColor(ManageAccountsInListActivity.this, R.color.mastodonC1));
+ break;
+ case Helper.THEME_BLACK:
+ setTheme(R.style.AppThemeBlack_NoActionBar);
+ getWindow().getDecorView().setBackgroundColor(ContextCompat.getColor(ManageAccountsInListActivity.this, R.color.black_3));
+ break;
+ default:
+ setTheme(R.style.AppThemeDark_NoActionBar);
+ getWindow().getDecorView().setBackgroundColor(ContextCompat.getColor(ManageAccountsInListActivity.this, R.color.mastodonC1));
+ }
setContentView(R.layout.activity_manage_accounts_list);
getWindow().setLayout(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
if( getSupportActionBar() != null)
diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/activities/MediaActivity.java b/app/src/main/java/fr/gouv/etalab/mastodon/activities/MediaActivity.java
index a6c86dc2b..d9aa3048f 100644
--- a/app/src/main/java/fr/gouv/etalab/mastodon/activities/MediaActivity.java
+++ b/app/src/main/java/fr/gouv/etalab/mastodon/activities/MediaActivity.java
@@ -64,6 +64,7 @@ import fr.gouv.etalab.mastodon.interfaces.OnDownloadInterface;
import static fr.gouv.etalab.mastodon.helper.Helper.EXTERNAL_STORAGE_REQUEST_CODE;
+import static fr.gouv.etalab.mastodon.helper.Helper.THEME_BLACK;
import static fr.gouv.etalab.mastodon.helper.Helper.changeDrawableColor;
@@ -93,6 +94,8 @@ public class MediaActivity extends BaseActivity implements OnDownloadInterface {
private ProgressBar pbar_inf;
private TextView message_ready;
private boolean canSwipe;
+ private TextView media_description;
+ private Attachment attachment;
private enum actionSwipe{
RIGHT_TO_LEFT,
@@ -105,12 +108,11 @@ public class MediaActivity extends BaseActivity implements OnDownloadInterface {
@Override
protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
-
-
SharedPreferences sharedpreferences = getSharedPreferences(Helper.APP_PREFS, android.content.Context.MODE_PRIVATE);
int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_DARK);
-
+ if( theme == THEME_BLACK)
+ setTheme(R.style.TransparentBlack);
+ super.onCreate(savedInstanceState);
setContentView(R.layout.activity_media);
SwipeBackLayout mSwipeBackLayout = new SwipeBackLayout(MediaActivity.this);
mSwipeBackLayout.setDirectionMode(SwipeBackLayout.FROM_BOTTOM);
@@ -140,9 +142,12 @@ public class MediaActivity extends BaseActivity implements OnDownloadInterface {
RelativeLayout main_container_media = findViewById(R.id.main_container_media);
if( theme == Helper.THEME_LIGHT){
main_container_media.setBackgroundResource(R.color.mastodonC2);
- }else {
+ }else if( theme == Helper.THEME_BLACK){
+ main_container_media.setBackgroundResource(R.color.black);
+ }else if( theme == Helper.THEME_DARK){
main_container_media.setBackgroundResource(R.color.mastodonC1_);
}
+ media_description = findViewById(R.id.media_description);
message_ready = findViewById(R.id.message_ready);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
@@ -178,6 +183,7 @@ public class MediaActivity extends BaseActivity implements OnDownloadInterface {
// DO DELAYED STUFF
media_close.setVisibility(View.GONE);
media_save.setVisibility(View.GONE);
+ media_description.setVisibility(View.GONE);
scheduleHidden = false;
}
}, 2000);
@@ -187,8 +193,13 @@ public class MediaActivity extends BaseActivity implements OnDownloadInterface {
videoView = findViewById(R.id.media_video);
prev = findViewById(R.id.media_prev);
next = findViewById(R.id.media_next);
- changeDrawableColor(getApplicationContext(), prev,R.color.mastodonC4);
- changeDrawableColor(getApplicationContext(), next,R.color.mastodonC4);
+ if( theme == THEME_BLACK){
+ changeDrawableColor(getApplicationContext(), prev, R.color.dark_icon);
+ changeDrawableColor(getApplicationContext(), next, R.color.dark_icon);
+ }else {
+ changeDrawableColor(getApplicationContext(), prev, R.color.mastodonC4);
+ changeDrawableColor(getApplicationContext(), next, R.color.mastodonC4);
+ }
prev.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
@@ -234,12 +245,20 @@ public class MediaActivity extends BaseActivity implements OnDownloadInterface {
scheduleHidden = true;
media_close.setVisibility(View.VISIBLE);
media_save.setVisibility(View.VISIBLE);
+ if( attachment != null && attachment.getDescription() != null && !attachment.getDescription().equals("null")){
+ media_description.setText(attachment.getDescription());
+ media_description.setVisibility(View.VISIBLE);
+ }else{
+ media_description.setText("");
+ media_description.setVisibility(View.GONE);
+ }
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
media_close.setVisibility(View.GONE);
media_save.setVisibility(View.GONE);
+ media_description.setVisibility(View.GONE);
scheduleHidden = false;
}
}, 2000);
@@ -293,7 +312,7 @@ public class MediaActivity extends BaseActivity implements OnDownloadInterface {
if( mediaPosition < 1)
mediaPosition = attachments.size();
currentAction = action;
- final Attachment attachment = attachments.get(mediaPosition-1);
+ attachment = attachments.get(mediaPosition-1);
String type = attachment.getType();
String url = attachment.getUrl();
finalUrlDownload = url;
@@ -302,6 +321,14 @@ public class MediaActivity extends BaseActivity implements OnDownloadInterface {
videoView.stopPlayback();
}
imageView.setVisibility(View.GONE);
+
+ if( attachment.getDescription() != null && !attachment.getDescription().equals("null")){
+ media_description.setText(attachment.getDescription());
+ media_description.setVisibility(View.VISIBLE);
+ }else{
+ media_description.setText("");
+ media_description.setVisibility(View.GONE);
+ }
preview_url = attachment.getPreview_url();
if( type.equals("unknown")){
preview_url = attachment.getRemote_url();
diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/activities/OwnerStatusActivity.java b/app/src/main/java/fr/gouv/etalab/mastodon/activities/OwnerStatusActivity.java
index c41c53d61..88f9b5b77 100644
--- a/app/src/main/java/fr/gouv/etalab/mastodon/activities/OwnerStatusActivity.java
+++ b/app/src/main/java/fr/gouv/etalab/mastodon/activities/OwnerStatusActivity.java
@@ -29,6 +29,7 @@ import android.graphics.drawable.BitmapDrawable;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.annotation.NonNull;
+import android.support.v4.content.ContextCompat;
import android.support.v4.content.LocalBroadcastManager;
import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.app.ActionBar;
@@ -73,6 +74,8 @@ import fr.gouv.etalab.mastodon.sqlite.AccountDAO;
import fr.gouv.etalab.mastodon.sqlite.Sqlite;
import fr.gouv.etalab.mastodon.sqlite.StatusCacheDAO;
+import static fr.gouv.etalab.mastodon.helper.Helper.THEME_BLACK;
+
/**
* Created by Thomas on 17/02/2018.
@@ -104,10 +107,18 @@ public class OwnerStatusActivity extends BaseActivity implements OnRetrieveFeeds
sharedpreferences = getSharedPreferences(Helper.APP_PREFS, android.content.Context.MODE_PRIVATE);
int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_DARK);
- if( theme == Helper.THEME_LIGHT){
- setTheme(R.style.AppTheme_NoActionBar);
- }else {
- setTheme(R.style.AppThemeDark_NoActionBar);
+ switch (theme){
+ case Helper.THEME_LIGHT:
+ setTheme(R.style.AppTheme_NoActionBar);
+ break;
+ case Helper.THEME_DARK:
+ setTheme(R.style.AppThemeDark_NoActionBar);
+ break;
+ case Helper.THEME_BLACK:
+ setTheme(R.style.AppThemeBlack_NoActionBar);
+ break;
+ default:
+ setTheme(R.style.AppThemeDark_NoActionBar);
}
setContentView(R.layout.activity_ower_status);
@@ -118,6 +129,8 @@ public class OwnerStatusActivity extends BaseActivity implements OnRetrieveFeeds
new IntentFilter(Helper.INTENT_BACKUP_FINISH));
Toolbar toolbar = findViewById(R.id.toolbar);
+ if( theme == THEME_BLACK)
+ toolbar.setBackgroundColor(ContextCompat.getColor(OwnerStatusActivity.this, R.color.black));
setSupportActionBar(toolbar);
ActionBar actionBar = getSupportActionBar();
@@ -192,9 +205,26 @@ public class OwnerStatusActivity extends BaseActivity implements OnRetrieveFeeds
swipeRefreshLayout = findViewById(R.id.swipeContainer);
new RetrieveFeedsAsyncTask(OwnerStatusActivity.this, filterToots, null, OwnerStatusActivity.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
- swipeRefreshLayout.setColorSchemeResources(R.color.mastodonC4,
- R.color.mastodonC2,
- R.color.mastodonC3);
+ switch (theme){
+ case Helper.THEME_LIGHT:
+ swipeRefreshLayout.setColorSchemeResources(R.color.mastodonC4,
+ R.color.mastodonC2,
+ R.color.mastodonC3);
+ swipeRefreshLayout.setProgressBackgroundColorSchemeColor(ContextCompat.getColor(OwnerStatusActivity.this, R.color.white));
+ break;
+ case Helper.THEME_DARK:
+ swipeRefreshLayout.setColorSchemeResources(R.color.mastodonC4__,
+ R.color.mastodonC4,
+ R.color.mastodonC4);
+ swipeRefreshLayout.setProgressBackgroundColorSchemeColor(ContextCompat.getColor(OwnerStatusActivity.this, R.color.mastodonC1_));
+ break;
+ case Helper.THEME_BLACK:
+ swipeRefreshLayout.setColorSchemeResources(R.color.dark_icon,
+ R.color.mastodonC2,
+ R.color.mastodonC3);
+ swipeRefreshLayout.setProgressBackgroundColorSchemeColor(ContextCompat.getColor(OwnerStatusActivity.this, R.color.black_3));
+ break;
+ }
swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/activities/PrivacyActivity.java b/app/src/main/java/fr/gouv/etalab/mastodon/activities/PrivacyActivity.java
index aaffb0a84..0b9353e22 100644
--- a/app/src/main/java/fr/gouv/etalab/mastodon/activities/PrivacyActivity.java
+++ b/app/src/main/java/fr/gouv/etalab/mastodon/activities/PrivacyActivity.java
@@ -36,11 +36,20 @@ public class PrivacyActivity extends BaseActivity {
super.onCreate(savedInstanceState);
SharedPreferences sharedpreferences = getSharedPreferences(Helper.APP_PREFS, android.content.Context.MODE_PRIVATE);
int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_DARK);
- if( theme == Helper.THEME_LIGHT){
- setTheme(R.style.AppTheme);
- }else {
- setTheme(R.style.AppThemeDark);
+ switch (theme){
+ case Helper.THEME_LIGHT:
+ setTheme(R.style.AppTheme);
+ break;
+ case Helper.THEME_DARK:
+ setTheme(R.style.AppThemeDark);
+ break;
+ case Helper.THEME_BLACK:
+ setTheme(R.style.AppThemeBlack);
+ break;
+ default:
+ setTheme(R.style.AppThemeDark);
}
+
if( getSupportActionBar() != null)
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
setContentView(R.layout.activity_privacy);
diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/activities/ProxyActivity.java b/app/src/main/java/fr/gouv/etalab/mastodon/activities/ProxyActivity.java
index 0cc074816..6762817d3 100644
--- a/app/src/main/java/fr/gouv/etalab/mastodon/activities/ProxyActivity.java
+++ b/app/src/main/java/fr/gouv/etalab/mastodon/activities/ProxyActivity.java
@@ -17,9 +17,9 @@ package fr.gouv.etalab.mastodon.activities;
import android.content.Context;
-import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
+import android.support.v4.content.ContextCompat;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
@@ -30,15 +30,9 @@ import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Spinner;
-
-import java.lang.reflect.Proxy;
-
import fr.gouv.etalab.mastodon.R;
import fr.gouv.etalab.mastodon.helper.Helper;
-import static fr.gouv.etalab.mastodon.helper.Helper.CHANGE_THEME_INTENT;
-import static fr.gouv.etalab.mastodon.helper.Helper.INTENT_ACTION;
-
/**
* Created by Thomas on 19/01/2018.
@@ -53,15 +47,30 @@ public class ProxyActivity extends BaseActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
- setTheme(R.style.AppThemeDark_NoActionBar);
+ SharedPreferences sharedpreferences = getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE);
+ int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_DARK);
+ switch (theme){
+ case Helper.THEME_LIGHT:
+ setTheme(R.style.AppTheme_NoActionBar);
+ getWindow().getDecorView().setBackgroundColor(ContextCompat.getColor(ProxyActivity.this, R.color.mastodonC3__));
+ break;
+ case Helper.THEME_DARK:
+ setTheme(R.style.AppThemeDark_NoActionBar);
+ getWindow().getDecorView().setBackgroundColor(ContextCompat.getColor(ProxyActivity.this, R.color.mastodonC1));
+ break;
+ case Helper.THEME_BLACK:
+ setTheme(R.style.AppThemeBlack_NoActionBar);
+ getWindow().getDecorView().setBackgroundColor(ContextCompat.getColor(ProxyActivity.this, R.color.black_3));
+ break;
+ default:
+ setTheme(R.style.AppThemeDark_NoActionBar);
+ getWindow().getDecorView().setBackgroundColor(ContextCompat.getColor(ProxyActivity.this, R.color.mastodonC1));
+ }
setContentView(R.layout.activity_proxy);
getWindow().setLayout(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
- Bundle b = getIntent().getExtras();
if( getSupportActionBar() != null)
getSupportActionBar().hide();
- final SharedPreferences sharedpreferences = getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE);
-
//Enable proxy
boolean enable_proxy = sharedpreferences.getBoolean(Helper.SET_PROXY_ENABLED, false);
final CheckBox set_enable_proxy = findViewById(R.id.enable_proxy);
@@ -100,9 +109,6 @@ public class ProxyActivity extends BaseActivity {
proxy_type.setAdapter(adapterTrans);
-
-
-
proxy_type.setSelection(sharedpreferences.getInt(Helper.SET_PROXY_TYPE, 0));
proxy_type.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
@@ -120,9 +126,6 @@ public class ProxyActivity extends BaseActivity {
}
});
-
-
-
save.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/activities/RemoteFollowActivity.java b/app/src/main/java/fr/gouv/etalab/mastodon/activities/RemoteFollowActivity.java
index 325623f4d..553421a2d 100644
--- a/app/src/main/java/fr/gouv/etalab/mastodon/activities/RemoteFollowActivity.java
+++ b/app/src/main/java/fr/gouv/etalab/mastodon/activities/RemoteFollowActivity.java
@@ -100,11 +100,20 @@ public class RemoteFollowActivity extends BaseActivity implements OnRetrieveRemo
SharedPreferences sharedpreferences = getSharedPreferences(Helper.APP_PREFS, android.content.Context.MODE_PRIVATE);
int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_DARK);
- if( theme == Helper.THEME_LIGHT){
- setTheme(R.style.AppTheme);
- }else {
- setTheme(R.style.AppThemeDark);
+ switch (theme){
+ case Helper.THEME_LIGHT:
+ setTheme(R.style.AppTheme);
+ break;
+ case Helper.THEME_DARK:
+ setTheme(R.style.AppThemeDark);
+ break;
+ case Helper.THEME_BLACK:
+ setTheme(R.style.AppThemeBlack);
+ break;
+ default:
+ setTheme(R.style.AppThemeDark);
}
+
setContentView(R.layout.activity_remote_follow);
rf_instance = findViewById(R.id.rf_instance);
diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/activities/SearchResultActivity.java b/app/src/main/java/fr/gouv/etalab/mastodon/activities/SearchResultActivity.java
index 864428242..b023a3310 100644
--- a/app/src/main/java/fr/gouv/etalab/mastodon/activities/SearchResultActivity.java
+++ b/app/src/main/java/fr/gouv/etalab/mastodon/activities/SearchResultActivity.java
@@ -57,11 +57,20 @@ public class SearchResultActivity extends BaseActivity implements OnRetrieveSear
super.onCreate(savedInstanceState);
SharedPreferences sharedpreferences = getSharedPreferences(Helper.APP_PREFS, android.content.Context.MODE_PRIVATE);
int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_DARK);
- if( theme == Helper.THEME_LIGHT){
- setTheme(R.style.AppTheme);
- }else {
- setTheme(R.style.AppThemeDark);
+ switch (theme){
+ case Helper.THEME_LIGHT:
+ setTheme(R.style.AppTheme);
+ break;
+ case Helper.THEME_DARK:
+ setTheme(R.style.AppThemeDark);
+ break;
+ case Helper.THEME_BLACK:
+ setTheme(R.style.AppThemeBlack);
+ break;
+ default:
+ setTheme(R.style.AppThemeDark);
}
+
setContentView(R.layout.activity_search_result);
loader = findViewById(R.id.loader);
diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/activities/ShowAccountActivity.java b/app/src/main/java/fr/gouv/etalab/mastodon/activities/ShowAccountActivity.java
index 3c04a56b3..3b80e5d67 100644
--- a/app/src/main/java/fr/gouv/etalab/mastodon/activities/ShowAccountActivity.java
+++ b/app/src/main/java/fr/gouv/etalab/mastodon/activities/ShowAccountActivity.java
@@ -140,10 +140,18 @@ public class ShowAccountActivity extends BaseActivity implements OnPostActionInt
super.onCreate(savedInstanceState);
SharedPreferences sharedpreferences = getSharedPreferences(Helper.APP_PREFS, android.content.Context.MODE_PRIVATE);
int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_DARK);
- if( theme == Helper.THEME_LIGHT){
- setTheme(R.style.AppTheme_NoActionBar);
- }else {
- setTheme(R.style.AppThemeDark_NoActionBar);
+ switch (theme){
+ case Helper.THEME_LIGHT:
+ setTheme(R.style.AppTheme_NoActionBar);
+ break;
+ case Helper.THEME_DARK:
+ setTheme(R.style.AppThemeDark_NoActionBar);
+ break;
+ case Helper.THEME_BLACK:
+ setTheme(R.style.AppThemeBlack_NoActionBar);
+ break;
+ default:
+ setTheme(R.style.AppThemeDark_NoActionBar);
}
setContentView(R.layout.activity_show_account);
setTitle("");
diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/activities/ShowConversationActivity.java b/app/src/main/java/fr/gouv/etalab/mastodon/activities/ShowConversationActivity.java
index f22428e82..3b122c0a9 100644
--- a/app/src/main/java/fr/gouv/etalab/mastodon/activities/ShowConversationActivity.java
+++ b/app/src/main/java/fr/gouv/etalab/mastodon/activities/ShowConversationActivity.java
@@ -24,6 +24,7 @@ import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.support.annotation.NonNull;
+import android.support.v4.content.ContextCompat;
import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.app.ActionBar;
import android.support.v7.widget.DividerItemDecoration;
@@ -65,6 +66,8 @@ import fr.gouv.etalab.mastodon.interfaces.OnRetrieveFeedsInterface;
import fr.gouv.etalab.mastodon.sqlite.AccountDAO;
import fr.gouv.etalab.mastodon.sqlite.Sqlite;
+import static fr.gouv.etalab.mastodon.helper.Helper.THEME_BLACK;
+
/**
* Created by Thomas on 04/05/2017.
@@ -90,16 +93,26 @@ public class ShowConversationActivity extends BaseActivity implements OnRetrieve
SharedPreferences sharedpreferences = getSharedPreferences(Helper.APP_PREFS, android.content.Context.MODE_PRIVATE);
int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_DARK);
- if( theme == Helper.THEME_LIGHT){
- setTheme(R.style.AppTheme_NoActionBar);
- }else {
- setTheme(R.style.AppThemeDark_NoActionBar);
+ switch (theme){
+ case Helper.THEME_LIGHT:
+ setTheme(R.style.AppTheme_NoActionBar);
+ break;
+ case Helper.THEME_DARK:
+ setTheme(R.style.AppThemeDark_NoActionBar);
+ break;
+ case Helper.THEME_BLACK:
+ setTheme(R.style.AppThemeBlack_NoActionBar);
+ break;
+ default:
+ setTheme(R.style.AppThemeDark_NoActionBar);
}
expanded = false;
setContentView(R.layout.activity_show_conversation);
Toolbar toolbar = findViewById(R.id.toolbar);
+ if( theme == THEME_BLACK)
+ toolbar.setBackgroundColor(ContextCompat.getColor(ShowConversationActivity.this, R.color.black));
setSupportActionBar(toolbar);
Bundle b = getIntent().getExtras();
@@ -202,9 +215,26 @@ public class ShowConversationActivity extends BaseActivity implements OnRetrieve
swipeRefreshLayout = findViewById(R.id.swipeContainer);
new RetrieveFeedsAsyncTask(getApplicationContext(), RetrieveFeedsAsyncTask.Type.ONESTATUS, statusId,null, false,false, ShowConversationActivity.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
- swipeRefreshLayout.setColorSchemeResources(R.color.mastodonC4,
- R.color.mastodonC2,
- R.color.mastodonC3);
+ switch (theme){
+ case Helper.THEME_LIGHT:
+ swipeRefreshLayout.setColorSchemeResources(R.color.mastodonC4,
+ R.color.mastodonC2,
+ R.color.mastodonC3);
+ swipeRefreshLayout.setProgressBackgroundColorSchemeColor(ContextCompat.getColor(ShowConversationActivity.this, R.color.white));
+ break;
+ case Helper.THEME_DARK:
+ swipeRefreshLayout.setColorSchemeResources(R.color.mastodonC4__,
+ R.color.mastodonC4,
+ R.color.mastodonC4);
+ swipeRefreshLayout.setProgressBackgroundColorSchemeColor(ContextCompat.getColor(ShowConversationActivity.this, R.color.mastodonC1_));
+ break;
+ case Helper.THEME_BLACK:
+ swipeRefreshLayout.setColorSchemeResources(R.color.dark_icon,
+ R.color.mastodonC2,
+ R.color.mastodonC3);
+ swipeRefreshLayout.setProgressBackgroundColorSchemeColor(ContextCompat.getColor(ShowConversationActivity.this, R.color.black_3));
+ break;
+ }
swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/activities/TootActivity.java b/app/src/main/java/fr/gouv/etalab/mastodon/activities/TootActivity.java
index 7353987de..41f804111 100644
--- a/app/src/main/java/fr/gouv/etalab/mastodon/activities/TootActivity.java
+++ b/app/src/main/java/fr/gouv/etalab/mastodon/activities/TootActivity.java
@@ -200,11 +200,20 @@ public class TootActivity extends BaseActivity implements OnRetrieveSearcAccount
userId = sharedpreferences.getString(Helper.PREF_KEY_ID, null);
instance = sharedpreferences.getString(Helper.PREF_INSTANCE, Helper.getLiveInstance(getApplicationContext()));
final int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_DARK);
- if( theme == Helper.THEME_LIGHT){
- setTheme(R.style.AppTheme);
- }else {
- setTheme(R.style.AppThemeDark);
+ switch (theme){
+ case Helper.THEME_LIGHT:
+ setTheme(R.style.AppTheme);
+ break;
+ case Helper.THEME_DARK:
+ setTheme(R.style.AppThemeDark);
+ break;
+ case Helper.THEME_BLACK:
+ setTheme(R.style.AppThemeBlack);
+ break;
+ default:
+ setTheme(R.style.AppThemeDark);
}
+
setContentView(R.layout.activity_toot);
ActionBar actionBar = getSupportActionBar();
diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/activities/WebviewActivity.java b/app/src/main/java/fr/gouv/etalab/mastodon/activities/WebviewActivity.java
index 38bb1b756..dda6bdb68 100644
--- a/app/src/main/java/fr/gouv/etalab/mastodon/activities/WebviewActivity.java
+++ b/app/src/main/java/fr/gouv/etalab/mastodon/activities/WebviewActivity.java
@@ -58,11 +58,20 @@ public class WebviewActivity extends BaseActivity {
super.onCreate(savedInstanceState);
SharedPreferences sharedpreferences = getSharedPreferences(Helper.APP_PREFS, android.content.Context.MODE_PRIVATE);
int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_DARK);
- if( theme == Helper.THEME_LIGHT){
- setTheme(R.style.AppTheme);
- }else {
- setTheme(R.style.AppThemeDark);
+ switch (theme){
+ case Helper.THEME_LIGHT:
+ setTheme(R.style.AppTheme);
+ break;
+ case Helper.THEME_DARK:
+ setTheme(R.style.AppThemeDark);
+ break;
+ case Helper.THEME_BLACK:
+ setTheme(R.style.AppThemeBlack);
+ break;
+ default:
+ setTheme(R.style.AppThemeDark);
}
+
setContentView(R.layout.activity_webview);
Bundle b = getIntent().getExtras();
if(b != null)
diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/activities/WebviewConnectActivity.java b/app/src/main/java/fr/gouv/etalab/mastodon/activities/WebviewConnectActivity.java
index bed1aba9a..635888897 100644
--- a/app/src/main/java/fr/gouv/etalab/mastodon/activities/WebviewConnectActivity.java
+++ b/app/src/main/java/fr/gouv/etalab/mastodon/activities/WebviewConnectActivity.java
@@ -59,11 +59,20 @@ public class WebviewConnectActivity extends BaseActivity {
super.onCreate(savedInstanceState);
SharedPreferences sharedpreferences = getSharedPreferences(Helper.APP_PREFS, android.content.Context.MODE_PRIVATE);
int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_DARK);
- if( theme == Helper.THEME_LIGHT){
- setTheme(R.style.AppTheme);
- }else {
- setTheme(R.style.AppThemeDark);
+ switch (theme){
+ case Helper.THEME_LIGHT:
+ setTheme(R.style.AppTheme);
+ break;
+ case Helper.THEME_DARK:
+ setTheme(R.style.AppThemeDark);
+ break;
+ case Helper.THEME_BLACK:
+ setTheme(R.style.AppThemeBlack);
+ break;
+ default:
+ setTheme(R.style.AppThemeDark);
}
+
setContentView(R.layout.activity_webview_connect);
Bundle b = getIntent().getExtras();
if(b != null)
diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/client/API.java b/app/src/main/java/fr/gouv/etalab/mastodon/client/API.java
index 73a685a27..9c2ceea5a 100644
--- a/app/src/main/java/fr/gouv/etalab/mastodon/client/API.java
+++ b/app/src/main/java/fr/gouv/etalab/mastodon/client/API.java
@@ -1628,6 +1628,9 @@ public class API {
attachment.setType(attObj.get("type").toString());
attachment.setText_url(attObj.get("text_url").toString());
attachment.setUrl(attObj.get("url").toString());
+ try {
+ attachment.setDescription(attObj.get("description").toString());
+ }catch (JSONException ignore){}
attachments.add(attachment);
}
}
diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/Status.java b/app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/Status.java
index ee1554f7f..5e208ffad 100644
--- a/app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/Status.java
+++ b/app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/Status.java
@@ -451,13 +451,21 @@ public class Status implements Parcelable{
if( (status.getReblog() != null && status.getReblog().getContent() == null) || (status.getReblog() == null && status.getContent() == null))
return;
+ SharedPreferences sharedpreferences = context.getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE);
+ boolean isCompactMode = sharedpreferences.getBoolean(Helper.SET_COMPACT_MODE, false);
+ int mode;
+ if( isCompactMode)
+ mode = Html.FROM_HTML_MODE_COMPACT;
+ else
+ mode = Html.FROM_HTML_MODE_LEGACY;
+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N)
- spannableStringContent = new SpannableString(Html.fromHtml(status.getReblog() != null ?status.getReblog().getContent():status.getContent(), Html.FROM_HTML_MODE_LEGACY));
+ spannableStringContent = new SpannableString(Html.fromHtml(status.getReblog() != null ?status.getReblog().getContent():status.getContent(), mode));
else
//noinspection deprecation
spannableStringContent = new SpannableString(Html.fromHtml(status.getReblog() != null ?status.getReblog().getContent():status.getContent()));
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N)
- spannableStringCW = new SpannableString(Html.fromHtml(status.getReblog() != null ?status.getReblog().getSpoiler_text():status.getSpoiler_text(), Html.FROM_HTML_MODE_LEGACY));
+ spannableStringCW = new SpannableString(Html.fromHtml(status.getReblog() != null ?status.getReblog().getSpoiler_text():status.getSpoiler_text(), mode));
else
//noinspection deprecation
spannableStringCW = new SpannableString(Html.fromHtml(status.getReblog() != null ?status.getReblog().getSpoiler_text():status.getSpoiler_text()));
@@ -474,9 +482,16 @@ public class Status implements Parcelable{
return;
if( (status.getReblog() != null && status.getReblog().getContent() == null) || (status.getReblog() == null && status.getContent() == null))
return;
+ SharedPreferences sharedpreferences = context.getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE);
+ boolean isCompactMode = sharedpreferences.getBoolean(Helper.SET_COMPACT_MODE, false);
+ int mode;
+ if( isCompactMode)
+ mode = Html.FROM_HTML_MODE_COMPACT;
+ else
+ mode = Html.FROM_HTML_MODE_LEGACY;
SpannableString spannableStringTranslated;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N)
- spannableStringTranslated = new SpannableString(Html.fromHtml(status.getContentTranslated(), Html.FROM_HTML_MODE_LEGACY));
+ spannableStringTranslated = new SpannableString(Html.fromHtml(status.getContentTranslated(), mode));
else
//noinspection deprecation
spannableStringTranslated = new SpannableString(Html.fromHtml(status.getContentTranslated()));
@@ -558,10 +573,16 @@ public class Status implements Parcelable{
if( ((Activity)context).isFinishing() )
return;
SpannableString spannableStringTranslated = null;
-
+ SharedPreferences sharedpreferences = context.getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE);
+ boolean isCompactMode = sharedpreferences.getBoolean(Helper.SET_COMPACT_MODE, false);
+ int mode;
+ if( isCompactMode)
+ mode = Html.FROM_HTML_MODE_COMPACT;
+ else
+ mode = Html.FROM_HTML_MODE_LEGACY;
if( status.getContentTranslated() != null) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N)
- spannableStringTranslated = new SpannableString(Html.fromHtml(status.getContentTranslated(), Html.FROM_HTML_MODE_LEGACY));
+ spannableStringTranslated = new SpannableString(Html.fromHtml(status.getContentTranslated(), mode));
else
//noinspection deprecation
spannableStringTranslated = new SpannableString(Html.fromHtml(status.getContentTranslated()));
@@ -661,7 +682,7 @@ public class Status implements Parcelable{
matchStart, matchEnd,
Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
if( matchStart >= 0 && matchEnd <= spannableString.toString().length() && matchEnd >= matchStart)
- spannableString.setSpan(new ForegroundColorSpan(ContextCompat.getColor(context, theme==Helper.THEME_DARK?R.color.mastodonC2:R.color.mastodonC4)), matchStart, matchEnd,
+ spannableString.setSpan(new ForegroundColorSpan(ContextCompat.getColor(context, (theme==Helper.THEME_DARK||theme==Helper.THEME_BLACK)?R.color.mastodonC2:R.color.mastodonC4)), matchStart, matchEnd,
Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
}
//Deals with mention to make them clickable
@@ -693,7 +714,7 @@ public class Status implements Parcelable{
startPosition, endPosition,
Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
if( startPosition >= 0 && endPosition <= spannableString.toString().length() && endPosition >= startPosition)
- spannableString.setSpan(new ForegroundColorSpan(ContextCompat.getColor(context, theme==Helper.THEME_DARK?R.color.mastodonC2:R.color.mastodonC4)), startPosition, endPosition,
+ spannableString.setSpan(new ForegroundColorSpan(ContextCompat.getColor(context, (theme==Helper.THEME_DARK||theme==Helper.THEME_BLACK)?R.color.mastodonC2:R.color.mastodonC4)), startPosition, endPosition,
Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
}
}
@@ -722,7 +743,7 @@ public class Status implements Parcelable{
}
}, matchStart, matchEnd, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
if( matchStart >= 0 && matchEnd <= spannableString.toString().length() && matchEnd >= matchStart)
- spannableString.setSpan(new ForegroundColorSpan(ContextCompat.getColor(context, theme==Helper.THEME_DARK?R.color.mastodonC2:R.color.mastodonC4)), matchStart, matchEnd,
+ spannableString.setSpan(new ForegroundColorSpan(ContextCompat.getColor(context, (theme==Helper.THEME_DARK||theme==Helper.THEME_BLACK)?R.color.mastodonC2:R.color.mastodonC4)), matchStart, matchEnd,
Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
}
return spannableString;
diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/drawers/ListAdapter.java b/app/src/main/java/fr/gouv/etalab/mastodon/drawers/ListAdapter.java
index eab8eab3e..fa06cc65c 100644
--- a/app/src/main/java/fr/gouv/etalab/mastodon/drawers/ListAdapter.java
+++ b/app/src/main/java/fr/gouv/etalab/mastodon/drawers/ListAdapter.java
@@ -100,9 +100,12 @@ public class ListAdapter extends BaseAdapter implements OnListActionInterface {
if( theme == Helper.THEME_LIGHT){
holder.search_container.setBackgroundResource(R.color.mastodonC3__);
changeDrawableColor(context, R.drawable.ic_keyboard_arrow_right,R.color.black);
- }else {
+ }else if(theme == Helper.THEME_DARK){
holder.search_container.setBackgroundResource(R.color.mastodonC1_);
changeDrawableColor(context, R.drawable.ic_keyboard_arrow_right,R.color.dark_text);
+ }else if(theme == Helper.THEME_BLACK) {
+ holder.search_container.setBackgroundResource(R.color.black_2);
+ changeDrawableColor(context, R.drawable.ic_keyboard_arrow_right,R.color.dark_text);
}
Drawable next = ContextCompat.getDrawable(context, R.drawable.ic_keyboard_arrow_right);
holder.search_title.setText(list.getTitle());
diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/drawers/NotificationsListAdapter.java b/app/src/main/java/fr/gouv/etalab/mastodon/drawers/NotificationsListAdapter.java
index a2c3f5614..3def2a6df 100644
--- a/app/src/main/java/fr/gouv/etalab/mastodon/drawers/NotificationsListAdapter.java
+++ b/app/src/main/java/fr/gouv/etalab/mastodon/drawers/NotificationsListAdapter.java
@@ -70,6 +70,7 @@ import fr.gouv.etalab.mastodon.client.Entities.Attachment;
import fr.gouv.etalab.mastodon.client.Entities.Emojis;
import fr.gouv.etalab.mastodon.client.Entities.Error;
import fr.gouv.etalab.mastodon.helper.CrossActions;
+import fr.gouv.etalab.mastodon.helper.CustomTextView;
import fr.gouv.etalab.mastodon.interfaces.OnPostActionInterface;
import fr.gouv.etalab.mastodon.interfaces.OnPostNotificationsActionInterface;
import fr.gouv.etalab.mastodon.interfaces.OnRetrieveEmojiInterface;
@@ -77,6 +78,7 @@ import fr.gouv.etalab.mastodon.client.Entities.Notification;
import fr.gouv.etalab.mastodon.client.Entities.Status;
import fr.gouv.etalab.mastodon.helper.Helper;
+import static fr.gouv.etalab.mastodon.helper.Helper.THEME_BLACK;
import static fr.gouv.etalab.mastodon.helper.Helper.THEME_DARK;
import static fr.gouv.etalab.mastodon.helper.Helper.changeDrawableColor;
import static fr.gouv.etalab.mastodon.helper.Helper.getLiveInstance;
@@ -131,7 +133,7 @@ public class NotificationsListAdapter extends RecyclerView.Adapter implements On
int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_DARK);
boolean expand_cw = sharedpreferences.getBoolean(Helper.SET_EXPAND_CW, false);
- if (theme == THEME_DARK){
+ if (theme == THEME_DARK || theme == THEME_BLACK){
holder.main_container_trans.setAlpha(.3f);
}else {
holder.main_container_trans.setAlpha(.1f);
@@ -146,6 +148,8 @@ public class NotificationsListAdapter extends RecyclerView.Adapter implements On
typeString = String.format("@%s %s", notification.getAccount().getUsername(),context.getString(R.string.notif_mention));
if( theme == Helper.THEME_DARK){
holder.card_status_container.setBackgroundColor(ContextCompat.getColor(context, R.color.notif_dark_1));
+ }else if( theme == Helper.THEME_BLACK){
+ holder.card_status_container.setBackgroundColor(ContextCompat.getColor(context, R.color.notif_black_1));
}else {
holder.card_status_container.setBackgroundColor(ContextCompat.getColor(context, R.color.notif_light_1));
}
@@ -161,6 +165,8 @@ public class NotificationsListAdapter extends RecyclerView.Adapter implements On
typeString = String.format("@%s %s", notification.getAccount().getUsername(),context.getString(R.string.notif_reblog));
if( theme == Helper.THEME_DARK){
holder.card_status_container.setBackgroundColor(ContextCompat.getColor(context, R.color.notif_dark_2));
+ }else if( theme == Helper.THEME_BLACK){
+ holder.card_status_container.setBackgroundColor(ContextCompat.getColor(context, R.color.notif_black_2));
}else {
holder.card_status_container.setBackgroundColor(ContextCompat.getColor(context, R.color.notif_light_2));
}
@@ -176,6 +182,8 @@ public class NotificationsListAdapter extends RecyclerView.Adapter implements On
typeString = String.format("@%s %s", notification.getAccount().getUsername(),context.getString(R.string.notif_favourite));
if( theme == Helper.THEME_DARK){
holder.card_status_container.setBackgroundColor(ContextCompat.getColor(context, R.color.notif_dark_3));
+ }else if( theme == Helper.THEME_BLACK){
+ holder.card_status_container.setBackgroundColor(ContextCompat.getColor(context, R.color.notif_black_3));
}else {
holder.card_status_container.setBackgroundColor(ContextCompat.getColor(context, R.color.notif_light_3));
}
@@ -191,6 +199,8 @@ public class NotificationsListAdapter extends RecyclerView.Adapter implements On
typeString = String.format("@%s %s", notification.getAccount().getUsername(),context.getString(R.string.notif_follow));
if( theme == Helper.THEME_DARK){
holder.card_status_container.setBackgroundColor(ContextCompat.getColor(context, R.color.notif_dark_4));
+ }else if( theme == Helper.THEME_BLACK){
+ holder.card_status_container.setBackgroundColor(ContextCompat.getColor(context, R.color.notif_black_4));
}else {
holder.card_status_container.setBackgroundColor(ContextCompat.getColor(context, R.color.notif_light_4));
}
@@ -198,10 +208,20 @@ public class NotificationsListAdapter extends RecyclerView.Adapter implements On
holder.main_container_trans.setVisibility(View.GONE);
break;
}
- changeDrawableColor(context, R.drawable.ic_chat_bubble_outline, R.color.mastodonC4);
- changeDrawableColor(context, R.drawable.ic_repeat_head,R.color.mastodonC4);
- changeDrawableColor(context, R.drawable.ic_star_border_header,R.color.mastodonC4);
- changeDrawableColor(context, R.drawable.ic_follow_notif_header,R.color.mastodonC4);
+
+ if( theme == THEME_BLACK){
+ changeDrawableColor(context, R.drawable.ic_chat_bubble_outline, R.color.dark_icon);
+ changeDrawableColor(context, R.drawable.ic_repeat_head,R.color.dark_icon);
+ changeDrawableColor(context, R.drawable.ic_star_border_header,R.color.dark_icon);
+ changeDrawableColor(context, R.drawable.ic_follow_notif_header,R.color.dark_icon);
+ }else {
+ changeDrawableColor(context, R.drawable.ic_chat_bubble_outline, R.color.mastodonC4);
+ changeDrawableColor(context, R.drawable.ic_repeat_head,R.color.mastodonC4);
+ changeDrawableColor(context, R.drawable.ic_star_border_header,R.color.mastodonC4);
+ changeDrawableColor(context, R.drawable.ic_follow_notif_header,R.color.mastodonC4);
+ }
+
+
holder.notification_type.setText(typeString);
if( imgH != null) {
holder.notification_type.setCompoundDrawablePadding((int)Helper.convertDpToPixel(5, context));
@@ -221,7 +241,7 @@ public class NotificationsListAdapter extends RecyclerView.Adapter implements On
//Manages theme for icon colors
- if( theme == Helper.THEME_DARK){
+ if( theme == Helper.THEME_DARK || theme == THEME_BLACK){
changeDrawableColor(context, R.drawable.ic_reply,R.color.dark_icon);
changeDrawableColor(context, holder.status_more, R.color.dark_icon);
changeDrawableColor(context, holder.status_privacy, R.color.dark_icon);
@@ -300,7 +320,7 @@ public class NotificationsListAdapter extends RecyclerView.Adapter implements On
changeDrawableColor(context, R.drawable.ic_star,R.color.marked_icon);
imgFav = ContextCompat.getDrawable(context, R.drawable.ic_star);
}else {
- if( theme == THEME_DARK)
+ if( theme == THEME_DARK || theme == THEME_BLACK)
changeDrawableColor(context, R.drawable.ic_star_border,R.color.dark_icon);
else
changeDrawableColor(context, R.drawable.ic_star_border,R.color.black);
@@ -311,13 +331,13 @@ public class NotificationsListAdapter extends RecyclerView.Adapter implements On
changeDrawableColor(context, R.drawable.ic_repeat_boost,R.color.boost_icon);
imgReblog = ContextCompat.getDrawable(context, R.drawable.ic_repeat_boost);
}else {
- if( theme == THEME_DARK)
+ if( theme == THEME_DARK || theme == THEME_BLACK)
changeDrawableColor(context, R.drawable.ic_repeat,R.color.dark_icon);
else
changeDrawableColor(context, R.drawable.ic_repeat,R.color.black);
imgReblog = ContextCompat.getDrawable(context, R.drawable.ic_repeat);
}
- if( theme == THEME_DARK)
+ if( theme == THEME_DARK || theme == THEME_BLACK)
changeDrawableColor(context, R.drawable.ic_reply,R.color.dark_icon);
else
changeDrawableColor(context, R.drawable.ic_reply,R.color.black);
@@ -371,7 +391,7 @@ public class NotificationsListAdapter extends RecyclerView.Adapter implements On
holder.status_reblog_count.setCompoundDrawables(imgReblog, null, null, null);
holder.status_reply.setCompoundDrawables(imgReply, null, null, null);
- if( theme == THEME_DARK){
+ if( theme == THEME_DARK || theme == THEME_BLACK){
holder.status_favorite_count.setTextColor(ContextCompat.getColor(context, R.color.dark_icon));
holder.status_reblog_count.setTextColor(ContextCompat.getColor(context, R.color.dark_icon));
holder.status_reply.setTextColor(ContextCompat.getColor(context, R.color.dark_icon));
@@ -1029,10 +1049,10 @@ public class NotificationsListAdapter extends RecyclerView.Adapter implements On
class ViewHolder extends RecyclerView.ViewHolder {
FrameLayout card_status_container;
- TextView notification_status_content;
+ CustomTextView notification_status_content;
TextView notification_type;
LinearLayout status_spoiler_container;
- TextView status_spoiler;
+ CustomTextView status_spoiler;
Button status_spoiler_button;
TextView notification_account_username;
ImageView notification_account_profile;
diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/drawers/SearchTootsListAdapter.java b/app/src/main/java/fr/gouv/etalab/mastodon/drawers/SearchTootsListAdapter.java
index 56f2def44..26bf591b0 100644
--- a/app/src/main/java/fr/gouv/etalab/mastodon/drawers/SearchTootsListAdapter.java
+++ b/app/src/main/java/fr/gouv/etalab/mastodon/drawers/SearchTootsListAdapter.java
@@ -97,9 +97,12 @@ public class SearchTootsListAdapter extends BaseAdapter {
if( theme == Helper.THEME_LIGHT){
holder.search_container.setBackgroundResource(R.color.mastodonC3__);
changeDrawableColor(context, R.drawable.ic_keyboard_arrow_right,R.color.black);
- }else {
+ }else if(theme == Helper.THEME_DARK){
holder.search_container.setBackgroundResource(R.color.mastodonC1_);
changeDrawableColor(context, R.drawable.ic_keyboard_arrow_right,R.color.dark_text);
+ }else if(theme == Helper.THEME_BLACK) {
+ holder.search_container.setBackgroundResource(R.color.black_2);
+ changeDrawableColor(context, R.drawable.ic_keyboard_arrow_right,R.color.dark_text);
}
Drawable next = ContextCompat.getDrawable(context, R.drawable.ic_keyboard_arrow_right);
holder.search_title.setText(search);
diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/drawers/StatusListAdapter.java b/app/src/main/java/fr/gouv/etalab/mastodon/drawers/StatusListAdapter.java
index 522017102..59df841c9 100644
--- a/app/src/main/java/fr/gouv/etalab/mastodon/drawers/StatusListAdapter.java
+++ b/app/src/main/java/fr/gouv/etalab/mastodon/drawers/StatusListAdapter.java
@@ -105,6 +105,7 @@ import fr.gouv.etalab.mastodon.client.Entities.Error;
import fr.gouv.etalab.mastodon.client.Entities.Status;
import fr.gouv.etalab.mastodon.fragments.DisplayStatusFragment;
import fr.gouv.etalab.mastodon.helper.CrossActions;
+import fr.gouv.etalab.mastodon.helper.CustomTextView;
import fr.gouv.etalab.mastodon.helper.Helper;
import fr.gouv.etalab.mastodon.interfaces.OnPostActionInterface;
import fr.gouv.etalab.mastodon.interfaces.OnRetrieveCardInterface;
@@ -117,6 +118,7 @@ import fr.gouv.etalab.mastodon.sqlite.StatusCacheDAO;
import fr.gouv.etalab.mastodon.sqlite.TempMuteDAO;
import static fr.gouv.etalab.mastodon.activities.MainActivity.currentLocale;
+import static fr.gouv.etalab.mastodon.helper.Helper.THEME_BLACK;
import static fr.gouv.etalab.mastodon.helper.Helper.THEME_DARK;
import static fr.gouv.etalab.mastodon.helper.Helper.changeDrawableColor;
import static fr.gouv.etalab.mastodon.helper.Helper.getLiveInstance;
@@ -139,6 +141,7 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct
private String targetedId;
private final int DISPLAYED_STATUS = 1;
private final int FOCUSED_STATUS = 2;
+ private final int COMPACT_STATUS = 3;
private int conversationPosition;
private List timedMute;
@@ -223,7 +226,7 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct
@Override
public void onViewAttachedToWindow(RecyclerView.ViewHolder holder) {
super.onViewAttachedToWindow(holder);
- if( holder.getItemViewType() == DISPLAYED_STATUS) {
+ if( holder.getItemViewType() == DISPLAYED_STATUS || holder.getItemViewType() == COMPACT_STATUS) {
final ViewHolder viewHolder = (ViewHolder) holder;
// Bug workaround for losing text selection ability, see:
// https://code.google.com/p/android/issues/detail?id=208169
@@ -238,9 +241,9 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct
class ViewHolder extends RecyclerView.ViewHolder{
LinearLayout status_content_container;
LinearLayout status_spoiler_container;
- TextView status_spoiler;
+ CustomTextView status_spoiler;
Button status_spoiler_button;
- TextView status_content;
+ CustomTextView status_content;
TextView status_content_translated;
LinearLayout status_content_translated_container;
TextView status_account_username;
@@ -373,10 +376,11 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct
Status status = statuses.get(position);
SharedPreferences sharedpreferences = context.getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE);
+ boolean isCompactMode = sharedpreferences.getBoolean(Helper.SET_COMPACT_MODE, false);
int HIDDEN_STATUS = 0;
String filter;
if( type == RetrieveFeedsAsyncTask.Type.CACHE_BOOKMARKS)
- return DISPLAYED_STATUS;
+ return isCompactMode?COMPACT_STATUS:DISPLAYED_STATUS;
else if( type == RetrieveFeedsAsyncTask.Type.CONTEXT && position == conversationPosition)
return FOCUSED_STATUS;
else if( type == RetrieveFeedsAsyncTask.Type.HOME)
@@ -409,9 +413,9 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct
if (timedMute.contains(status.getAccount().getId()))
return HIDDEN_STATUS;
else
- return DISPLAYED_STATUS;
+ return isCompactMode?COMPACT_STATUS:DISPLAYED_STATUS;
}else {
- return DISPLAYED_STATUS;
+ return isCompactMode?COMPACT_STATUS:DISPLAYED_STATUS;
}
}
}else {
@@ -421,9 +425,9 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct
else if( status.getIn_reply_to_id() != null && !status.getIn_reply_to_id().equals("null") && !((ShowAccountActivity)context).showReplies())
return HIDDEN_STATUS;
else
- return DISPLAYED_STATUS;
+ return isCompactMode?COMPACT_STATUS:DISPLAYED_STATUS;
}else
- return DISPLAYED_STATUS;
+ return isCompactMode?COMPACT_STATUS:DISPLAYED_STATUS;
}
}
@@ -432,6 +436,8 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
if( viewType == DISPLAYED_STATUS)
return new ViewHolder(layoutInflater.inflate(R.layout.drawer_status, parent, false));
+ else if(viewType == COMPACT_STATUS)
+ return new ViewHolder(layoutInflater.inflate(R.layout.drawer_status_compact, parent, false));
else if(viewType == FOCUSED_STATUS)
return new ViewHolder(layoutInflater.inflate(R.layout.drawer_status_focused, parent, false));
else
@@ -443,7 +449,7 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct
@Override
public void onBindViewHolder(@NonNull final RecyclerView.ViewHolder viewHolder, int position) {
- if( viewHolder.getItemViewType() == DISPLAYED_STATUS || viewHolder.getItemViewType() == FOCUSED_STATUS){
+ if( viewHolder.getItemViewType() == DISPLAYED_STATUS || viewHolder.getItemViewType() == FOCUSED_STATUS || viewHolder.getItemViewType() == COMPACT_STATUS){
final ViewHolder holder = (ViewHolder) viewHolder;
final Status status = statuses.get(position);
@@ -462,7 +468,7 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct
boolean displayBookmarkButton = sharedpreferences.getBoolean(Helper.SET_SHOW_BOOKMARK, true);
boolean fullAttachement = sharedpreferences.getBoolean(Helper.SET_FULL_PREVIEW, false);
- if( displayBookmarkButton)
+ if( getItemViewType(position) != COMPACT_STATUS && displayBookmarkButton)
holder.status_bookmark.setVisibility(View.VISIBLE);
else
holder.status_bookmark.setVisibility(View.GONE);
@@ -521,7 +527,7 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct
holder.status_bookmark.setImageDrawable(ContextCompat.getDrawable(context, R.drawable.ic_bookmark));
else
holder.status_bookmark.setImageDrawable(ContextCompat.getDrawable(context, R.drawable.ic_bookmark_border));
- changeDrawableColor(context, R.drawable.ic_fiber_new,R.color.mastodonC4);
+
if( status.isNew())
holder.new_element.setVisibility(View.VISIBLE);
else
@@ -562,8 +568,18 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct
//Manages theme for icon colors
int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_DARK);
+ if( theme == Helper.THEME_BLACK)
+ changeDrawableColor(context, R.drawable.ic_fiber_new,R.color.dark_icon);
+ else
+ changeDrawableColor(context, R.drawable.ic_fiber_new,R.color.mastodonC4);
+
+ if( getItemViewType(position) == COMPACT_STATUS )
+ holder.status_privacy.setVisibility(View.GONE);
+ else
+ holder.status_privacy.setVisibility(View.VISIBLE);
+
boolean expand_cw = sharedpreferences.getBoolean(Helper.SET_EXPAND_CW, false);
- if( theme == Helper.THEME_DARK){
+ if( theme == Helper.THEME_DARK || theme == Helper.THEME_BLACK){
changeDrawableColor(context, R.drawable.ic_reply,R.color.dark_icon);
changeDrawableColor(context, holder.status_more, R.color.dark_icon);
changeDrawableColor(context, holder.status_privacy, R.color.dark_icon);
@@ -577,8 +593,7 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct
holder.status_favorite_count.setTextColor(ContextCompat.getColor(context, R.color.dark_icon));
holder.status_reblog_count.setTextColor(ContextCompat.getColor(context, R.color.dark_icon));
holder.status_reply.setTextColor(ContextCompat.getColor(context, R.color.dark_icon));
- if( type != RetrieveFeedsAsyncTask.Type.CONTEXT)
- holder.status_toot_date.setTextColor(ContextCompat.getColor(context, R.color.dark_icon));
+ holder.status_toot_date.setTextColor(ContextCompat.getColor(context, R.color.dark_icon));
holder.status_account_displayname.setTextColor(ContextCompat.getColor(context, R.color.dark_icon));
}else {
changeDrawableColor(context, R.drawable.ic_reply,R.color.black);
@@ -620,44 +635,11 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct
holder.status_spoiler.setText(status.getContentSpanCW(), TextView.BufferType.SPANNABLE);
holder.status_content.setMovementMethod(LinkMovementMethod.getInstance());
holder.status_spoiler.setMovementMethod(LinkMovementMethod.getInstance());
- //Manages translations
- final MyTransL myTransL = MyTransL.getInstance(MyTransL.translatorEngine.YANDEX);
- myTransL.setObfuscation(true);
- myTransL.setYandexAPIKey(Helper.YANDEX_KEY);
+
holder.status_translate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
- if( !status.isTranslated() ){
- String statusToTranslate;
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N)
- statusToTranslate = Html.fromHtml(status.getReblog() != null ?status.getReblog().getContent():status.getContent(), Html.FROM_HTML_MODE_LEGACY).toString();
- else
- //noinspection deprecation
- statusToTranslate = Html.fromHtml(status.getReblog() != null ?status.getReblog().getContent():status.getContent()).toString();
- //TODO: removes the replaceAll once fixed with the lib
- myTransL.translate(statusToTranslate, myTransL.getLocale(), new Results() {
- @Override
- public void onSuccess(Translate translate) {
- if( translate.getTranslatedContent() != null) {
- status.setTranslated(true);
- status.setTranslationShown(true);
- status.setContentTranslated(translate.getTranslatedContent());
- status.makeClickableTranslation(context);
- status.makeEmojisTranslation(context, StatusListAdapter.this);
- notifyStatusChanged(status);
- }else {
- Toast.makeText(context, R.string.toast_error_translate, Toast.LENGTH_LONG).show();
- }
- }
- @Override
- public void onFail(HttpsConnectionException e) {
- Toast.makeText(context, R.string.toast_error_translate, Toast.LENGTH_LONG).show();
- }
- });
- }else {
- status.setTranslationShown(!status.isTranslationShown());
- notifyStatusChanged(status);
- }
+ translateToot(status);
}
});
@@ -716,7 +698,7 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct
//Change the color in gray for accounts in DARK Theme only
Spannable wordtoSpan = new SpannableString(name);
- if( theme == THEME_DARK) {
+ if( theme == THEME_DARK || theme == Helper.THEME_BLACK) {
Pattern hashAcct;
if( status.getReblog() != null)
hashAcct = Pattern.compile("\\s(@"+status.getReblog().getAccount().getAcct()+")");
@@ -758,7 +740,7 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct
holder.status_mention_spoiler.setMovementMethod(LinkMovementMethod.getInstance());
boolean displayBoost = sharedpreferences.getBoolean(Helper.SET_DISPLAY_BOOST_COUNT, true);
- if( displayBoost) {
+ if( getItemViewType(position) != COMPACT_STATUS && displayBoost) {
if( status.getReblog() == null)
holder.status_favorite_count.setText(String.valueOf(status.getFavourites_count()));
else
@@ -790,7 +772,7 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct
holder.status_account_profile.setVisibility(View.VISIBLE);
}
holder.status_action_container.setVisibility(View.VISIBLE);
- if( trans_forced || (translator != Helper.TRANS_NONE && currentLocale != null && status.getLanguage() != null && !status.getLanguage().trim().equals(currentLocale))){
+ if( ( getItemViewType(position) != COMPACT_STATUS ) && (trans_forced || (translator != Helper.TRANS_NONE && currentLocale != null && status.getLanguage() != null && !status.getLanguage().trim().equals(currentLocale)))){
holder.status_translate.setVisibility(View.VISIBLE);
}else {
holder.status_translate.setVisibility(View.GONE);
@@ -899,7 +881,7 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct
else
status.setSensitive(true);
- if( theme == Helper.THEME_DARK)
+ if( theme == Helper.THEME_DARK || theme == Helper.THEME_BLACK)
changeDrawableColor(context, R.drawable.ic_photo,R.color.dark_text);
else
changeDrawableColor(context, R.drawable.ic_photo,R.color.mastodonC4);
@@ -916,7 +898,7 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct
else
status.setSensitive(true);
- if( theme == Helper.THEME_DARK)
+ if( theme == Helper.THEME_DARK || theme == Helper.THEME_BLACK)
changeDrawableColor(context, R.drawable.ic_photo,R.color.dark_text);
else
changeDrawableColor(context, R.drawable.ic_photo,R.color.mastodonC4);
@@ -968,7 +950,7 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct
changeDrawableColor(context, R.drawable.ic_star,R.color.marked_icon);
imgFav = ContextCompat.getDrawable(context, R.drawable.ic_star);
}else {
- if( theme == THEME_DARK)
+ if( theme == THEME_DARK || theme == THEME_BLACK)
changeDrawableColor(context, R.drawable.ic_star_border,R.color.dark_icon);
else
changeDrawableColor(context, R.drawable.ic_star_border,R.color.black);
@@ -979,7 +961,7 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct
changeDrawableColor(context, R.drawable.ic_repeat_boost,R.color.boost_icon);
imgReblog = ContextCompat.getDrawable(context, R.drawable.ic_repeat_boost);
}else {
- if( theme == THEME_DARK)
+ if( theme == THEME_DARK || theme == THEME_BLACK)
changeDrawableColor(context, R.drawable.ic_repeat,R.color.dark_icon);
else
changeDrawableColor(context, R.drawable.ic_repeat,R.color.black);
@@ -987,7 +969,7 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct
}
- if( theme == THEME_DARK)
+ if( theme == THEME_DARK || theme == THEME_BLACK)
changeDrawableColor(context, R.drawable.ic_reply,R.color.dark_icon);
else
changeDrawableColor(context, R.drawable.ic_reply,R.color.black);
@@ -1015,7 +997,7 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct
changeDrawableColor(context, R.drawable.ic_pin_drop_p,R.color.marked_icon);
imgPin = ContextCompat.getDrawable(context, R.drawable.ic_pin_drop_p);
}else {
- if( theme == THEME_DARK)
+ if( theme == THEME_DARK || theme == THEME_BLACK)
changeDrawableColor(context, R.drawable.ic_pin_drop,R.color.dark_icon);
else
changeDrawableColor(context, R.drawable.ic_pin_drop,R.color.black);
@@ -1042,7 +1024,7 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct
}
});
//Click on a conversation
- if( getItemViewType(position) == DISPLAYED_STATUS) {
+ if( getItemViewType(position) == DISPLAYED_STATUS || getItemViewType(position) == COMPACT_STATUS) {
holder.status_content.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
@@ -1076,16 +1058,20 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct
}
if( theme == Helper.THEME_LIGHT){
holder.main_container.setBackgroundResource(R.color.mastodonC3__);
- }else {
+ }else if (theme == Helper.THEME_DARK){
holder.main_container.setBackgroundResource(R.color.mastodonC1_);
+ }else if (theme == Helper.THEME_BLACK){
+ holder.main_container.setBackgroundResource(R.color.black);
}
if( type == RetrieveFeedsAsyncTask.Type.CONTEXT ){
if( position == conversationPosition){
if( theme == Helper.THEME_LIGHT)
holder.main_container.setBackgroundResource(R.color.mastodonC3_);
- else
+ else if( theme == Helper.THEME_DARK)
holder.main_container.setBackgroundResource(R.color.mastodonC1___);
+ else if( theme == Helper.THEME_BLACK)
+ holder.main_container.setBackgroundResource(R.color.black_2);
if( status.getCard() != null){
holder.status_cardview_content.setText(status.getCard().getDescription());
@@ -1137,8 +1123,10 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct
holder.status_cardview_video.setVisibility(View.GONE);
if( theme == Helper.THEME_LIGHT)
holder.main_container.setBackgroundResource(R.color.mastodonC3__);
- else
+ else if( theme == Helper.THEME_DARK)
holder.main_container.setBackgroundResource(R.color.mastodonC1_);
+ else if (theme == Helper.THEME_BLACK)
+ holder.main_container.setBackgroundResource(R.color.black);
}
}
@@ -1407,6 +1395,9 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct
builderInner.setTitle(stringArrayConf[1]);
doAction = API.StatusAction.BLOCK;
break;
+ case R.id.action_translate:
+ translateToot(status);
+ return true;
case R.id.action_report:
builderInner = new AlertDialog.Builder(context);
builderInner.setTitle(stringArrayConf[2]);
@@ -1447,19 +1438,25 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct
else
url = status.getUrl();
}
- String extra_text = (status.getReblog() != null)?status.getReblog().getAccount().getAcct():status.getAccount().getAcct();
- if( extra_text.split("@").length == 1)
- extra_text = "@" + extra_text + "@" + Helper.getLiveInstance(context);
- else
- extra_text = "@" + extra_text;
- extra_text += " " + Helper.shortnameToUnicode(":link:",true) + " " + url + "\r\n-\n";
- final String contentToot;
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N)
- contentToot = Html.fromHtml((status.getReblog() != null)?status.getReblog().getContent():status.getContent(), Html.FROM_HTML_MODE_LEGACY).toString();
- else
- //noinspection deprecation
- contentToot = Html.fromHtml((status.getReblog() != null)?status.getReblog().getContent():status.getContent()).toString();
- extra_text += contentToot;
+ String extra_text;
+ boolean share_details = sharedpreferences.getBoolean(Helper.SET_SHARE_DETAILS, true);
+ if( share_details) {
+ extra_text = (status.getReblog() != null) ? status.getReblog().getAccount().getAcct() : status.getAccount().getAcct();
+ if (extra_text.split("@").length == 1)
+ extra_text = "@" + extra_text + "@" + Helper.getLiveInstance(context);
+ else
+ extra_text = "@" + extra_text;
+ extra_text += " " + Helper.shortnameToUnicode(":link:", true) + " " + url + "\r\n-\n";
+ final String contentToot;
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N)
+ contentToot = Html.fromHtml((status.getReblog() != null) ? status.getReblog().getContent() : status.getContent(), Html.FROM_HTML_MODE_LEGACY).toString();
+ else
+ //noinspection deprecation
+ contentToot = Html.fromHtml((status.getReblog() != null) ? status.getReblog().getContent() : status.getContent()).toString();
+ extra_text += contentToot;
+ }else {
+ extra_text = url;
+ }
sendIntent.putExtra(Intent.EXTRA_TEXT, extra_text);
sendIntent.setType("text/plain");
context.startActivity(Intent.createChooser(sendIntent, context.getString(R.string.share_with)));
@@ -1573,6 +1570,7 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct
if( status.getApplication() != null && getItemViewType(position) == FOCUSED_STATUS){
Application application = status.getApplication();
holder.status_toot_app.setText(application.getName());
+ holder.status_toot_app.setVisibility(View.VISIBLE);
if( application.getWebsite() != null && !application.getWebsite().trim().equals("null"))
holder.status_toot_app.setOnClickListener(new View.OnClickListener() {
@Override
@@ -1580,6 +1578,8 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct
Helper.openBrowser(context, application.getWebsite());
}
});
+ }else {
+ holder.status_toot_app.setVisibility(View.GONE);
}
}
}
@@ -1957,4 +1957,42 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct
}
+
+ private void translateToot(Status status){
+ //Manages translations
+ final MyTransL myTransL = MyTransL.getInstance(MyTransL.translatorEngine.YANDEX);
+ myTransL.setObfuscation(true);
+ myTransL.setYandexAPIKey(Helper.YANDEX_KEY);
+ if( !status.isTranslated() ){
+ String statusToTranslate;
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N)
+ statusToTranslate = Html.fromHtml(status.getReblog() != null ?status.getReblog().getContent():status.getContent(), Html.FROM_HTML_MODE_LEGACY).toString();
+ else
+ //noinspection deprecation
+ statusToTranslate = Html.fromHtml(status.getReblog() != null ?status.getReblog().getContent():status.getContent()).toString();
+ //TODO: removes the replaceAll once fixed with the lib
+ myTransL.translate(statusToTranslate, myTransL.getLocale(), new Results() {
+ @Override
+ public void onSuccess(Translate translate) {
+ if( translate.getTranslatedContent() != null) {
+ status.setTranslated(true);
+ status.setTranslationShown(true);
+ status.setContentTranslated(translate.getTranslatedContent());
+ status.makeClickableTranslation(context);
+ status.makeEmojisTranslation(context, StatusListAdapter.this);
+ notifyStatusChanged(status);
+ }else {
+ Toast.makeText(context, R.string.toast_error_translate, Toast.LENGTH_LONG).show();
+ }
+ }
+ @Override
+ public void onFail(HttpsConnectionException e) {
+ Toast.makeText(context, R.string.toast_error_translate, Toast.LENGTH_LONG).show();
+ }
+ });
+ }else {
+ status.setTranslationShown(!status.isTranslationShown());
+ notifyStatusChanged(status);
+ }
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/drawers/TagsSearchAdapter.java b/app/src/main/java/fr/gouv/etalab/mastodon/drawers/TagsSearchAdapter.java
index 4b117b2c1..75c11a46c 100644
--- a/app/src/main/java/fr/gouv/etalab/mastodon/drawers/TagsSearchAdapter.java
+++ b/app/src/main/java/fr/gouv/etalab/mastodon/drawers/TagsSearchAdapter.java
@@ -66,7 +66,7 @@ public class TagsSearchAdapter extends ArrayAdapter implements Filterabl
@NonNull
@Override
- public View getView(final int position, View convertView, ViewGroup parent) {
+ public View getView(final int position, View convertView, @NonNull ViewGroup parent) {
final String tag = tags.get(position);
final ViewHolder holder;
diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/fragments/DisplayAccountsFragment.java b/app/src/main/java/fr/gouv/etalab/mastodon/fragments/DisplayAccountsFragment.java
index 5e67529c8..41a2da86b 100644
--- a/app/src/main/java/fr/gouv/etalab/mastodon/fragments/DisplayAccountsFragment.java
+++ b/app/src/main/java/fr/gouv/etalab/mastodon/fragments/DisplayAccountsFragment.java
@@ -19,6 +19,7 @@ import android.os.AsyncTask;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.app.Fragment;
+import android.support.v4.content.ContextCompat;
import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.widget.DividerItemDecoration;
import android.support.v7.widget.LinearLayoutManager;
@@ -32,6 +33,7 @@ import android.widget.Toast;
import java.util.ArrayList;
import java.util.List;
+import fr.gouv.etalab.mastodon.activities.ListActivity;
import fr.gouv.etalab.mastodon.asynctasks.RetrieveManyRelationshipsAsyncTask;
import fr.gouv.etalab.mastodon.client.APIResponse;
import fr.gouv.etalab.mastodon.client.Entities.Account;
@@ -132,9 +134,28 @@ public class DisplayAccountsFragment extends Fragment implements OnRetrieveAccou
asyncTask = new RetrieveAccountsAsyncTask(context, type, targetedId, max_id, DisplayAccountsFragment.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
}
});
- swipeRefreshLayout.setColorSchemeResources(R.color.mastodonC4,
- R.color.mastodonC2,
- R.color.mastodonC3);
+ SharedPreferences sharedpreferences = context.getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE);
+ int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_DARK);
+ switch (theme){
+ case Helper.THEME_LIGHT:
+ swipeRefreshLayout.setColorSchemeResources(R.color.mastodonC4,
+ R.color.mastodonC2,
+ R.color.mastodonC3);
+ swipeRefreshLayout.setProgressBackgroundColorSchemeColor(ContextCompat.getColor(context, R.color.white));
+ break;
+ case Helper.THEME_DARK:
+ swipeRefreshLayout.setColorSchemeResources(R.color.mastodonC4__,
+ R.color.mastodonC4,
+ R.color.mastodonC4);
+ swipeRefreshLayout.setProgressBackgroundColorSchemeColor(ContextCompat.getColor(context, R.color.mastodonC1_));
+ break;
+ case Helper.THEME_BLACK:
+ swipeRefreshLayout.setColorSchemeResources(R.color.dark_icon,
+ R.color.mastodonC2,
+ R.color.mastodonC3);
+ swipeRefreshLayout.setProgressBackgroundColorSchemeColor(ContextCompat.getColor(context, R.color.black_3));
+ break;
+ }
if (type != RetrieveAccountsAsyncTask.Type.FOLLOWERS && type != RetrieveAccountsAsyncTask.Type.FOLLOWING)
asyncTask = new RetrieveAccountsAsyncTask(context, type, max_id, DisplayAccountsFragment.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/fragments/DisplayFollowRequestSentFragment.java b/app/src/main/java/fr/gouv/etalab/mastodon/fragments/DisplayFollowRequestSentFragment.java
index a51d957cb..e8719af92 100644
--- a/app/src/main/java/fr/gouv/etalab/mastodon/fragments/DisplayFollowRequestSentFragment.java
+++ b/app/src/main/java/fr/gouv/etalab/mastodon/fragments/DisplayFollowRequestSentFragment.java
@@ -20,6 +20,7 @@ import android.os.AsyncTask;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.app.Fragment;
+import android.support.v4.content.ContextCompat;
import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.widget.DividerItemDecoration;
import android.support.v7.widget.LinearLayoutManager;
@@ -122,10 +123,27 @@ public class DisplayFollowRequestSentFragment extends Fragment implements OnRetr
asyncTask = new RetrieveFollowRequestSentAsyncTask(context, max_id, DisplayFollowRequestSentFragment.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
}
});
- swipeRefreshLayout.setColorSchemeResources(R.color.mastodonC4,
- R.color.mastodonC2,
- R.color.mastodonC3);
-
+ int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_DARK);
+ switch (theme){
+ case Helper.THEME_LIGHT:
+ swipeRefreshLayout.setColorSchemeResources(R.color.mastodonC4,
+ R.color.mastodonC2,
+ R.color.mastodonC3);
+ swipeRefreshLayout.setProgressBackgroundColorSchemeColor(ContextCompat.getColor(context, R.color.white));
+ break;
+ case Helper.THEME_DARK:
+ swipeRefreshLayout.setColorSchemeResources(R.color.mastodonC4__,
+ R.color.mastodonC4,
+ R.color.mastodonC4);
+ swipeRefreshLayout.setProgressBackgroundColorSchemeColor(ContextCompat.getColor(context, R.color.mastodonC1_));
+ break;
+ case Helper.THEME_BLACK:
+ swipeRefreshLayout.setColorSchemeResources(R.color.dark_icon,
+ R.color.mastodonC2,
+ R.color.mastodonC3);
+ swipeRefreshLayout.setProgressBackgroundColorSchemeColor(ContextCompat.getColor(context, R.color.black_3));
+ break;
+ }
asyncTask = new RetrieveFollowRequestSentAsyncTask(context, max_id, DisplayFollowRequestSentFragment.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
return rootView;
diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/fragments/DisplayNotificationsFragment.java b/app/src/main/java/fr/gouv/etalab/mastodon/fragments/DisplayNotificationsFragment.java
index 7cfc1f1e1..0df866c4b 100644
--- a/app/src/main/java/fr/gouv/etalab/mastodon/fragments/DisplayNotificationsFragment.java
+++ b/app/src/main/java/fr/gouv/etalab/mastodon/fragments/DisplayNotificationsFragment.java
@@ -21,6 +21,7 @@ import android.os.Handler;
import android.os.Looper;
import android.support.annotation.NonNull;
import android.support.v4.app.Fragment;
+import android.support.v4.content.ContextCompat;
import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.widget.DividerItemDecoration;
import android.support.v7.widget.LinearLayoutManager;
@@ -133,9 +134,28 @@ public class DisplayNotificationsFragment extends Fragment implements OnRetrieve
asyncTask = new RetrieveNotificationsAsyncTask(context, true, null, null, DisplayNotificationsFragment.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
}
});
- swipeRefreshLayout.setColorSchemeResources(R.color.mastodonC4,
- R.color.mastodonC2,
- R.color.mastodonC3);
+ SharedPreferences sharedpreferences = context.getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE);
+ int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_DARK);
+ switch (theme){
+ case Helper.THEME_LIGHT:
+ swipeRefreshLayout.setColorSchemeResources(R.color.mastodonC4,
+ R.color.mastodonC2,
+ R.color.mastodonC3);
+ swipeRefreshLayout.setProgressBackgroundColorSchemeColor(ContextCompat.getColor(context, R.color.white));
+ break;
+ case Helper.THEME_DARK:
+ swipeRefreshLayout.setColorSchemeResources(R.color.mastodonC4__,
+ R.color.mastodonC4,
+ R.color.mastodonC4);
+ swipeRefreshLayout.setProgressBackgroundColorSchemeColor(ContextCompat.getColor(context, R.color.mastodonC1_));
+ break;
+ case Helper.THEME_BLACK:
+ swipeRefreshLayout.setColorSchemeResources(R.color.dark_icon,
+ R.color.mastodonC2,
+ R.color.mastodonC3);
+ swipeRefreshLayout.setProgressBackgroundColorSchemeColor(ContextCompat.getColor(context, R.color.black_3));
+ break;
+ }
if( context != null)
asyncTask = new RetrieveNotificationsAsyncTask(context, true, null, max_id, DisplayNotificationsFragment.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
else
diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/fragments/DisplaySearchFragment.java b/app/src/main/java/fr/gouv/etalab/mastodon/fragments/DisplaySearchFragment.java
index 1441c6c88..1cc12b048 100644
--- a/app/src/main/java/fr/gouv/etalab/mastodon/fragments/DisplaySearchFragment.java
+++ b/app/src/main/java/fr/gouv/etalab/mastodon/fragments/DisplaySearchFragment.java
@@ -117,7 +117,9 @@ public class DisplaySearchFragment extends Fragment {
int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_DARK);
if( theme == Helper.THEME_LIGHT){
changeDrawableColor(context, R.drawable.ic_keyboard_arrow_right,R.color.black);
- }else {
+ }else if(theme == Helper.THEME_DARK){
+ changeDrawableColor(context, R.drawable.ic_keyboard_arrow_right,R.color.dark_text);
+ }else if(theme == Helper.THEME_BLACK) {
changeDrawableColor(context, R.drawable.ic_keyboard_arrow_right,R.color.dark_text);
}
searchTootsListAdapter.notifyDataSetChanged();
diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/fragments/DisplayStatusFragment.java b/app/src/main/java/fr/gouv/etalab/mastodon/fragments/DisplayStatusFragment.java
index 3b1f16e23..ebcf19d65 100644
--- a/app/src/main/java/fr/gouv/etalab/mastodon/fragments/DisplayStatusFragment.java
+++ b/app/src/main/java/fr/gouv/etalab/mastodon/fragments/DisplayStatusFragment.java
@@ -23,6 +23,7 @@ import android.os.Handler;
import android.os.Looper;
import android.support.annotation.NonNull;
import android.support.v4.app.Fragment;
+import android.support.v4.content.ContextCompat;
import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
@@ -180,9 +181,28 @@ public class DisplayStatusFragment extends Fragment implements OnRetrieveFeedsIn
}
}
});
- swipeRefreshLayout.setColorSchemeResources(R.color.mastodonC4,
- R.color.mastodonC2,
- R.color.mastodonC3);
+ SharedPreferences sharedpreferences = context.getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE);
+ int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_DARK);
+ switch (theme){
+ case Helper.THEME_LIGHT:
+ swipeRefreshLayout.setColorSchemeResources(R.color.mastodonC4,
+ R.color.mastodonC2,
+ R.color.mastodonC3);
+ swipeRefreshLayout.setProgressBackgroundColorSchemeColor(ContextCompat.getColor(context, R.color.white));
+ break;
+ case Helper.THEME_DARK:
+ swipeRefreshLayout.setColorSchemeResources(R.color.mastodonC4__,
+ R.color.mastodonC4,
+ R.color.mastodonC4);
+ swipeRefreshLayout.setProgressBackgroundColorSchemeColor(ContextCompat.getColor(context, R.color.mastodonC1_));
+ break;
+ case Helper.THEME_BLACK:
+ swipeRefreshLayout.setColorSchemeResources(R.color.dark_icon,
+ R.color.mastodonC2,
+ R.color.mastodonC3);
+ swipeRefreshLayout.setProgressBackgroundColorSchemeColor(ContextCompat.getColor(context, R.color.black_3));
+ break;
+ }
if( context != null) {
if (type == RetrieveFeedsAsyncTask.Type.USER)
asyncTask = new RetrieveFeedsAsyncTask(context, type, targetedId, max_id, showMediaOnly, showPinned, DisplayStatusFragment.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/fragments/SettingsFragment.java b/app/src/main/java/fr/gouv/etalab/mastodon/fragments/SettingsFragment.java
index b52df4569..579ffc0c3 100644
--- a/app/src/main/java/fr/gouv/etalab/mastodon/fragments/SettingsFragment.java
+++ b/app/src/main/java/fr/gouv/etalab/mastodon/fragments/SettingsFragment.java
@@ -70,7 +70,7 @@ public class SettingsFragment extends Fragment {
private Context context;
private static final int ACTIVITY_CHOOSE_FILE = 411;
private TextView set_folder;
- int count1, count2 = 0;
+ int count1, count2, count3 = 0;
@Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
@@ -225,6 +225,32 @@ public class SettingsFragment extends Fragment {
}
});
+ boolean compact_mode = sharedpreferences.getBoolean(Helper.SET_COMPACT_MODE, false);
+ final CheckBox set_compact_mode = rootView.findViewById(R.id.set_compact_mode);
+ set_compact_mode.setChecked(compact_mode);
+
+ set_compact_mode.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ SharedPreferences.Editor editor = sharedpreferences.edit();
+ editor.putBoolean(Helper.SET_COMPACT_MODE, set_compact_mode.isChecked());
+ editor.apply();
+ }
+ });
+
+
+ boolean share_details = sharedpreferences.getBoolean(Helper.SET_SHARE_DETAILS, true);
+ final CheckBox set_share_details = rootView.findViewById(R.id.set_share_details);
+ set_share_details.setChecked(share_details);
+
+ set_share_details.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ SharedPreferences.Editor editor = sharedpreferences.edit();
+ editor.putBoolean(Helper.SET_SHARE_DETAILS, set_share_details.isChecked());
+ editor.apply();
+ }
+ });
boolean multiaccount_actions = sharedpreferences.getBoolean(Helper.SET_ALLOW_CROSS_ACTIONS, true);
final CheckBox set_multiaccount_actions = rootView.findViewById(R.id.set_multiaccount_actions);
@@ -428,25 +454,56 @@ public class SettingsFragment extends Fragment {
file_chooser.setVisibility(View.GONE);
}
- final SwitchCompat set_night_mode = rootView.findViewById(R.id.set_night_mode);
- set_night_mode.setChecked(theme == Helper.THEME_DARK);
- set_night_mode.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
+ final Spinner set_night_mode = rootView.findViewById(R.id.set_night_mode);
+ ArrayAdapter adapterTheme = ArrayAdapter.createFromResource(getContext(),
+ R.array.settings_theme, android.R.layout.simple_spinner_item);
+ set_night_mode.setAdapter(adapterTheme);
+
+ int positionSpinnerTheme;
+ switch (sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_DARK)){
+ case Helper.THEME_DARK:
+ positionSpinnerTheme = 0;
+ break;
+ case Helper.THEME_LIGHT:
+ positionSpinnerTheme = 1;
+ break;
+ case Helper.THEME_BLACK:
+ positionSpinnerTheme = 2;
+ break;
+ default:
+ positionSpinnerTheme = 0;
+ }
+ set_night_mode.setSelection(positionSpinnerTheme);
+ set_night_mode.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
- public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
- SharedPreferences.Editor editor = sharedpreferences.edit();
- editor.putInt(Helper.SET_THEME, isChecked?Helper.THEME_DARK:Helper.THEME_LIGHT);
- editor.apply();
- if( isChecked){
+ public void onItemSelected(AdapterView> parent, View view, int position, long id) {
+ if( count3 > 0){
+ SharedPreferences.Editor editor = sharedpreferences.edit();
+ switch (position){
+ case 0:
+ editor.putInt(Helper.SET_THEME, Helper.THEME_DARK);
+ editor.apply();
+ break;
+ case 1:
+ editor.putInt(Helper.SET_THEME, Helper.THEME_LIGHT);
+ editor.apply();
+ break;
+ case 2:
+ editor.putInt(Helper.SET_THEME, Helper.THEME_BLACK);
+ editor.apply();
+ break;
+ }
if( getActivity() != null)
- getActivity().setTheme(R.style.AppThemeDark);
+ getActivity().recreate();
+ Intent intent = new Intent(context, MainActivity.class);
+ intent.putExtra(INTENT_ACTION, CHANGE_THEME_INTENT);
+ startActivity(intent);
}else {
- if( getActivity() != null)
- getActivity().setTheme(R.style.AppTheme);
+ count3++;
}
- getActivity().recreate();
- Intent intent = new Intent(context, MainActivity.class);
- intent.putExtra(INTENT_ACTION, CHANGE_THEME_INTENT);
- startActivity(intent);
+ }
+ @Override
+ public void onNothingSelected(AdapterView> parent) {
}
});
@@ -633,7 +690,7 @@ public class SettingsFragment extends Fragment {
ArrayAdapter adapterResize = ArrayAdapter.createFromResource(getContext(),
R.array.settings_resize_picture, android.R.layout.simple_spinner_item);
resize_layout_spinner.setAdapter(adapterResize);
- int positionSpinnerResize = sharedpreferences.getInt(Helper.SET_PICTURE_RESIZE, Helper.S_1MO);
+ int positionSpinnerResize = sharedpreferences.getInt(Helper.SET_PICTURE_RESIZE, Helper.S_2MO);
resize_layout_spinner.setSelection(positionSpinnerResize);
resize_layout_spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/helper/CustomTextView.java b/app/src/main/java/fr/gouv/etalab/mastodon/helper/CustomTextView.java
new file mode 100644
index 000000000..c7335a3d6
--- /dev/null
+++ b/app/src/main/java/fr/gouv/etalab/mastodon/helper/CustomTextView.java
@@ -0,0 +1,60 @@
+package fr.gouv.etalab.mastodon.helper;
+
+/* Copyright 2018 Thomas Schneider
+ *
+ * This file is a part of Mastalab
+ *
+ * This program is free software; you can redistribute it and/or modify it under the terms of the
+ * GNU General Public License as published by the Free Software Foundation; either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * Mastalab 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 General
+ * Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along with Mastalab; if not,
+ * see . */
+import android.content.Context;
+import android.text.Selection;
+import android.text.Spannable;
+import android.util.AttributeSet;
+import android.view.MotionEvent;
+
+
+/**
+ * Created by Thomas on 12/05/2018.
+ * Allows to fix crashes with selection see: https://stackoverflow.com/a/36740247
+ */
+
+public class CustomTextView extends android.support.v7.widget.AppCompatTextView {
+
+
+ public CustomTextView(Context context) {
+ super(context);
+ }
+
+ public CustomTextView(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ }
+
+ public CustomTextView(Context context, AttributeSet attrs, int defStyleAttr) {
+ super(context, attrs, defStyleAttr);
+ }
+
+ @Override
+ public boolean dispatchTouchEvent(final MotionEvent event) {
+ // FIXME simple workaround to https://code.google.com/p/android/issues/detail?id=191430
+ int startSelection = getSelectionStart();
+ int endSelection = getSelectionEnd();
+ if (startSelection < 0 || endSelection < 0){
+ Selection.setSelection((Spannable) getText(), getText().length());
+ } else if (startSelection != endSelection) {
+ if (event.getActionMasked() == MotionEvent.ACTION_DOWN) {
+ final CharSequence text = getText();
+ setText(null);
+ setText(text);
+ }
+ }
+ return super.dispatchTouchEvent(event);
+ }
+}
diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/helper/Helper.java b/app/src/main/java/fr/gouv/etalab/mastodon/helper/Helper.java
index e640c4e7b..d4f1a8cce 100644
--- a/app/src/main/java/fr/gouv/etalab/mastodon/helper/Helper.java
+++ b/app/src/main/java/fr/gouv/etalab/mastodon/helper/Helper.java
@@ -242,14 +242,18 @@ public class Helper {
public static final String SET_PICTURE_RESIZE = "set_picture_resize";
public static final String SET_SHOW_BOOKMARK = "set_show_bookmark";
public static final String SET_FULL_PREVIEW = "set_full_preview";
+ public static final String SET_COMPACT_MODE = "set_compact_mode";
+ public static final String SET_SHARE_DETAILS = "set_share_details";
public static final int S_512KO = 1;
public static final int S_1MO = 2;
public static final int S_2MO = 3;
public static final int ATTACHMENT_ALWAYS = 1;
public static final int ATTACHMENT_WIFI = 2;
public static final int ATTACHMENT_ASK = 3;
+
public static final int THEME_LIGHT = 1;
public static final int THEME_DARK = 2;
+ public static final int THEME_BLACK = 3;
public static final int LED_COLOUR = 0;
@@ -970,7 +974,7 @@ public class Helper {
final SharedPreferences sharedpreferences = activity.getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE);
int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_DARK);
- if( theme == Helper.THEME_DARK){
+ if( theme == Helper.THEME_DARK || theme == Helper.THEME_BLACK){
changeDrawableColor(activity, R.drawable.ic_person_add,R.color.dark_text);
changeDrawableColor(activity, R.drawable.ic_person,R.color.dark_text);
changeDrawableColor(activity, R.drawable.ic_cancel,R.color.dark_text);
@@ -1863,7 +1867,11 @@ public class Helper {
int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_DARK);
if (theme == Helper.THEME_DARK) {
canvas.drawColor(ContextCompat.getColor(context, R.color.mastodonC1));
- }else {
+
+ }else if( theme == Helper.THEME_BLACK){
+ canvas.drawColor(ContextCompat.getColor(context, R.color.black));
+ }
+ else {
canvas.drawColor(Color.WHITE);
}
}
@@ -2035,7 +2043,7 @@ public class Helper {
}
SharedPreferences sharedpreferences = context.getSharedPreferences(Helper.APP_PREFS, android.content.Context.MODE_PRIVATE);
- int resizeSet = sharedpreferences.getInt(Helper.SET_PICTURE_RESIZE, Helper.S_1MO);
+ int resizeSet = sharedpreferences.getInt(Helper.SET_PICTURE_RESIZE, Helper.S_2MO);
if( mediaType == MediaType.PROFILE)
resizeSet = Helper.S_1MO;
double resizeby = size;
diff --git a/app/src/main/res/drawable/button_selector_black.xml b/app/src/main/res/drawable/button_selector_black.xml
new file mode 100644
index 000000000..236998710
--- /dev/null
+++ b/app/src/main/res/drawable/button_selector_black.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/imageview_border_black.xml b/app/src/main/res/drawable/imageview_border_black.xml
new file mode 100644
index 000000000..d7d8c85b4
--- /dev/null
+++ b/app/src/main/res/drawable/imageview_border_black.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/menu_selector_black.xml b/app/src/main/res/drawable/menu_selector_black.xml
new file mode 100644
index 000000000..a112f234a
--- /dev/null
+++ b/app/src/main/res/drawable/menu_selector_black.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/shape_border_bottom_settings_black.xml b/app/src/main/res/drawable/shape_border_bottom_settings_black.xml
new file mode 100644
index 000000000..b86c0b5a0
--- /dev/null
+++ b/app/src/main/res/drawable/shape_border_bottom_settings_black.xml
@@ -0,0 +1,19 @@
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/side_nav_bar_black.xml b/app/src/main/res/drawable/side_nav_bar_black.xml
new file mode 100644
index 000000000..a0d127490
--- /dev/null
+++ b/app/src/main/res/drawable/side_nav_bar_black.xml
@@ -0,0 +1,9 @@
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout-sw600dp/activity_about.xml b/app/src/main/res/layout-sw600dp/activity_about.xml
index 47a70b4cc..fa5415495 100644
--- a/app/src/main/res/layout-sw600dp/activity_about.xml
+++ b/app/src/main/res/layout-sw600dp/activity_about.xml
@@ -55,8 +55,9 @@
android:gravity="center_vertical"
android:padding="5dp"
android:text="@string/about_developer"
- android:textColor="@color/mastodonC4"
- android:textSize="16sp"/>
+ android:textColor="?colorAccent"
+ android:textSize="16sp"
+ android:focusable="true" />
+
+
+
+
+
+ android:layout_height="wrap_content"
+ android:focusable="true" />
Puerto
Usuario
Contraseña
+ Theme:
+ Compact mode
+ Add toot details when sharing
diff --git a/app/src/main/res/values-eu/strings.xml b/app/src/main/res/values-eu/strings.xml
index 95b51b510..64747c8af 100644
--- a/app/src/main/res/values-eu/strings.xml
+++ b/app/src/main/res/values-eu/strings.xml
@@ -330,6 +330,11 @@
- Yandex
- Ez
+
+ - Iluna
+ - Argia
+ - Beltza
+
- Ez
- 512 KB
@@ -479,4 +484,7 @@ Eskerrik asko Stéphane logoagatik.
Ataka
Saioa
Pasahitza
+ Itxura:
+ Modu trinkoa
+ Add toot details when sharing
diff --git a/app/src/main/res/values-fi/strings.xml b/app/src/main/res/values-fi/strings.xml
index 8524b6327..31892b5b1 100644
--- a/app/src/main/res/values-fi/strings.xml
+++ b/app/src/main/res/values-fi/strings.xml
@@ -330,6 +330,11 @@
- Yandex
- No
+
+ - Dark
+ - Light
+ - Black
+
- No
- 512 Kb
@@ -480,4 +485,7 @@
Port
Login
Password
+ Theme:
+ Compact mode
+ Add toot details when sharing
diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml
index 165e03cbb..5f3e3a677 100644
--- a/app/src/main/res/values-fr/strings.xml
+++ b/app/src/main/res/values-fr/strings.xml
@@ -330,6 +330,11 @@
- Yandex
- Non
+
+ - Dark
+ - Light
+ - Black
+
- Non
- 512 Ko
@@ -478,4 +483,7 @@
Port
Identifiant
Mot de passe
+ Theme:
+ Compact mode
+ Add toot details when sharing
diff --git a/app/src/main/res/values-he/strings.xml b/app/src/main/res/values-he/strings.xml
index ed2620406..33053cc29 100644
--- a/app/src/main/res/values-he/strings.xml
+++ b/app/src/main/res/values-he/strings.xml
@@ -336,6 +336,11 @@
- Yandex
- No
+
+ - Dark
+ - Light
+ - Black
+
- No
- 512 Kb
@@ -486,4 +491,7 @@
Port
Login
Password
+ Theme:
+ Compact mode
+ Add toot details when sharing
diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml
index caf1e0e78..373ce4ed0 100644
--- a/app/src/main/res/values-hu/strings.xml
+++ b/app/src/main/res/values-hu/strings.xml
@@ -330,6 +330,11 @@
- Yandex
- No
+
+ - Dark
+ - Light
+ - Black
+
- No
- 512 Kb
@@ -480,4 +485,7 @@
Port
Login
Password
+ Theme:
+ Compact mode
+ Add toot details when sharing
diff --git a/app/src/main/res/values-hy/strings.xml b/app/src/main/res/values-hy/strings.xml
index e38087109..e7bc1c06e 100644
--- a/app/src/main/res/values-hy/strings.xml
+++ b/app/src/main/res/values-hy/strings.xml
@@ -330,6 +330,11 @@
- Յանդեքս
- Ոչ
+
+ - Dark
+ - Light
+ - Black
+
- Ոչ
- 512 կբ
@@ -479,4 +484,7 @@
Պորտ
Մուտք
Գաղտնաբառ
+ Theme:
+ Compact mode
+ Add toot details when sharing
diff --git a/app/src/main/res/values-id/strings.xml b/app/src/main/res/values-id/strings.xml
index 7eacb8d41..b74c44341 100644
--- a/app/src/main/res/values-id/strings.xml
+++ b/app/src/main/res/values-id/strings.xml
@@ -327,6 +327,11 @@
- Yandex
- Tidak
+
+ - Dark
+ - Light
+ - Black
+
- No
- 512 Kb
@@ -479,4 +484,7 @@ https://yandex.ru/legal/confidential/?lang=en
Port
Login
Password
+ Theme:
+ Compact mode
+ Add toot details when sharing
diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml
index 9b42cde35..598a069e0 100644
--- a/app/src/main/res/values-it/strings.xml
+++ b/app/src/main/res/values-it/strings.xml
@@ -330,6 +330,11 @@
- Yandex
- No
+
+ - Dark
+ - Light
+ - Black
+
- No
- 512 Kb
@@ -480,4 +485,7 @@ Per favore, conferma le notifiche push che vuoi ricevere.
Porta
Login
Password
+ Theme:
+ Compact mode
+ Add toot details when sharing
diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml
index 6634a64d3..8b5e9e93a 100644
--- a/app/src/main/res/values-ja/strings.xml
+++ b/app/src/main/res/values-ja/strings.xml
@@ -327,6 +327,11 @@
- Yandex
- いいえ
+
+ - Dark
+ - Light
+ - Black
+
- なし
- 512 KB
@@ -469,4 +474,7 @@
ポート
ログイン
パスワード
+ Theme:
+ Compact mode
+ Add toot details when sharing
diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml
index e4f9bc5b6..57533890e 100644
--- a/app/src/main/res/values-ko/strings.xml
+++ b/app/src/main/res/values-ko/strings.xml
@@ -327,6 +327,11 @@
- Yandex
- No
+
+ - Dark
+ - Light
+ - Black
+
- No
- 512 Kb
@@ -477,4 +482,7 @@
Port
Login
Password
+ Theme:
+ Compact mode
+ Add toot details when sharing
diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml
index 8789b6ac1..21a5e02ba 100644
--- a/app/src/main/res/values-nl/strings.xml
+++ b/app/src/main/res/values-nl/strings.xml
@@ -330,6 +330,11 @@
- Yandex
- Nee
+
+ - Dark
+ - Light
+ - Black
+
- Niet
- 512 Kb
@@ -480,4 +485,7 @@
Poort
Gebruikersnaam
Wachtwoord
+ Theme:
+ Compact mode
+ Add toot details when sharing
diff --git a/app/src/main/res/values-no/strings.xml b/app/src/main/res/values-no/strings.xml
index 2f476dfab..ee5349837 100644
--- a/app/src/main/res/values-no/strings.xml
+++ b/app/src/main/res/values-no/strings.xml
@@ -330,6 +330,11 @@
- Yandex
- Nei
+
+ - Dark
+ - Light
+ - Black
+
- No
- 512 Kb
@@ -472,4 +477,7 @@ Takk til:
Port
Login
Password
+ Theme:
+ Compact mode
+ Add toot details when sharing
diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml
index f492fd7c5..7a89a2694 100644
--- a/app/src/main/res/values-pl/strings.xml
+++ b/app/src/main/res/values-pl/strings.xml
@@ -271,7 +271,7 @@
Optymalizacja ładowania
Liczba wpisów do załadowania
- Ilość kont do załadowania
+ Ilość kont do załadowania
Ilość powiadomień do załadowania
Zawsze
WiFi
@@ -336,6 +336,11 @@
- Yandex
- Brak
+
+ - Dark
+ - Light
+ - Black
+
- No
- 512 Kb
@@ -483,4 +488,7 @@ Podziękowania dla:
Port
Login
Hasło
+ Theme:
+ Compact mode
+ Add toot details when sharing
diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml
index 96d55cf1f..46c1ed649 100644
--- a/app/src/main/res/values-pt/strings.xml
+++ b/app/src/main/res/values-pt/strings.xml
@@ -330,6 +330,11 @@
- Yandex
- Não
+
+ - Dark
+ - Light
+ - Black
+
- No
- 512 Kb
@@ -480,4 +485,7 @@
Port
Login
Password
+ Theme:
+ Compact mode
+ Add toot details when sharing
diff --git a/app/src/main/res/values-ro/strings.xml b/app/src/main/res/values-ro/strings.xml
index 837cfb8bc..0d4dfce33 100644
--- a/app/src/main/res/values-ro/strings.xml
+++ b/app/src/main/res/values-ro/strings.xml
@@ -333,6 +333,11 @@
- Yandex
- Nu
+
+ - Dark
+ - Light
+ - Black
+
- No
- 512 Kb
@@ -480,4 +485,7 @@ Vă mulțumesc:
Port
Login
Password
+ Theme:
+ Compact mode
+ Add toot details when sharing
diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml
index 32bd623f8..e7e7b698d 100644
--- a/app/src/main/res/values-ru/strings.xml
+++ b/app/src/main/res/values-ru/strings.xml
@@ -336,6 +336,11 @@
- Яндекс
- Нет
+
+ - Dark
+ - Light
+ - Black
+
- Нет
- 512 Кб
@@ -484,4 +489,7 @@
Порт
Логин
Пароль
+ Theme:
+ Compact mode
+ Add toot details when sharing
diff --git a/app/src/main/res/values-sr/strings.xml b/app/src/main/res/values-sr/strings.xml
index abdd14ff4..9014b99b2 100644
--- a/app/src/main/res/values-sr/strings.xml
+++ b/app/src/main/res/values-sr/strings.xml
@@ -333,6 +333,11 @@
- Yandex
- Не
+
+ - Dark
+ - Light
+ - Black
+
- Не
- 512 Ko
@@ -483,4 +488,7 @@
Порт
Пријава
Лозинка
+ Theme:
+ Compact mode
+ Add toot details when sharing
diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml
index 8524b6327..31892b5b1 100644
--- a/app/src/main/res/values-sv/strings.xml
+++ b/app/src/main/res/values-sv/strings.xml
@@ -330,6 +330,11 @@
- Yandex
- No
+
+ - Dark
+ - Light
+ - Black
+
- No
- 512 Kb
@@ -480,4 +485,7 @@
Port
Login
Password
+ Theme:
+ Compact mode
+ Add toot details when sharing
diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml
index 1e390a229..c1bb47302 100644
--- a/app/src/main/res/values-tr/strings.xml
+++ b/app/src/main/res/values-tr/strings.xml
@@ -330,6 +330,11 @@
- Yandex
- Hayır
+
+ - Dark
+ - Light
+ - Black
+
- Hayır
- 512KB
@@ -473,4 +478,7 @@ Teşekkürler:
Port
Login
Password
+ Theme:
+ Compact mode
+ Add toot details when sharing
diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml
index a941699e8..0b76d6958 100644
--- a/app/src/main/res/values-uk/strings.xml
+++ b/app/src/main/res/values-uk/strings.xml
@@ -336,6 +336,11 @@
- Яндекс
- Ні
+
+ - Dark
+ - Light
+ - Black
+
- Ні
- 512 Кб
@@ -476,4 +481,7 @@
Порт
Логін
Пароль
+ Theme:
+ Compact mode
+ Add toot details when sharing
diff --git a/app/src/main/res/values-vi/strings.xml b/app/src/main/res/values-vi/strings.xml
index 7015adc4e..e04774581 100644
--- a/app/src/main/res/values-vi/strings.xml
+++ b/app/src/main/res/values-vi/strings.xml
@@ -329,6 +329,11 @@ và %d toots khác để khám phá
- Yandex
- Không
+
+ - Dark
+ - Light
+ - Black
+
- No
- 512 Kb
@@ -475,4 +480,7 @@ Cảm ơn bạn:
Port
Login
Password
+ Theme:
+ Compact mode
+ Add toot details when sharing
diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml
index 6a47afe6c..72dc1551b 100644
--- a/app/src/main/res/values-zh-rCN/strings.xml
+++ b/app/src/main/res/values-zh-rCN/strings.xml
@@ -327,6 +327,11 @@
- Yandex
- 否
+
+ - Dark
+ - Light
+ - Black
+
- 否
- 512 Kb
@@ -472,4 +477,7 @@ Yandex 有适当的隐私政策,可以在这里找到:https://yandex.ru/lega
端口
登录
密码
+ Theme:
+ Compact mode
+ Add toot details when sharing
diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml
index 3da75c59c..ddf1af8cc 100644
--- a/app/src/main/res/values-zh-rTW/strings.xml
+++ b/app/src/main/res/values-zh-rTW/strings.xml
@@ -327,6 +327,11 @@
- Yandex
- 否
+
+ - Dark
+ - Light
+ - Black
+
- No
- 512 Kb
@@ -472,4 +477,7 @@
Port
Login
Password
+ Theme:
+ Compact mode
+ Add toot details when sharing
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index e95fe46d0..aa021f573 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -34,7 +34,8 @@
#B3E5FC
#D7CCC8
#000
-
+ #050505
+ #222
#585c67
#454b5b
@@ -49,29 +50,23 @@
#1b80c9
+ #8089A4
+ #404964
#313543
#353947
#393f4f
#494f5f
+
+ #050505
+ #151515
+ #202020
+ #252525
+
#efefef
#ebf3fa
#d9e1e8
#c9d1d8
- @color/mastodonC3__
- @color/mastodonC1
-
- @color/mastodonC1
- @color/mastodonC3__
- @color/mastodonC1
- @color/mastodonC3__
-
- @color/mastodonC1
- @color/mastodonC3__
- @color/mastodonC1
- @color/mastodonC3__
-
-
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 47d504dd2..d9da152c3 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -352,6 +352,12 @@
- No
+
+ - Dark
+ - Light
+ - Black
+
+
- No
- 512 Kb
@@ -526,6 +532,10 @@
Port
Login
Password
+ Theme:
+ Compact mode
+ Add toot details when sharing
+ Support the app on Liberapay
- HTTP
- SOCKS
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index 05069ee39..47b0604f4 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -31,6 +31,8 @@
- @style/DropDownListViewStyle
- @color/mastodonC3__
- @color/mastodonC3
+ - @color/mastodonC3__
+ - @color/mastodonC3__
-
+
+
@@ -115,6 +129,117 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
@@ -208,7 +333,6 @@
- @color/mastodonC1
-
@@ -217,19 +341,11 @@
- @drawable/imageview_border_dark
-
-
-
-
-
-
-
-