Loading app/src/main/java/app/fedilab/android/BaseMainActivity.java +29 −41 Original line number Diff line number Diff line Loading @@ -72,6 +72,7 @@ import androidx.appcompat.app.AlertDialog; import androidx.appcompat.widget.PopupMenu; import androidx.appcompat.widget.SearchView; import androidx.appcompat.widget.Toolbar; import androidx.appcompat.widget.TooltipCompat; import androidx.core.app.ActivityCompat; import androidx.core.content.ContextCompat; import androidx.core.view.GravityCompat; Loading Loading @@ -461,7 +462,7 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt public static void manageDrawerMenu(Activity activity, NavigationView navigationView, NavHeaderMainBinding headerMainBinding) { SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(activity); if (headerMenuOpen) { headerMainBinding.ownerAccounts.setImageResource(R.drawable.ic_baseline_arrow_drop_up_24); headerMainBinding.ownerAccounts.setIconResource(R.drawable.ic_baseline_arrow_drop_up_24); new Thread(() -> { try { List<BaseAccount> accounts = new Account(activity).getOtherAccounts(); Loading Loading @@ -592,7 +593,7 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt Intent mainActivity = new Intent(activity, MainActivity.class); activity.startActivity(mainActivity); activity.finish(); headerMainBinding.ownerAccounts.setImageResource(R.drawable.ic_baseline_arrow_drop_down_24); headerMainBinding.ownerAccounts.setIconResource(R.drawable.ic_accounts); return true; } return false; Loading Loading @@ -624,19 +625,12 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt } else if (Helper.getCurrentAccount(activity).peertube_account != null) { navigationView.inflateMenu(R.menu.activity_main_drawer_peertube); } headerMainBinding.ownerAccounts.setImageResource(R.drawable.ic_baseline_arrow_drop_down_24); headerMainBinding.ownerAccounts.setIconResource(R.drawable.ic_accounts); headerMenuOpen = false; } } public static void headerOptionInfoClick(Activity activity, NavHeaderMainBinding headerMainBinding, FragmentManager fragmentManager) { PopupMenu popup = new PopupMenu(activity, headerMainBinding.headerOptionInfo); popup.getMenuInflater() .inflate(R.menu.main, popup.getMenu()); popup.setOnMenuItemClickListener(item -> { int itemId = item.getItemId(); if (itemId == R.id.action_logout_account) { public static void headerLogoutClick(Activity activity, NavHeaderMainBinding headerMainBinding, FragmentManager fragmentManager) { AlertDialog.Builder alt_bld = new MaterialAlertDialogBuilder(activity); alt_bld.setTitle(R.string.action_logout); if (Helper.getCurrentAccount(activity).mastodon_account != null && Helper.getCurrentAccount(activity).instance != null) { Loading @@ -657,14 +651,6 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt alt_bld.setNegativeButton(R.string.cancel, (dialog, id) -> dialog.dismiss()); AlertDialog alert = alt_bld.create(); alert.show(); return true; } else if (itemId == R.id.action_proxy) { (new ProxyActivity()).show(fragmentManager, null); return true; } return true; }); popup.show(); } /** Loading Loading @@ -1464,12 +1450,13 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt startActivity(intent); } else if (id == R.id.nav_about_instance) { (new InstanceActivity()).show(getSupportFragmentManager(), null); } else if (id == R.id.nav_instance_info) { (new InstanceHealthActivity()).show(getSupportFragmentManager(), null); } binding.drawerLayout.close(); return false; }); headerMainBinding.instanceInfo.setOnClickListener(v -> (new InstanceHealthActivity()).show(getSupportFragmentManager(), null)); headerMainBinding.accountProfilePicture.setOnClickListener(v -> { Intent intent = new Intent(BaseMainActivity.this, ProfileActivity.class); Bundle args = new Bundle(); Loading @@ -1483,13 +1470,14 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt }); headerMainBinding.accountAcc.setOnClickListener(v -> headerMainBinding.changeAccount.callOnClick()); headerMainBinding.changeAccount.setOnClickListener(v -> { TooltipCompat.setTooltipText(headerMainBinding.ownerAccounts, getString(R.string.manage_accounts)); headerMainBinding.ownerAccounts.setOnClickListener(v -> { headerMenuOpen = !headerMenuOpen; manageDrawerMenu(BaseMainActivity.this, binding.navView, headerMainBinding); }); headerMainBinding.headerOptionInfo.setOnClickListener(v -> headerOptionInfoClick(BaseMainActivity.this, headerMainBinding, getSupportFragmentManager())); TooltipCompat.setTooltipText(headerMainBinding.headerLogout,getString(R.string.action_logout)); headerMainBinding.headerLogout.setOnClickListener(v -> headerLogoutClick(BaseMainActivity.this, headerMainBinding, getSupportFragmentManager())); //Toolbar search binding.toolbarSearch.setOnQueryTextListener(new SearchView.OnQueryTextListener() { Loading app/src/main/java/app/fedilab/android/mastodon/helper/Helper.java +20 −0 Original line number Diff line number Diff line Loading @@ -34,6 +34,7 @@ import android.content.Intent; import android.content.SharedPreferences; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.content.res.ColorStateList; import android.content.res.Configuration; import android.content.res.Resources; import android.database.Cursor; Loading Loading @@ -99,6 +100,7 @@ import com.bumptech.glide.load.resource.bitmap.CenterCrop; import com.bumptech.glide.load.resource.bitmap.RoundedCorners; import com.bumptech.glide.load.resource.gif.GifDrawable; import com.bumptech.glide.request.RequestOptions; import com.google.android.material.button.MaterialButton; import com.google.android.material.dialog.MaterialAlertDialogBuilder; import com.google.gson.Gson; import com.google.gson.GsonBuilder; Loading Loading @@ -1461,6 +1463,24 @@ public class Helper { imageView.setColorFilter(color); } /** * change color of a drawable * * @param materialButton {@link MaterialButton} * @param hexaColor example 0xffff00 */ public static void changeDrawableColor(Context context, MaterialButton materialButton, int hexaColor) { if (materialButton == null) return; int color; try { color = context.getResources().getColor(hexaColor); } catch (Resources.NotFoundException e) { color = hexaColor; } materialButton.setIconTint(ColorStateList.valueOf(color)); } /** * change color of a drawable * Loading app/src/main/java/app/fedilab/android/mastodon/ui/drawer/ComposeAdapter.java +2 −0 Original line number Diff line number Diff line Loading @@ -1697,9 +1697,11 @@ public class ComposeAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder if (holder.binding.contentSpoiler.getVisibility() == View.VISIBLE) { statusDraft.spoilerChecked = false; holder.binding.contentSpoiler.setVisibility(View.GONE); holder.binding.buttonSensitive.setContentDescription(context.getString(R.string.add_content_warning)); } else { holder.binding.contentSpoiler.setVisibility(View.VISIBLE); statusDraft.spoilerChecked = true; holder.binding.buttonSensitive.setContentDescription(context.getString(R.string.remove_content_warning)); } }); //Last compose drawer Loading app/src/main/java/app/fedilab/android/mastodon/ui/drawer/StatusAdapter.java +2 −4 Original line number Diff line number Diff line Loading @@ -1279,8 +1279,7 @@ public class StatusAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> holder.binding.actionButtonReply.getLayoutParams().height = (int) (normalSize * scaleIcon); holder.binding.actionButtonReply.requestLayout(); holder.binding.actionButtonTranslate.getLayoutParams().width = (int) (normalSize * scaleIcon); holder.binding.actionButtonTranslate.getLayoutParams().height = (int) (normalSize * scaleIcon); holder.binding.actionButtonTranslate.setIconSize((int) (normalSize * scaleIcon)); holder.binding.actionButtonTranslate.requestLayout(); holder.binding.actionButtonBoost.setImageSize((int) (normalSize * scaleIcon)); Loading @@ -1292,8 +1291,7 @@ public class StatusAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> holder.binding.statusAddCustomEmoji.getLayoutParams().height = (int) (normalSize * scaleIcon); holder.binding.statusAddCustomEmoji.requestLayout(); holder.binding.actionButtonQuote.getLayoutParams().width = (int) (normalSize * scaleIcon); holder.binding.actionButtonQuote.getLayoutParams().height = (int) (normalSize * scaleIcon); holder.binding.actionButtonQuote.setIconSize((int) (normalSize * scaleIcon)); holder.binding.actionButtonQuote.requestLayout(); holder.binding.statusEmoji.getLayoutParams().width = (int) (normalSize * scaleIcon); Loading app/src/main/java/app/fedilab/android/mastodon/ui/fragment/settings/FragmentNetworkSettings.java 0 → 100644 +60 −0 Original line number Diff line number Diff line package app.fedilab.android.mastodon.ui.fragment.settings; /* Copyright 2022 Thomas Schneider * * This file is a part of Fedilab * * 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. * * Fedilab 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 Fedilab; if not, * see <http://www.gnu.org/licenses>. */ import android.Manifest; import android.app.Activity; import android.content.Intent; import android.content.pm.PackageManager; import android.os.Build; import android.os.Bundle; import android.widget.Toast; import androidx.activity.result.ActivityResultLauncher; import androidx.activity.result.contract.ActivityResultContracts; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.core.app.ActivityCompat; import androidx.navigation.NavController; import androidx.navigation.Navigation; import androidx.preference.Preference; import androidx.preference.PreferenceFragmentCompat; import java.io.IOException; import app.fedilab.android.R; import app.fedilab.android.mastodon.activities.ProxyActivity; import app.fedilab.android.mastodon.helper.Helper; import app.fedilab.android.mastodon.helper.ZipHelper; import es.dmoral.toasty.Toasty; public class FragmentNetworkSettings extends PreferenceFragmentCompat { @Override public void onCreatePreferences(@Nullable Bundle savedInstanceState, @Nullable String rootKey) { addPreferencesFromResource(R.xml.pref_network); Preference pref_proxy = findPreference(getString(R.string.pref_key_proxy)); if (pref_proxy != null) { pref_proxy.setOnPreferenceClickListener(preference -> { (new ProxyActivity()).show(getParentFragmentManager(), null); return false; }); } } } Loading
app/src/main/java/app/fedilab/android/BaseMainActivity.java +29 −41 Original line number Diff line number Diff line Loading @@ -72,6 +72,7 @@ import androidx.appcompat.app.AlertDialog; import androidx.appcompat.widget.PopupMenu; import androidx.appcompat.widget.SearchView; import androidx.appcompat.widget.Toolbar; import androidx.appcompat.widget.TooltipCompat; import androidx.core.app.ActivityCompat; import androidx.core.content.ContextCompat; import androidx.core.view.GravityCompat; Loading Loading @@ -461,7 +462,7 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt public static void manageDrawerMenu(Activity activity, NavigationView navigationView, NavHeaderMainBinding headerMainBinding) { SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(activity); if (headerMenuOpen) { headerMainBinding.ownerAccounts.setImageResource(R.drawable.ic_baseline_arrow_drop_up_24); headerMainBinding.ownerAccounts.setIconResource(R.drawable.ic_baseline_arrow_drop_up_24); new Thread(() -> { try { List<BaseAccount> accounts = new Account(activity).getOtherAccounts(); Loading Loading @@ -592,7 +593,7 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt Intent mainActivity = new Intent(activity, MainActivity.class); activity.startActivity(mainActivity); activity.finish(); headerMainBinding.ownerAccounts.setImageResource(R.drawable.ic_baseline_arrow_drop_down_24); headerMainBinding.ownerAccounts.setIconResource(R.drawable.ic_accounts); return true; } return false; Loading Loading @@ -624,19 +625,12 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt } else if (Helper.getCurrentAccount(activity).peertube_account != null) { navigationView.inflateMenu(R.menu.activity_main_drawer_peertube); } headerMainBinding.ownerAccounts.setImageResource(R.drawable.ic_baseline_arrow_drop_down_24); headerMainBinding.ownerAccounts.setIconResource(R.drawable.ic_accounts); headerMenuOpen = false; } } public static void headerOptionInfoClick(Activity activity, NavHeaderMainBinding headerMainBinding, FragmentManager fragmentManager) { PopupMenu popup = new PopupMenu(activity, headerMainBinding.headerOptionInfo); popup.getMenuInflater() .inflate(R.menu.main, popup.getMenu()); popup.setOnMenuItemClickListener(item -> { int itemId = item.getItemId(); if (itemId == R.id.action_logout_account) { public static void headerLogoutClick(Activity activity, NavHeaderMainBinding headerMainBinding, FragmentManager fragmentManager) { AlertDialog.Builder alt_bld = new MaterialAlertDialogBuilder(activity); alt_bld.setTitle(R.string.action_logout); if (Helper.getCurrentAccount(activity).mastodon_account != null && Helper.getCurrentAccount(activity).instance != null) { Loading @@ -657,14 +651,6 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt alt_bld.setNegativeButton(R.string.cancel, (dialog, id) -> dialog.dismiss()); AlertDialog alert = alt_bld.create(); alert.show(); return true; } else if (itemId == R.id.action_proxy) { (new ProxyActivity()).show(fragmentManager, null); return true; } return true; }); popup.show(); } /** Loading Loading @@ -1464,12 +1450,13 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt startActivity(intent); } else if (id == R.id.nav_about_instance) { (new InstanceActivity()).show(getSupportFragmentManager(), null); } else if (id == R.id.nav_instance_info) { (new InstanceHealthActivity()).show(getSupportFragmentManager(), null); } binding.drawerLayout.close(); return false; }); headerMainBinding.instanceInfo.setOnClickListener(v -> (new InstanceHealthActivity()).show(getSupportFragmentManager(), null)); headerMainBinding.accountProfilePicture.setOnClickListener(v -> { Intent intent = new Intent(BaseMainActivity.this, ProfileActivity.class); Bundle args = new Bundle(); Loading @@ -1483,13 +1470,14 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt }); headerMainBinding.accountAcc.setOnClickListener(v -> headerMainBinding.changeAccount.callOnClick()); headerMainBinding.changeAccount.setOnClickListener(v -> { TooltipCompat.setTooltipText(headerMainBinding.ownerAccounts, getString(R.string.manage_accounts)); headerMainBinding.ownerAccounts.setOnClickListener(v -> { headerMenuOpen = !headerMenuOpen; manageDrawerMenu(BaseMainActivity.this, binding.navView, headerMainBinding); }); headerMainBinding.headerOptionInfo.setOnClickListener(v -> headerOptionInfoClick(BaseMainActivity.this, headerMainBinding, getSupportFragmentManager())); TooltipCompat.setTooltipText(headerMainBinding.headerLogout,getString(R.string.action_logout)); headerMainBinding.headerLogout.setOnClickListener(v -> headerLogoutClick(BaseMainActivity.this, headerMainBinding, getSupportFragmentManager())); //Toolbar search binding.toolbarSearch.setOnQueryTextListener(new SearchView.OnQueryTextListener() { Loading
app/src/main/java/app/fedilab/android/mastodon/helper/Helper.java +20 −0 Original line number Diff line number Diff line Loading @@ -34,6 +34,7 @@ import android.content.Intent; import android.content.SharedPreferences; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.content.res.ColorStateList; import android.content.res.Configuration; import android.content.res.Resources; import android.database.Cursor; Loading Loading @@ -99,6 +100,7 @@ import com.bumptech.glide.load.resource.bitmap.CenterCrop; import com.bumptech.glide.load.resource.bitmap.RoundedCorners; import com.bumptech.glide.load.resource.gif.GifDrawable; import com.bumptech.glide.request.RequestOptions; import com.google.android.material.button.MaterialButton; import com.google.android.material.dialog.MaterialAlertDialogBuilder; import com.google.gson.Gson; import com.google.gson.GsonBuilder; Loading Loading @@ -1461,6 +1463,24 @@ public class Helper { imageView.setColorFilter(color); } /** * change color of a drawable * * @param materialButton {@link MaterialButton} * @param hexaColor example 0xffff00 */ public static void changeDrawableColor(Context context, MaterialButton materialButton, int hexaColor) { if (materialButton == null) return; int color; try { color = context.getResources().getColor(hexaColor); } catch (Resources.NotFoundException e) { color = hexaColor; } materialButton.setIconTint(ColorStateList.valueOf(color)); } /** * change color of a drawable * Loading
app/src/main/java/app/fedilab/android/mastodon/ui/drawer/ComposeAdapter.java +2 −0 Original line number Diff line number Diff line Loading @@ -1697,9 +1697,11 @@ public class ComposeAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder if (holder.binding.contentSpoiler.getVisibility() == View.VISIBLE) { statusDraft.spoilerChecked = false; holder.binding.contentSpoiler.setVisibility(View.GONE); holder.binding.buttonSensitive.setContentDescription(context.getString(R.string.add_content_warning)); } else { holder.binding.contentSpoiler.setVisibility(View.VISIBLE); statusDraft.spoilerChecked = true; holder.binding.buttonSensitive.setContentDescription(context.getString(R.string.remove_content_warning)); } }); //Last compose drawer Loading
app/src/main/java/app/fedilab/android/mastodon/ui/drawer/StatusAdapter.java +2 −4 Original line number Diff line number Diff line Loading @@ -1279,8 +1279,7 @@ public class StatusAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> holder.binding.actionButtonReply.getLayoutParams().height = (int) (normalSize * scaleIcon); holder.binding.actionButtonReply.requestLayout(); holder.binding.actionButtonTranslate.getLayoutParams().width = (int) (normalSize * scaleIcon); holder.binding.actionButtonTranslate.getLayoutParams().height = (int) (normalSize * scaleIcon); holder.binding.actionButtonTranslate.setIconSize((int) (normalSize * scaleIcon)); holder.binding.actionButtonTranslate.requestLayout(); holder.binding.actionButtonBoost.setImageSize((int) (normalSize * scaleIcon)); Loading @@ -1292,8 +1291,7 @@ public class StatusAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> holder.binding.statusAddCustomEmoji.getLayoutParams().height = (int) (normalSize * scaleIcon); holder.binding.statusAddCustomEmoji.requestLayout(); holder.binding.actionButtonQuote.getLayoutParams().width = (int) (normalSize * scaleIcon); holder.binding.actionButtonQuote.getLayoutParams().height = (int) (normalSize * scaleIcon); holder.binding.actionButtonQuote.setIconSize((int) (normalSize * scaleIcon)); holder.binding.actionButtonQuote.requestLayout(); holder.binding.statusEmoji.getLayoutParams().width = (int) (normalSize * scaleIcon); Loading
app/src/main/java/app/fedilab/android/mastodon/ui/fragment/settings/FragmentNetworkSettings.java 0 → 100644 +60 −0 Original line number Diff line number Diff line package app.fedilab.android.mastodon.ui.fragment.settings; /* Copyright 2022 Thomas Schneider * * This file is a part of Fedilab * * 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. * * Fedilab 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 Fedilab; if not, * see <http://www.gnu.org/licenses>. */ import android.Manifest; import android.app.Activity; import android.content.Intent; import android.content.pm.PackageManager; import android.os.Build; import android.os.Bundle; import android.widget.Toast; import androidx.activity.result.ActivityResultLauncher; import androidx.activity.result.contract.ActivityResultContracts; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.core.app.ActivityCompat; import androidx.navigation.NavController; import androidx.navigation.Navigation; import androidx.preference.Preference; import androidx.preference.PreferenceFragmentCompat; import java.io.IOException; import app.fedilab.android.R; import app.fedilab.android.mastodon.activities.ProxyActivity; import app.fedilab.android.mastodon.helper.Helper; import app.fedilab.android.mastodon.helper.ZipHelper; import es.dmoral.toasty.Toasty; public class FragmentNetworkSettings extends PreferenceFragmentCompat { @Override public void onCreatePreferences(@Nullable Bundle savedInstanceState, @Nullable String rootKey) { addPreferencesFromResource(R.xml.pref_network); Preference pref_proxy = findPreference(getString(R.string.pref_key_proxy)); if (pref_proxy != null) { pref_proxy.setOnPreferenceClickListener(preference -> { (new ProxyActivity()).show(getParentFragmentManager(), null); return false; }); } } }