diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 467e4fe88..c3afc39d9 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -147,11 +147,6 @@ android:configChanges="keyboardHidden|orientation|screenSize" android:noHistory="true" /> - . */ package fr.gouv.etalab.mastodon.activities; +import android.annotation.SuppressLint; +import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.content.pm.PackageInfo; @@ -22,11 +24,16 @@ import android.net.Uri; import android.os.AsyncTask; import android.os.Bundle; import android.support.v4.content.ContextCompat; +import android.support.v7.app.ActionBar; +import android.support.v7.widget.Toolbar; import android.text.SpannableString; import android.text.style.UnderlineSpan; +import android.view.LayoutInflater; import android.view.MenuItem; import android.view.View; +import android.view.ViewGroup; import android.widget.Button; +import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; @@ -46,6 +53,8 @@ import fr.gouv.etalab.mastodon.helper.Helper; import fr.gouv.etalab.mastodon.interfaces.OnRetrieveRelationshipInterface; import fr.gouv.etalab.mastodon.interfaces.OnRetrieveRemoteAccountInterface; +import static fr.gouv.etalab.mastodon.helper.Helper.THEME_LIGHT; + /** * Created by Thomas on 05/05/2017. @@ -85,6 +94,27 @@ public class AboutActivity extends BaseActivity implements OnRetrieveRemoteAccou if( getSupportActionBar() != null) getSupportActionBar().setDisplayHomeAsUpEnabled(true); + ActionBar actionBar = getSupportActionBar(); + if( actionBar != null ) { + LayoutInflater inflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE); + assert inflater != null; + @SuppressLint("InflateParams") View view = inflater.inflate(R.layout.simple_bar, null); + actionBar.setCustomView(view, new ActionBar.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); + actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM); + ImageView toolbar_close = actionBar.getCustomView().findViewById(R.id.toolbar_close); + TextView toolbar_title = actionBar.getCustomView().findViewById(R.id.toolbar_title); + toolbar_close.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + toolbar_title.setText(R.string.action_about); + if (theme == THEME_LIGHT){ + Toolbar toolbar = actionBar.getCustomView().findViewById(R.id.toolbar); + Helper.colorizeToolbar(toolbar, R.color.black, AboutActivity.this); + } + } setContentView(R.layout.activity_about); TextView about_version = findViewById(R.id.about_version); try { 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 7b45beb23..aa02c1b48 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.Color; import android.graphics.PorterDuff; import android.net.Uri; import android.os.AsyncTask; @@ -252,6 +253,17 @@ public abstract class BaseMainActivity extends BaseActivity setSupportActionBar(toolbar); toolbarTitle = toolbar.findViewById(R.id.toolbar_title); toolbar_search = toolbar.findViewById(R.id.toolbar_search); + if( theme == THEME_LIGHT) { + ImageView icon = toolbar_search.findViewById(android.support.v7.appcompat.R.id.search_button); + ImageView close = toolbar_search.findViewById(android.support.v7.appcompat.R.id.search_close_btn); + ImageView search_mag_icon = toolbar_search.findViewById(android.support.v7.appcompat.R.id.search_mag_icon); + if( icon != null) + icon.setColorFilter(ContextCompat.getColor(getApplicationContext(), R.color.dark_icon)); + if( close != null) + close.setColorFilter(ContextCompat.getColor(getApplicationContext(), R.color.dark_icon)); + if( search_mag_icon != null) + search_mag_icon.setColorFilter(ContextCompat.getColor(getApplicationContext(), R.color.dark_icon)); + } tabLayout = findViewById(R.id.tabLayout); delete_instance = findViewById(R.id.delete_instance); viewPager = findViewById(R.id.viewpager); 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 40291b793..57eb47704 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 @@ -39,6 +39,7 @@ import android.support.v4.app.ActivityCompat; import android.support.v4.content.ContextCompat; import android.support.v7.app.ActionBar; import android.support.v7.app.AlertDialog; +import android.support.v7.widget.Toolbar; import android.text.Editable; import android.text.Html; import android.text.TextWatcher; @@ -81,7 +82,7 @@ import fr.gouv.etalab.mastodon.interfaces.OnUpdateCredentialInterface; import fr.gouv.etalab.mastodon.sqlite.AccountDAO; import fr.gouv.etalab.mastodon.sqlite.Sqlite; - +import static fr.gouv.etalab.mastodon.helper.Helper.THEME_LIGHT; /** @@ -150,6 +151,10 @@ public class EditProfileActivity extends BaseActivity implements OnRetrieveAccou } }); } + if (theme == THEME_LIGHT){ + Toolbar toolbar = actionBar.getCustomView().findViewById(R.id.toolbar); + Helper.colorizeToolbar(toolbar, R.color.black, EditProfileActivity.this); + } }else{ setTitle(R.string.settings_title_profile); } 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 e686ab9be..b12ac3519 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 @@ -14,6 +14,7 @@ * see . */ package fr.gouv.etalab.mastodon.activities; +import android.annotation.SuppressLint; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; @@ -24,22 +25,27 @@ import android.os.AsyncTask; import android.os.Bundle; import android.support.design.widget.TextInputLayout; import android.support.v4.content.ContextCompat; +import android.support.v7.app.ActionBar; import android.support.v7.app.AlertDialog; +import android.support.v7.widget.Toolbar; import android.text.Editable; import android.text.SpannableString; import android.text.TextWatcher; import android.text.method.LinkMovementMethod; import android.text.style.UnderlineSpan; import android.text.util.Linkify; +import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; import android.view.View; +import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.AutoCompleteTextView; import android.widget.Button; import android.widget.CheckBox; import android.widget.EditText; +import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; import android.widget.Toast; @@ -53,6 +59,8 @@ import fr.gouv.etalab.mastodon.R; import fr.gouv.etalab.mastodon.asynctasks.UpdateAccountInfoAsyncTask; import fr.gouv.etalab.mastodon.client.HttpsConnection; import fr.gouv.etalab.mastodon.helper.Helper; + +import static fr.gouv.etalab.mastodon.helper.Helper.THEME_LIGHT; import static fr.gouv.etalab.mastodon.helper.Helper.changeDrawableColor; import static fr.gouv.etalab.mastodon.helper.Helper.convertDpToPixel; @@ -128,7 +136,27 @@ public class LoginActivity extends BaseActivity { } setContentView(R.layout.activity_login); - + ActionBar actionBar = getSupportActionBar(); + if( actionBar != null ) { + LayoutInflater inflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE); + assert inflater != null; + @SuppressLint("InflateParams") View view = inflater.inflate(R.layout.simple_bar, null); + actionBar.setCustomView(view, new ActionBar.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); + actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM); + ImageView toolbar_close = actionBar.getCustomView().findViewById(R.id.toolbar_close); + TextView toolbar_title = actionBar.getCustomView().findViewById(R.id.toolbar_title); + toolbar_close.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + toolbar_title.setText(R.string.add_account); + if (theme == THEME_LIGHT){ + Toolbar toolbar = actionBar.getCustomView().findViewById(R.id.toolbar); + Helper.colorizeToolbar(toolbar, R.color.black, LoginActivity.this); + } + } if (theme == Helper.THEME_DARK) { changeDrawableColor(getApplicationContext(), R.drawable.mastodon_icon, R.color.mastodonC2); } else { 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 de513a78c..fa3f7a010 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 @@ -75,6 +75,7 @@ import fr.gouv.etalab.mastodon.sqlite.Sqlite; import fr.gouv.etalab.mastodon.sqlite.StatusCacheDAO; import static fr.gouv.etalab.mastodon.helper.Helper.THEME_BLACK; +import static fr.gouv.etalab.mastodon.helper.Helper.THEME_LIGHT; /** @@ -142,6 +143,8 @@ public class OwnerStatusActivity extends BaseActivity implements OnRetrieveFeeds actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM); ImageView close_toot = actionBar.getCustomView().findViewById(R.id.close_toot); + if( theme == THEME_LIGHT) + close_toot.setColorFilter(ContextCompat.getColor(getApplicationContext(), R.color.black)); close_toot.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/activities/PartnerShipActivity.java b/app/src/main/java/fr/gouv/etalab/mastodon/activities/PartnerShipActivity.java index 1dce5a10e..af95f5757 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/activities/PartnerShipActivity.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/activities/PartnerShipActivity.java @@ -14,14 +14,22 @@ * see . */ package fr.gouv.etalab.mastodon.activities; +import android.annotation.SuppressLint; +import android.app.Activity; +import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.net.Uri; import android.os.AsyncTask; import android.os.Bundle; +import android.support.v7.app.ActionBar; +import android.support.v7.widget.Toolbar; import android.text.method.LinkMovementMethod; +import android.view.LayoutInflater; import android.view.MenuItem; import android.view.View; +import android.view.ViewGroup; +import android.view.inputmethod.InputMethodManager; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; @@ -42,6 +50,8 @@ import fr.gouv.etalab.mastodon.helper.Helper; import fr.gouv.etalab.mastodon.interfaces.OnRetrieveRelationshipInterface; import fr.gouv.etalab.mastodon.interfaces.OnRetrieveRemoteAccountInterface; +import static fr.gouv.etalab.mastodon.helper.Helper.THEME_LIGHT; + /** * Created by Thomas on 31/08/2018. @@ -76,8 +86,27 @@ public class PartnerShipActivity extends BaseActivity implements OnRetrieveRemot if( getSupportActionBar() != null) getSupportActionBar().setDisplayHomeAsUpEnabled(true); setContentView(R.layout.activity_partnership); - - + ActionBar actionBar = getSupportActionBar(); + if( actionBar != null ) { + LayoutInflater inflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE); + assert inflater != null; + @SuppressLint("InflateParams") View view = inflater.inflate(R.layout.simple_bar, null); + actionBar.setCustomView(view, new ActionBar.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); + actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM); + ImageView toolbar_close = actionBar.getCustomView().findViewById(R.id.toolbar_close); + TextView toolbar_title = actionBar.getCustomView().findViewById(R.id.toolbar_title); + toolbar_close.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + toolbar_title.setText(R.string.action_partnership); + if (theme == THEME_LIGHT){ + Toolbar toolbar = actionBar.getCustomView().findViewById(R.id.toolbar); + Helper.colorizeToolbar(toolbar, R.color.black, PartnerShipActivity.this); + } + } TextView about_partnership = findViewById(R.id.about_partnership); about_partnership.setMovementMethod(LinkMovementMethod.getInstance()); diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/activities/PeertubeActivity.java b/app/src/main/java/fr/gouv/etalab/mastodon/activities/PeertubeActivity.java index 8c6da2d7c..a3117c4e9 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/activities/PeertubeActivity.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/activities/PeertubeActivity.java @@ -34,6 +34,7 @@ import android.support.v7.app.AlertDialog; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.PopupMenu; import android.support.v7.widget.RecyclerView; +import android.support.v7.widget.Toolbar; import android.text.Html; import android.view.Menu; import android.view.MenuItem; @@ -72,6 +73,7 @@ import fr.gouv.etalab.mastodon.sqlite.PeertubeFavoritesDAO; import fr.gouv.etalab.mastodon.sqlite.Sqlite; import static fr.gouv.etalab.mastodon.helper.Helper.EXTERNAL_STORAGE_REQUEST_CODE; +import static fr.gouv.etalab.mastodon.helper.Helper.THEME_LIGHT; import static fr.gouv.etalab.mastodon.helper.Helper.manageDownloads; @@ -133,7 +135,10 @@ public class PeertubeActivity extends BaseActivity implements OnRetrievePeertube } if( getSupportActionBar() != null) getSupportActionBar().setDisplayHomeAsUpEnabled(true); - + if (theme == THEME_LIGHT && getSupportActionBar() != null){ + Toolbar toolbar = getSupportActionBar().getCustomView().findViewById(R.id.toolbar); + Helper.colorizeToolbar(toolbar, R.color.black, PeertubeActivity.this); + } videoView = findViewById(R.id.media_video); new RetrievePeertubeSingleAsyncTask(PeertubeActivity.this, peertubeInstance, videoId, PeertubeActivity.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); 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 0b9353e22..5aae8b6b2 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 @@ -17,11 +17,13 @@ package fr.gouv.etalab.mastodon.activities; import android.content.SharedPreferences; import android.os.Bundle; +import android.support.v7.widget.Toolbar; import android.view.MenuItem; import fr.gouv.etalab.mastodon.R; import fr.gouv.etalab.mastodon.helper.Helper; +import static fr.gouv.etalab.mastodon.helper.Helper.THEME_LIGHT; /** @@ -52,6 +54,10 @@ public class PrivacyActivity extends BaseActivity { if( getSupportActionBar() != null) getSupportActionBar().setDisplayHomeAsUpEnabled(true); + if (theme == THEME_LIGHT && getSupportActionBar() != null){ + Toolbar toolbar = getSupportActionBar().getCustomView().findViewById(R.id.toolbar); + Helper.colorizeToolbar(toolbar, R.color.black, PrivacyActivity.this); + } setContentView(R.layout.activity_privacy); setTitle(getString(R.string.action_privacy)); } 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 deleted file mode 100644 index 5f2f6d1a7..000000000 --- a/app/src/main/java/fr/gouv/etalab/mastodon/activities/RemoteFollowActivity.java +++ /dev/null @@ -1,356 +0,0 @@ -/* Copyright 2017 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 . */ -package fr.gouv.etalab.mastodon.activities; - - - -import android.annotation.SuppressLint; -import android.content.Context; -import android.content.SharedPreferences; -import android.database.sqlite.SQLiteDatabase; -import android.graphics.Bitmap; -import android.graphics.drawable.BitmapDrawable; -import android.os.AsyncTask; -import android.os.Bundle; -import android.support.design.widget.FloatingActionButton; -import android.support.v4.content.ContextCompat; -import android.support.v7.app.ActionBar; -import android.text.Editable; -import android.text.TextWatcher; -import android.view.LayoutInflater; -import android.view.MenuItem; -import android.view.View; -import android.view.ViewGroup; -import android.view.inputmethod.InputMethodManager; -import android.widget.ArrayAdapter; -import android.widget.AutoCompleteTextView; -import android.widget.Button; -import android.widget.EditText; -import android.widget.ImageView; -import android.widget.RelativeLayout; -import android.widget.TextView; -import android.widget.Toast; - - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.target.SimpleTarget; -import com.bumptech.glide.request.transition.Transition; - -import org.json.JSONArray; -import org.json.JSONException; -import org.json.JSONObject; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import fr.gouv.etalab.mastodon.R; -import fr.gouv.etalab.mastodon.asynctasks.PostActionAsyncTask; -import fr.gouv.etalab.mastodon.asynctasks.RetrieveRelationshipAsyncTask; -import fr.gouv.etalab.mastodon.asynctasks.RetrieveRemoteDataAsyncTask; -import fr.gouv.etalab.mastodon.client.API; -import fr.gouv.etalab.mastodon.client.Entities.Account; -import fr.gouv.etalab.mastodon.client.Entities.Error; -import fr.gouv.etalab.mastodon.client.Entities.Relationship; -import fr.gouv.etalab.mastodon.client.Entities.Results; -import fr.gouv.etalab.mastodon.client.HttpsConnection; -import fr.gouv.etalab.mastodon.drawers.AccountSearchDevAdapter; -import fr.gouv.etalab.mastodon.helper.ExpandableHeightListView; -import fr.gouv.etalab.mastodon.helper.Helper; -import fr.gouv.etalab.mastodon.interfaces.OnPostActionInterface; -import fr.gouv.etalab.mastodon.interfaces.OnRetrieveRelationshipInterface; -import fr.gouv.etalab.mastodon.interfaces.OnRetrieveRemoteAccountInterface; -import fr.gouv.etalab.mastodon.sqlite.AccountDAO; -import fr.gouv.etalab.mastodon.sqlite.Sqlite; - - - -/** - * Created by Thomas on 22/08/2017. - * Remote follow activity class - */ - -public class RemoteFollowActivity extends BaseActivity implements OnRetrieveRemoteAccountInterface, OnRetrieveRelationshipInterface, OnPostActionInterface { - - - private ImageView pp_actionBar; - private AutoCompleteTextView rf_instance; - private EditText rf_username; - private TextView rf_no_result; - private Button rf_search; - private ExpandableHeightListView lv_account; - private RelativeLayout loader; - private boolean isLoadingInstance; - private String instance_name, screen_name; - @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); - 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); - rf_username = findViewById(R.id.rf_username); - rf_search = findViewById(R.id.rf_search); - loader = findViewById(R.id.loader); - lv_account = findViewById(R.id.lv_account); - rf_no_result = findViewById(R.id.rf_no_result); - - isLoadingInstance = false; - ActionBar actionBar = getSupportActionBar(); - if( actionBar != null) { - LayoutInflater inflater = (LayoutInflater) this.getSystemService(android.content.Context.LAYOUT_INFLATER_SERVICE); - assert inflater != null; - @SuppressLint("InflateParams") View view = inflater.inflate(R.layout.simple_action_bar, null); - actionBar.setCustomView(view, new ActionBar.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); - actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM); - TextView title = actionBar.getCustomView().findViewById(R.id.toolbar_title); - pp_actionBar = actionBar.getCustomView().findViewById(R.id.pp_actionBar); - title.setText(R.string.remote_follow_menu); - ImageView close_conversation = actionBar.getCustomView().findViewById(R.id.close_conversation); - if( close_conversation != null){ - close_conversation.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - }else{ - setTitle(R.string.remote_follow_menu); - } - SQLiteDatabase db = Sqlite.getInstance(getApplicationContext(), Sqlite.DB_NAME, null, Sqlite.DB_VERSION).open(); - String userId = sharedpreferences.getString(Helper.PREF_KEY_ID, null); - Account account = new AccountDAO(getApplicationContext(),db).getAccountByID(userId); - String url = account.getAvatar(); - if( url.startsWith("/") ){ - url = Helper.getLiveInstanceWithProtocol(getApplicationContext()) + account.getAvatar(); - } - Glide.with(getApplicationContext()) - .asBitmap() - .load(url) - .into(new SimpleTarget() { - @Override - public void onResourceReady(Bitmap resource, Transition transition) { - BitmapDrawable ppDrawable = new BitmapDrawable(getResources(), Bitmap.createScaledBitmap(resource, (int) Helper.convertDpToPixel(25, getApplicationContext()), (int) Helper.convertDpToPixel(25, getApplicationContext()), true)); - if( pp_actionBar != null){ - pp_actionBar.setImageDrawable(ppDrawable); - } else if( getSupportActionBar() != null){ - - getSupportActionBar().setIcon(ppDrawable); - getSupportActionBar().setDisplayShowHomeEnabled(true); - } - } - }); - - - rf_instance.addTextChangedListener(new TextWatcher() { - @Override - public void beforeTextChanged(CharSequence s, int start, int count, int after) {} - @Override - public void onTextChanged(CharSequence s, int start, int before, int count) { - - } - @Override - public void afterTextChanged(Editable s) { - if( s.length() > 2 && !isLoadingInstance){ - final String action = "/instances/search"; - final HashMap parameters = new HashMap<>(); - parameters.put("q", s.toString().trim()); - parameters.put("count", String.valueOf(5)); - parameters.put("name", String.valueOf(true)); - isLoadingInstance = true; - new Thread(new Runnable(){ - @Override - public void run() { - try { - final String response = new HttpsConnection(RemoteFollowActivity.this).get("https://instances.social/api/1.0" + action, 30, parameters, Helper.THEKINRAR_SECRET_TOKEN ); - runOnUiThread(new Runnable() { - public void run() { - isLoadingInstance = false; - String[] instances; - try { - JSONObject jsonObject = new JSONObject(response); - JSONArray jsonArray = jsonObject.getJSONArray("instances"); - if( jsonArray != null){ - instances = new String[jsonArray.length()]; - for(int i = 0 ; i < jsonArray.length() ; i++){ - instances[i] = jsonArray.getJSONObject(i).get("name").toString(); - } - }else { - instances = new String[]{}; - } - rf_instance.setAdapter(null); - ArrayAdapter adapter = - new ArrayAdapter<>(RemoteFollowActivity.this, android.R.layout.simple_list_item_1, instances); - rf_instance.setAdapter(adapter); - if( rf_instance.hasFocus() && !RemoteFollowActivity.this.isFinishing()) - rf_instance.showDropDown(); - - } catch (JSONException ignored) {isLoadingInstance = false;} - } - }); - - } catch (HttpsConnection.HttpsConnectionException e) { - isLoadingInstance = false; - } catch (Exception e) { - isLoadingInstance = false; - } - } - }).start(); - } - } - }); - - rf_search.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - - if( rf_instance.getText().toString().trim().equals("") || rf_username.getText().toString().trim().equals("")){ - Toast.makeText(getApplicationContext(),R.string.toast_empty_search,Toast.LENGTH_LONG).show(); - return; - } - rf_search.setEnabled(false); - screen_name = rf_username.getText().toString().trim(); - instance_name = rf_instance.getText().toString().trim(); - lv_account.setVisibility(View.GONE); - loader.setVisibility(View.VISIBLE); - rf_no_result.setVisibility(View.GONE); - if( screen_name.startsWith("@")) - screen_name = screen_name.substring(1); - new RetrieveRemoteDataAsyncTask(getApplicationContext(), screen_name, instance_name, RemoteFollowActivity.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); - InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); - assert imm != null; - imm.hideSoftInputFromWindow(rf_search.getWindowToken(), 0); - } - }); - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case android.R.id.home: - finish(); - return true; - default: - return super.onOptionsItemSelected(item); - } - } - - - @Override - public void onRetrieveRemoteAccount(Results results) { - loader.setVisibility(View.GONE); - rf_search.setEnabled(true); - SharedPreferences sharedpreferences = getSharedPreferences(Helper.APP_PREFS, android.content.Context.MODE_PRIVATE); - if( results == null){ - Toast.makeText(getApplicationContext(), R.string.toast_error,Toast.LENGTH_LONG).show(); - return; - } - List accounts = results.getAccounts(); - Account account; - List selectedAccount = new ArrayList<>(); - if( accounts != null && accounts.size() > 0){ - account = accounts.get(0); - selectedAccount.add(account); - AccountSearchDevAdapter accountSearchWebAdapter = new AccountSearchDevAdapter(RemoteFollowActivity.this, selectedAccount); - lv_account.setAdapter(accountSearchWebAdapter); - lv_account.setVisibility(View.VISIBLE); - new RetrieveRelationshipAsyncTask(getApplicationContext(), account.getId(),RemoteFollowActivity.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); - } - } - - @Override - public void onRetrieveRelationship(Relationship relationship, Error error) { - final SharedPreferences sharedpreferences = getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE); - if( error != null){ - Toast.makeText(getApplicationContext(), error.getError(),Toast.LENGTH_LONG).show(); - - return; - } - if( relationship == null) - return; - final FloatingActionButton account_follow = findViewById(R.id.account_follow); - ShowAccountActivity.action doAction = null; - String userId = sharedpreferences.getString(Helper.PREF_KEY_ID, null); - final String accountId = relationship.getId(); - if( accountId != null && accountId.equals(userId)){ - account_follow.hide(); - }else if( relationship.isBlocking()){ - account_follow.setImageResource(R.drawable.ic_lock_open); - doAction = ShowAccountActivity.action.UNBLOCK; - account_follow.show(); - }else if( relationship.isRequested()){ - account_follow.hide(); - doAction = ShowAccountActivity.action.NOTHING; - }else if( relationship.isFollowing()){ - account_follow.setImageResource(R.drawable.ic_user_times); - doAction = ShowAccountActivity.action.UNFOLLOW; - account_follow.show(); - }else if( !relationship.isFollowing()){ - account_follow.setImageResource(R.drawable.ic_user_plus); - doAction = ShowAccountActivity.action.FOLLOW; - account_follow.show(); - }else{ - account_follow.hide(); - doAction = ShowAccountActivity.action.NOTHING; - } - final ShowAccountActivity.action finalDoAction = doAction; - account_follow.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if( finalDoAction == ShowAccountActivity.action.NOTHING){ - Toast.makeText(getApplicationContext(), R.string.nothing_to_do, Toast.LENGTH_LONG).show(); - }else if( finalDoAction == ShowAccountActivity.action.FOLLOW){ - account_follow.setEnabled(false); - new PostActionAsyncTask(getApplicationContext(), API.StatusAction.FOLLOW, accountId, RemoteFollowActivity.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); - }else if( finalDoAction == ShowAccountActivity.action.UNFOLLOW){ - account_follow.setEnabled(false); - new PostActionAsyncTask(getApplicationContext(), API.StatusAction.UNFOLLOW, accountId, RemoteFollowActivity.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); - }else if( finalDoAction == ShowAccountActivity.action.UNBLOCK){ - account_follow.setEnabled(false); - new PostActionAsyncTask(getApplicationContext(), API.StatusAction.UNBLOCK, accountId, RemoteFollowActivity.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); - } - } - }); - } - - @Override - public void onPostAction(int statusCode, API.StatusAction statusAction, String userId, Error error) { - if( error != null){ - final SharedPreferences sharedpreferences = getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE); - Toast.makeText(getApplicationContext(), error.getError(),Toast.LENGTH_LONG).show(); - - return; - } - Helper.manageMessageStatusCode(getApplicationContext(), statusCode, statusAction); - new RetrieveRelationshipAsyncTask(getApplicationContext(), userId,RemoteFollowActivity.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); - } -} 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 76bcb6cdc..a9926fd39 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 @@ -18,6 +18,7 @@ import android.content.Context; import android.content.SharedPreferences; import android.os.AsyncTask; import android.os.Bundle; +import android.support.v7.widget.Toolbar; import android.view.MenuItem; import android.view.View; import android.widget.ListView; @@ -39,6 +40,8 @@ import fr.gouv.etalab.mastodon.helper.Helper; import fr.gouv.etalab.mastodon.interfaces.OnRetrieveSearchInterface; import fr.gouv.etalab.mastodon.interfaces.OnRetrieveSearchStatusInterface; +import static fr.gouv.etalab.mastodon.helper.Helper.THEME_LIGHT; + /** * Created by Thomas on 26/05/2017. @@ -88,7 +91,10 @@ public class SearchResultActivity extends BaseActivity implements OnRetrieveSear } if( getSupportActionBar() != null) getSupportActionBar().setDisplayHomeAsUpEnabled(true); - + if (theme == THEME_LIGHT && getSupportActionBar() != null){ + Toolbar toolbar = getSupportActionBar().getCustomView().findViewById(R.id.toolbar); + Helper.colorizeToolbar(toolbar, R.color.black, SearchResultActivity.this); + } setTitle(search); loader.setVisibility(View.VISIBLE); lv_search.setVisibility(View.GONE); 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 b74c1a387..51703137a 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 @@ -41,6 +41,7 @@ import android.support.v7.app.AlertDialog; import android.support.v7.widget.PopupMenu; import android.text.Spannable; import android.text.SpannableString; +import android.text.Spanned; import android.text.method.LinkMovementMethod; import android.text.style.ForegroundColorSpan; import android.text.style.UnderlineSpan; @@ -99,6 +100,7 @@ import static fr.gouv.etalab.mastodon.helper.Helper.INTENT_ACTION; import static fr.gouv.etalab.mastodon.helper.Helper.SEARCH_INSTANCE; 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.THEME_LIGHT; import static fr.gouv.etalab.mastodon.helper.Helper.changeDrawableColor; import static fr.gouv.etalab.mastodon.helper.Helper.withSuffix; @@ -220,6 +222,8 @@ public class ShowAccountActivity extends BaseActivity implements OnPostActionInt final ImageButton account_menu = findViewById(R.id.account_menu); ImageButton action_more = findViewById(R.id.action_more); + if( theme == THEME_LIGHT) + changeDrawableColor(getApplicationContext(),action_more,R.color.dark_icon); account_menu.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { @@ -232,6 +236,8 @@ public class ShowAccountActivity extends BaseActivity implements OnPostActionInt showMenu(account_menu); } }); + + } private void showMenu(View account_menu){ @@ -240,7 +246,7 @@ public class ShowAccountActivity extends BaseActivity implements OnPostActionInt final PopupMenu popup = new PopupMenu(ShowAccountActivity.this, account_menu); popup.getMenuInflater() .inflate(R.menu.main_showaccount, popup.getMenu()); - + final String[] stringArrayConf; final boolean isOwner = account.getId().equals(userId); String[] splitAcct = account.getAcct().split("@"); @@ -505,6 +511,15 @@ public class ShowAccountActivity extends BaseActivity implements OnPostActionInt final TextView warning_message = findViewById(R.id.warning_message); final SpannableString content = new SpannableString(getString(R.string.disclaimer_full)); content.setSpan(new UnderlineSpan(), 0, content.length(), 0); + if( theme == THEME_DARK) + content.setSpan(new ForegroundColorSpan(ContextCompat.getColor(ShowAccountActivity.this, R.color.dark_link_toot)), 0, content.length(), + Spanned.SPAN_INCLUSIVE_EXCLUSIVE); + else if( theme == THEME_BLACK) + content.setSpan(new ForegroundColorSpan(ContextCompat.getColor(ShowAccountActivity.this, R.color.black_link_toot)), 0, content.length(), + Spanned.SPAN_INCLUSIVE_EXCLUSIVE); + else if( theme == THEME_LIGHT) + content.setSpan(new ForegroundColorSpan(ContextCompat.getColor(ShowAccountActivity.this, R.color.mastodonC4)), 0, content.length(), + Spanned.SPAN_INCLUSIVE_EXCLUSIVE); warning_message.setText(content); warning_message.setOnClickListener(new View.OnClickListener() { @Override @@ -911,6 +926,7 @@ public class ShowAccountActivity extends BaseActivity implements OnPostActionInt return false; } }); + } 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 6d8a35cfe..7387d041a 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 @@ -68,6 +68,7 @@ import fr.gouv.etalab.mastodon.sqlite.AccountDAO; import fr.gouv.etalab.mastodon.sqlite.Sqlite; import static fr.gouv.etalab.mastodon.helper.Helper.THEME_BLACK; +import static fr.gouv.etalab.mastodon.helper.Helper.THEME_LIGHT; /** @@ -182,6 +183,9 @@ public class ShowConversationActivity extends BaseActivity implements OnRetrieve } }); + if (theme == THEME_LIGHT){ + Helper.colorizeToolbar(getSupportActionBar().getCustomView().findViewById(R.id.toolbar), R.color.black, ShowConversationActivity.this); + } }else{ setTitle(R.string.conversation); } 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 a0baf7b8f..5f7cc0c8d 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 @@ -42,6 +42,7 @@ import android.os.Build; import android.os.Bundle; import android.speech.RecognizerIntent; import android.support.v7.app.ActionBar; +import android.support.v7.widget.Toolbar; import android.text.Editable; import android.text.Html; import android.text.InputFilter; @@ -56,7 +57,6 @@ import android.view.ViewTreeObserver; import android.view.inputmethod.InputMethodManager; import android.widget.AdapterView; import android.widget.ArrayAdapter; -import android.widget.AutoCompleteTextView; import android.widget.Button; import android.widget.CheckBox; import android.widget.CompoundButton; @@ -182,7 +182,6 @@ public class TootActivity extends BaseActivity implements OnRetrieveSearcAccount private HorizontalScrollView picture_scrollview; private int currentCursorPosition, searchLength; private TextView toot_space_left; - private ImageButton toot_emoji; private String initialContent; private final int MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE = 754; private Account accountReply; @@ -198,7 +197,7 @@ public class TootActivity extends BaseActivity implements OnRetrieveSearcAccount private boolean removed; private boolean restoredScheduled; static boolean active = false; - private static Activity activity; + @Override protected void onCreate(Bundle savedInstanceState) { @@ -222,25 +221,28 @@ public class TootActivity extends BaseActivity implements OnRetrieveSearcAccount } setContentView(R.layout.activity_toot); - activity = this; ActionBar actionBar = getSupportActionBar(); - if( actionBar != null ){ + if( actionBar != null ) { LayoutInflater inflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE); assert inflater != null; @SuppressLint("InflateParams") View view = inflater.inflate(R.layout.toot_action_bar, null); actionBar.setCustomView(view, new ActionBar.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM); - ImageView close_toot = actionBar.getCustomView().findViewById(R.id.close_toot); + close_toot.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(Activity.INPUT_METHOD_SERVICE); + InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(Activity.INPUT_METHOD_SERVICE); assert inputMethodManager != null; inputMethodManager.hideSoftInputFromWindow(toot_content.getWindowToken(), 0); finish(); } }); + if (theme == THEME_LIGHT){ + Toolbar toolbar = actionBar.getCustomView().findViewById(R.id.toolbar); + Helper.colorizeToolbar(toolbar, R.color.black, TootActivity.this); + } title = actionBar.getCustomView().findViewById(R.id.toolbar_title); pp_actionBar = actionBar.getCustomView().findViewById(R.id.pp_actionBar); pp_progress = actionBar.getCustomView().findViewById(R.id.pp_progress); @@ -265,7 +267,7 @@ public class TootActivity extends BaseActivity implements OnRetrieveSearcAccount picture_scrollview = findViewById(R.id.picture_scrollview); toot_sensitive = findViewById(R.id.toot_sensitive); drawer_layout = findViewById(R.id.drawer_layout); - toot_emoji = findViewById(R.id.toot_emoji); + ImageButton toot_emoji = findViewById(R.id.toot_emoji); if( sharedpreferences.getBoolean(Helper.SET_DISPLAY_EMOJI, true)) { final EmojiPopup emojiPopup = EmojiPopup.Builder.fromRootView(drawer_layout).build(toot_content); @@ -797,7 +799,7 @@ public class TootActivity extends BaseActivity implements OnRetrieveSearcAccount } } - private static class asyncPicture extends AsyncTask { + private class asyncPicture extends AsyncTask { ByteArrayInputStream bs; WeakReference activityWeakReference; @@ -815,7 +817,7 @@ public class TootActivity extends BaseActivity implements OnRetrieveSearcAccount if( uriFile == null) { - activity.runOnUiThread(new Runnable() { + runOnUiThread(new Runnable() { public void run() { Toast.makeText(activityWeakReference.get(), R.string.toast_error, Toast.LENGTH_SHORT).show(); } @@ -1305,8 +1307,11 @@ public class TootActivity extends BaseActivity implements OnRetrieveSearcAccount if( itemViewReply != null) itemViewReply.setVisible(false); } - SharedPreferences sharedpreferences = getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE); - + SharedPreferences sharedpreferences = getSharedPreferences(Helper.APP_PREFS, android.content.Context.MODE_PRIVATE); + int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_DARK); + if( theme == THEME_LIGHT) + Helper.colorizeIconMenu(menu, R.color.black); + changeColor(); String instanceVersion = sharedpreferences.getString(Helper.INSTANCE_VERSION + userId + instance, null); Version currentVersion = new Version(instanceVersion); Version minVersion = new Version("2.0"); 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 dcc6c7ef8..c66517b58 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 @@ -26,6 +26,7 @@ import android.os.Build; import android.os.Bundle; import android.support.v4.app.ActivityCompat; import android.support.v4.content.ContextCompat; +import android.support.v7.widget.Toolbar; import android.view.Menu; import android.view.MenuItem; import android.view.View; @@ -47,6 +48,7 @@ import fr.gouv.etalab.mastodon.webview.MastalabWebViewClient; import fr.gouv.etalab.mastodon.R; import static fr.gouv.etalab.mastodon.helper.Helper.EXTERNAL_STORAGE_REQUEST_CODE; +import static fr.gouv.etalab.mastodon.helper.Helper.THEME_LIGHT; import static fr.gouv.etalab.mastodon.helper.Helper.manageDownloads; @@ -94,7 +96,6 @@ public class WebviewActivity extends BaseActivity { getSupportActionBar().setDisplayHomeAsUpEnabled(true); webView = Helper.initializeWebview(WebviewActivity.this, R.id.webview); - setTitle(""); FrameLayout webview_container = findViewById(R.id.webview_container); final ViewGroup videoLayout = findViewById(R.id.videoLayout); // Your own view, read class comments @@ -150,6 +151,10 @@ public class WebviewActivity extends BaseActivity { menu.findItem(R.id.action_go).setVisible(false); menu.findItem(R.id.action_comment).setVisible(true); } + SharedPreferences sharedpreferences = getSharedPreferences(Helper.APP_PREFS, android.content.Context.MODE_PRIVATE); + int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_DARK); + if( theme == THEME_LIGHT) + Helper.colorizeIconMenu(menu, R.color.black); return true; } @Override 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 635888897..e302ccff4 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 @@ -16,6 +16,7 @@ package fr.gouv.etalab.mastodon.activities; +import android.annotation.SuppressLint; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; @@ -23,13 +24,20 @@ import android.net.Uri; import android.os.AsyncTask; import android.os.Build; import android.os.Bundle; +import android.support.v7.app.ActionBar; import android.support.v7.app.AlertDialog; +import android.support.v7.widget.Toolbar; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; import android.webkit.CookieManager; import android.webkit.CookieSyncManager; import android.webkit.WebChromeClient; import android.webkit.WebView; import android.webkit.WebViewClient; +import android.widget.ImageView; import android.widget.ProgressBar; +import android.widget.TextView; import android.widget.Toast; @@ -43,6 +51,8 @@ import fr.gouv.etalab.mastodon.client.HttpsConnection; import fr.gouv.etalab.mastodon.helper.Helper; import fr.gouv.etalab.mastodon.R; +import static fr.gouv.etalab.mastodon.helper.Helper.THEME_LIGHT; + /** * Created by Thomas on 24/04/2017. * Webview to connect accounts @@ -81,7 +91,27 @@ public class WebviewConnectActivity extends BaseActivity { finish(); clientId = sharedpreferences.getString(Helper.CLIENT_ID, null); clientSecret = sharedpreferences.getString(Helper.CLIENT_SECRET, null); - + ActionBar actionBar = getSupportActionBar(); + if( actionBar != null ) { + LayoutInflater inflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE); + assert inflater != null; + @SuppressLint("InflateParams") View view = inflater.inflate(R.layout.simple_bar, null); + actionBar.setCustomView(view, new ActionBar.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); + actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM); + ImageView toolbar_close = actionBar.getCustomView().findViewById(R.id.toolbar_close); + TextView toolbar_title = actionBar.getCustomView().findViewById(R.id.toolbar_title); + toolbar_close.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + toolbar_title.setText(R.string.add_account); + if (theme == THEME_LIGHT){ + Toolbar toolbar = actionBar.getCustomView().findViewById(R.id.toolbar); + Helper.colorizeToolbar(toolbar, R.color.black, WebviewConnectActivity.this); + } + } webView = findViewById(R.id.webviewConnect); clearCookies(getApplicationContext()); final ProgressBar pbar = findViewById(R.id.progress_bar); 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 62653b339..c87e21ba4 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 @@ -26,6 +26,7 @@ import android.database.Cursor; import android.graphics.BitmapFactory; import android.graphics.Color; import android.graphics.Matrix; +import android.graphics.PorterDuffColorFilter; import android.graphics.PorterDuffXfermode; import android.graphics.Rect; import android.graphics.RectF; @@ -68,6 +69,10 @@ import android.support.design.widget.NavigationView; import android.support.v4.app.NotificationCompat; import android.support.v4.app.NotificationManagerCompat; import android.support.v4.content.ContextCompat; +import android.support.v7.view.menu.ActionMenuItemView; +import android.support.v7.view.menu.MenuView; +import android.support.v7.widget.ActionMenuView; +import android.support.v7.widget.Toolbar; import android.text.Html; import android.text.Spannable; import android.text.SpannableString; @@ -82,6 +87,8 @@ import android.view.Menu; import android.view.MenuItem; import android.view.SubMenu; import android.view.View; +import android.view.ViewGroup; +import android.view.ViewTreeObserver; import android.view.WindowManager; import android.webkit.CookieManager; import android.webkit.MimeTypeMap; @@ -2467,4 +2474,115 @@ public class Helper { } return filteredStatus; } + + + public static void colorizeIconMenu(Menu menu, int toolbarIconsColor) { + final PorterDuffColorFilter colorFilter + = new PorterDuffColorFilter(toolbarIconsColor, PorterDuff.Mode.MULTIPLY); + for(int i = 0; i < menu.size(); i++) { + MenuItem v = menu.getItem(i); + v.getIcon().setColorFilter(colorFilter); + } + } + + /** + * Code from "Michal Pawlowski" + * https://snow.dog/blog/how-to-dynamicaly-change-android-toolbar-icons-color + * @param toolbarView toolbar view being colored + * @param toolbarIconsColor the target color of toolbar icons + * @param activity reference to activity needed to register observers + */ + public static void colorizeToolbar(Toolbar toolbarView, int toolbarIconsColor, Activity activity) { + final PorterDuffColorFilter colorFilter + = new PorterDuffColorFilter(toolbarIconsColor, PorterDuff.Mode.SRC_ATOP); + + for(int i = 0; i < toolbarView.getChildCount(); i++) { + final View v = toolbarView.getChildAt(i); + + //Step 1 : Changing the color of back button (or open drawer button). + if(v instanceof ImageButton) { + //Action Bar back button + ((ImageButton)v).getDrawable().setColorFilter(colorFilter); + } + if(v instanceof ImageView) { + //Action Bar back button + if( v.getId() != R.id.pp_actionBar) + ((ImageView)v).setColorFilter(colorFilter); + } + if(v instanceof MenuItem) { + ((MenuItem)v).getIcon().setColorFilter(colorFilter); + } + + if(v instanceof ActionMenuView) { + for(int j = 0; j < ((ActionMenuView)v).getChildCount(); j++) { + + //Step 2: Changing the color of any ActionMenuViews - icons that + //are not back button, nor text, nor overflow menu icon. + final View innerView = ((ActionMenuView)v).getChildAt(j); + + if(innerView instanceof ActionMenuItemView) { + int drawablesCount = ((ActionMenuItemView)innerView).getCompoundDrawables().length; + for(int k = 0; k < drawablesCount; k++) { + if(((ActionMenuItemView)innerView).getCompoundDrawables()[k] != null) { + final int finalK = k; + + //Important to set the color filter in seperate thread, + //by adding it to the message queue + //Won't work otherwise. + innerView.post(new Runnable() { + @Override + public void run() { + ((ActionMenuItemView) innerView).getCompoundDrawables()[finalK].setColorFilter(colorFilter); + } + }); + } + } + } + } + } + + //Step 3: Changing the color of title and subtitle. + toolbarView.setTitleTextColor(toolbarIconsColor); + toolbarView.setSubtitleTextColor(toolbarIconsColor); + + //Step 4: Changing the color of the Overflow Menu icon. + setOverflowButtonColor(activity, colorFilter); + } + } + + /** + * It's important to set overflowDescription atribute in styles, so we can grab the reference + * to the overflow icon. Check: res/values/styles.xml + * @param activity + * @param colorFilter + */ + private static void setOverflowButtonColor(final Activity activity, final PorterDuffColorFilter colorFilter) { + @SuppressLint("PrivateResource") + final String overflowDescription = activity.getString(R.string.abc_action_menu_overflow_description); + final ViewGroup decorView = (ViewGroup) activity.getWindow().getDecorView(); + final ViewTreeObserver viewTreeObserver = decorView.getViewTreeObserver(); + viewTreeObserver.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { + @Override + public void onGlobalLayout() { + final ArrayList outViews = new ArrayList<>(); + decorView.findViewsWithText(outViews, overflowDescription, + View.FIND_VIEWS_WITH_CONTENT_DESCRIPTION); + if (outViews.isEmpty()) { + return; + } + android.support.v7.widget.AppCompatImageView overflow=(android.support.v7.widget.AppCompatImageView) outViews.get(0); + overflow.setColorFilter(colorFilter); + removeOnGlobalLayoutListener(decorView,this); + } + }); + } + + private static void removeOnGlobalLayoutListener(View v, ViewTreeObserver.OnGlobalLayoutListener listener) { + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) { + v.getViewTreeObserver().removeGlobalOnLayoutListener(listener); + } + else { + v.getViewTreeObserver().removeOnGlobalLayoutListener(listener); + } + } } diff --git a/app/src/main/res/layout-sw600dp/activity_show_account.xml b/app/src/main/res/layout-sw600dp/activity_show_account.xml index 904508aab..d6cd0fb7e 100644 --- a/app/src/main/res/layout-sw600dp/activity_show_account.xml +++ b/app/src/main/res/layout-sw600dp/activity_show_account.xml @@ -28,7 +28,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:fitsSystemWindows="true" - android:theme="@style/AppTheme.AppBarOverlay"> + > + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 3ed13b4d8..9f0d83e07 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -1,24 +1,20 @@ - - - - + + -