mirror of
https://codeberg.org/tom79/Fedilab.git
synced 2025-04-06 07:00:01 +03:00
Update navigation drawer header
- proxy setting moved to Network preferences page - 'Instance information' is now a nav drawer item - A 'Manage accounts' button to open accounts list
This commit is contained in:
parent
c41caddcf5
commit
eb276ba874
14 changed files with 272 additions and 172 deletions
|
@ -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;
|
||||
|
@ -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();
|
||||
|
@ -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;
|
||||
|
@ -624,47 +625,32 @@ 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) {
|
||||
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) {
|
||||
alt_bld.setMessage(activity.getString(R.string.logout_account_confirmation, Helper.getCurrentAccount(activity).mastodon_account.username, Helper.getCurrentAccount(activity).instance));
|
||||
} else if (Helper.getCurrentAccount(activity).peertube_account != null && Helper.getCurrentAccount(activity).instance != null) {
|
||||
alt_bld.setMessage(activity.getString(R.string.logout_account_confirmation, Helper.getCurrentAccount(activity).peertube_account.getUsername(), Helper.getCurrentAccount(activity).instance));
|
||||
} else {
|
||||
alt_bld.setMessage(activity.getString(R.string.logout_account_confirmation, "", ""));
|
||||
}
|
||||
alt_bld.setPositiveButton(R.string.action_logout, (dialog, id) -> {
|
||||
dialog.dismiss();
|
||||
try {
|
||||
Helper.removeAccount(activity);
|
||||
} catch (DBException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
});
|
||||
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;
|
||||
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) {
|
||||
alt_bld.setMessage(activity.getString(R.string.logout_account_confirmation, Helper.getCurrentAccount(activity).mastodon_account.username, Helper.getCurrentAccount(activity).instance));
|
||||
} else if (Helper.getCurrentAccount(activity).peertube_account != null && Helper.getCurrentAccount(activity).instance != null) {
|
||||
alt_bld.setMessage(activity.getString(R.string.logout_account_confirmation, Helper.getCurrentAccount(activity).peertube_account.getUsername(), Helper.getCurrentAccount(activity).instance));
|
||||
} else {
|
||||
alt_bld.setMessage(activity.getString(R.string.logout_account_confirmation, "", ""));
|
||||
}
|
||||
alt_bld.setPositiveButton(R.string.action_logout, (dialog, id) -> {
|
||||
dialog.dismiss();
|
||||
try {
|
||||
Helper.removeAccount(activity);
|
||||
} catch (DBException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return true;
|
||||
});
|
||||
popup.show();
|
||||
alt_bld.setNegativeButton(R.string.cancel, (dialog, id) -> dialog.dismiss());
|
||||
AlertDialog alert = alt_bld.create();
|
||||
alert.show();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -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();
|
||||
|
@ -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() {
|
||||
|
|
|
@ -0,0 +1,60 @@
|
|||
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;
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -138,6 +138,15 @@ public class FragmentSettingsCategories extends PreferenceFragmentCompat {
|
|||
});
|
||||
}
|
||||
|
||||
Preference pref_category_key_network = findPreference(getString(R.string.pref_category_key_network));
|
||||
if (pref_category_key_network != null) {
|
||||
pref_category_key_network.setOnPreferenceClickListener(preference -> {
|
||||
NavController navController = Navigation.findNavController(requireActivity(), R.id.fragment_container);
|
||||
navController.navigate(FragmentSettingsCategoriesDirections.Companion.categoriesToNetwork());
|
||||
return false;
|
||||
});
|
||||
}
|
||||
|
||||
Preference pref_category_key_extra_features = findPreference(getString(R.string.pref_category_key_extra_features));
|
||||
if (pref_category_key_extra_features != null) {
|
||||
pref_category_key_extra_features.setOnPreferenceClickListener(preference -> {
|
||||
|
|
|
@ -20,7 +20,7 @@ import static app.fedilab.android.BaseMainActivity.currentToken;
|
|||
import static app.fedilab.android.BaseMainActivity.currentUserID;
|
||||
import static app.fedilab.android.BaseMainActivity.fetchRecentAccounts;
|
||||
import static app.fedilab.android.BaseMainActivity.headerMenuOpen;
|
||||
import static app.fedilab.android.BaseMainActivity.headerOptionInfoClick;
|
||||
import static app.fedilab.android.BaseMainActivity.headerLogoutClick;
|
||||
import static app.fedilab.android.BaseMainActivity.mamageNewIntent;
|
||||
import static app.fedilab.android.BaseMainActivity.manageDrawerMenu;
|
||||
import static app.fedilab.android.mastodon.helper.Helper.PREF_USER_ID;
|
||||
|
@ -328,8 +328,8 @@ public class PeertubeMainActivity extends PeertubeBaseMainActivity {
|
|||
headerMainBinding.accountAcc.setTextSize(TypedValue.COMPLEX_UNIT_SP, 18 * 1.1f / scale);
|
||||
app.fedilab.android.mastodon.helper.Helper.loadPP(PeertubeMainActivity.this, headerMainBinding.accountProfilePicture, app.fedilab.android.mastodon.helper.Helper.getCurrentAccount(PeertubeMainActivity.this), false);
|
||||
headerMainBinding.backgroundImage.setAlpha(0.5f);
|
||||
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(PeertubeMainActivity.this, binding.drawerNavView, headerMainBinding);
|
||||
|
@ -345,9 +345,7 @@ public class PeertubeMainActivity extends PeertubeBaseMainActivity {
|
|||
headerMainBinding.accountAcc.setTextSize(TypedValue.COMPLEX_UNIT_SP, 18 * 1.1f / scale);
|
||||
app.fedilab.android.mastodon.helper.Helper.loadPP(PeertubeMainActivity.this, headerMainBinding.accountProfilePicture, app.fedilab.android.mastodon.helper.Helper.getCurrentAccount(PeertubeMainActivity.this), false);
|
||||
headerMainBinding.backgroundImage.setAlpha(0.5f);
|
||||
headerMainBinding.accountAcc.setOnClickListener(v -> headerMainBinding.changeAccount.callOnClick());
|
||||
headerMainBinding.changeAccount.setOnClickListener(v -> {
|
||||
|
||||
headerMainBinding.ownerAccounts.setOnClickListener(v -> {
|
||||
headerMenuOpen = !headerMenuOpen;
|
||||
manageDrawerMenu(PeertubeMainActivity.this, binding.drawerNavView, headerMainBinding);
|
||||
});
|
||||
|
@ -358,7 +356,8 @@ public class PeertubeMainActivity extends PeertubeBaseMainActivity {
|
|||
};
|
||||
mainHandler.post(myRunnable);
|
||||
}).start();
|
||||
headerMainBinding.instanceInfo.setVisibility(View.GONE);
|
||||
View navInstanceInfo = binding.drawerNavView.findViewById(R.id.nav_instance_info);
|
||||
binding.drawerNavView.removeView(navInstanceInfo);
|
||||
binding.drawerNavView.addHeaderView(headerMainBinding.getRoot());
|
||||
binding.drawerNavView.setNavigationItemSelectedListener(item -> {
|
||||
if (item.getItemId() == R.id.action_settings) {
|
||||
|
@ -414,7 +413,8 @@ public class PeertubeMainActivity extends PeertubeBaseMainActivity {
|
|||
binding.drawerLayout.close();
|
||||
return false;
|
||||
});
|
||||
headerMainBinding.headerOptionInfo.setOnClickListener(v -> headerOptionInfoClick(PeertubeMainActivity.this, headerMainBinding, getSupportFragmentManager()));
|
||||
TooltipCompat.setTooltipText(headerMainBinding.headerLogout, getString(R.string.action_logout));
|
||||
headerMainBinding.headerLogout.setOnClickListener(v -> headerLogoutClick(PeertubeMainActivity.this, headerMainBinding, getSupportFragmentManager()));
|
||||
fetchRecentAccounts(PeertubeMainActivity.this, headerMainBinding);
|
||||
} else {
|
||||
new Thread(() -> {
|
||||
|
|
10
app/src/main/res/layouts/mastodon/drawable/ic_accounts.xml
Normal file
10
app/src/main/res/layouts/mastodon/drawable/ic_accounts.xml
Normal file
|
@ -0,0 +1,10 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:tint="?colorControlNormal"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M16,11c1.66,0 2.99,-1.34 2.99,-3S17.66,5 16,5s-3,1.34 -3,3 1.34,3 3,3zM8,11c1.66,0 2.99,-1.34 2.99,-3S9.66,5 8,5 5,6.34 5,8s1.34,3 3,3zM8,13c-2.33,0 -7,1.17 -7,3.5L1,18c0,0.55 0.45,1 1,1h12c0.55,0 1,-0.45 1,-1v-1.5c0,-2.33 -4.67,-3.5 -7,-3.5zM16,13c-0.29,0 -0.62,0.02 -0.97,0.05 0.02,0.01 0.03,0.03 0.04,0.04 1.14,0.83 1.93,1.94 1.93,3.41L17,18c0,0.35 -0.07,0.69 -0.18,1L22,19c0.55,0 1,-0.45 1,-1v-1.5c0,-2.33 -4.67,-3.5 -7,-3.5z" />
|
||||
</vector>
|
14
app/src/main/res/layouts/mastodon/drawable/ic_logout.xml
Normal file
14
app/src/main/res/layouts/mastodon/drawable/ic_logout.xml
Normal file
|
@ -0,0 +1,14 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:autoMirrored="true"
|
||||
android:tint="?colorControlNormal"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M5,5h6c0.55,0 1,-0.45 1,-1v0c0,-0.55 -0.45,-1 -1,-1H5C3.9,3 3,3.9 3,5v14c0,1.1 0.9,2 2,2h6c0.55,0 1,-0.45 1,-1v0c0,-0.55 -0.45,-1 -1,-1H5V5z" />
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M20.65,11.65l-2.79,-2.79C17.54,8.54 17,8.76 17,9.21V11h-7c-0.55,0 -1,0.45 -1,1v0c0,0.55 0.45,1 1,1h7v1.79c0,0.45 0.54,0.67 0.85,0.35l2.79,-2.79C20.84,12.16 20.84,11.84 20.65,11.65z" />
|
||||
</vector>
|
|
@ -0,0 +1,10 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:tint="?attr/colorControlNormal"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M2.06,10.06c0.51,0.51 1.32,0.56 1.87,0.1 4.67,-3.84 11.45,-3.84 16.13,-0.01 0.56,0.46 1.38,0.42 1.89,-0.09 0.59,-0.59 0.55,-1.57 -0.1,-2.1 -5.71,-4.67 -13.97,-4.67 -19.69,0 -0.65,0.52 -0.7,1.5 -0.1,2.1zM9.82,17.82l1.47,1.47c0.39,0.39 1.02,0.39 1.41,0l1.47,-1.47c0.47,-0.47 0.37,-1.28 -0.23,-1.59 -1.22,-0.63 -2.68,-0.63 -3.91,0 -0.57,0.31 -0.68,1.12 -0.21,1.59zM6.09,14.09c0.49,0.49 1.26,0.54 1.83,0.13 2.44,-1.73 5.72,-1.73 8.16,0 0.57,0.4 1.34,0.36 1.83,-0.13l0.01,-0.01c0.6,-0.6 0.56,-1.62 -0.13,-2.11 -3.44,-2.49 -8.13,-2.49 -11.58,0 -0.69,0.5 -0.73,1.51 -0.12,2.12z" />
|
||||
</vector>
|
10
app/src/main/res/layouts/mastodon/drawable/ic_proxy.xml
Normal file
10
app/src/main/res/layouts/mastodon/drawable/ic_proxy.xml
Normal file
|
@ -0,0 +1,10 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:tint="?attr/colorControlNormal"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M12.65,10C11.7,7.31 8.9,5.5 5.77,6.12c-2.29,0.46 -4.15,2.29 -4.63,4.58C0.32,14.57 3.26,18 7,18c2.61,0 4.83,-1.67 5.65,-4H17v2c0,1.1 0.9,2 2,2s2,-0.9 2,-2v-2c1.1,0 2,-0.9 2,-2s-0.9,-2 -2,-2h-8.35zM7,14c-1.1,0 -2,-0.9 -2,-2s0.9,-2 2,-2 2,0.9 2,2 -0.9,2 -2,2z" />
|
||||
</vector>
|
|
@ -1,11 +1,10 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/nav_header_height">
|
||||
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/background_image"
|
||||
android:layout_width="match_parent"
|
||||
|
@ -13,135 +12,93 @@
|
|||
android:minHeight="@dimen/nav_header_height"
|
||||
android:scaleType="centerCrop"
|
||||
tools:src="@tools:sample/backgrounds/scenic" />
|
||||
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/header_option_info"
|
||||
style="@style/Widget.Material3.Button.Icon"
|
||||
android:layout_width="36dp"
|
||||
android:layout_height="36dp"
|
||||
android:id="@+id/header_logout"
|
||||
style="@style/Widget.Material3.Button.IconButton.Filled"
|
||||
android:layout_width="48dp"
|
||||
android:layout_height="48dp"
|
||||
android:layout_alignParentTop="true"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:layout_marginEnd="16dp"
|
||||
android:layout_margin="12dp"
|
||||
android:contentDescription="@string/action_logout"
|
||||
app:icon="@drawable/ic_logout"
|
||||
app:iconGravity="textStart"
|
||||
app:iconPadding="0dp"
|
||||
android:padding="0dp"
|
||||
android:contentDescription="@string/information"
|
||||
app:icon="@drawable/ic_baseline_more_vert_24" />
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/account_profile_picture"
|
||||
android:layout_width="80dp"
|
||||
android:layout_height="80dp"
|
||||
android:layout_margin="12dp"
|
||||
android:contentDescription="@string/profile_picture"
|
||||
android:scaleType="fitCenter"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
tools:src="@tools:sample/avatars" />
|
||||
|
||||
<androidx.appcompat.widget.LinearLayoutCompat
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="180dp"
|
||||
android:background="@color/transparent"
|
||||
android:gravity="bottom"
|
||||
android:orientation="vertical"
|
||||
android:paddingLeft="@dimen/activity_horizontal_margin"
|
||||
android:paddingTop="5dp"
|
||||
android:paddingRight="@dimen/activity_horizontal_margin"
|
||||
android:paddingBottom="5dp">
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/other_account1"
|
||||
android:layout_width="36dp"
|
||||
android:layout_height="36dp"
|
||||
android:layout_marginStart="12dp"
|
||||
android:scaleType="fitCenter"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintStart_toEndOf="@id/account_profile_picture"
|
||||
app:layout_constraintTop_toTopOf="@id/account_profile_picture"
|
||||
tools:src="@tools:sample/avatars"
|
||||
tools:visibility="visible" />
|
||||
|
||||
<androidx.appcompat.widget.LinearLayoutCompat
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal">
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/other_account2"
|
||||
android:layout_width="36dp"
|
||||
android:layout_height="36dp"
|
||||
android:layout_marginStart="12dp"
|
||||
android:scaleType="fitCenter"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintStart_toEndOf="@id/other_account1"
|
||||
app:layout_constraintTop_toTopOf="@id/account_profile_picture"
|
||||
tools:src="@tools:sample/avatars"
|
||||
tools:visibility="visible" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/account_profile_picture"
|
||||
android:layout_width="80dp"
|
||||
android:layout_height="80dp"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:contentDescription="@string/profile_picture"
|
||||
android:paddingTop="@dimen/nav_header_vertical_spacing"
|
||||
android:scaleType="fitCenter"
|
||||
tools:src="@tools:sample/avatars" />
|
||||
<com.google.android.material.textview.MaterialTextView
|
||||
android:id="@+id/account_name"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="12dp"
|
||||
android:layout_marginTop="12dp"
|
||||
android:ellipsize="end"
|
||||
android:singleLine="true"
|
||||
android:textAppearance="@style/TextAppearance.Material3.BodyMedium"
|
||||
app:layout_constraintEnd_toStartOf="@id/owner_accounts"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/account_profile_picture"
|
||||
tools:text="@tools:sample/full_names" />
|
||||
|
||||
<androidx.appcompat.widget.LinearLayoutCompat
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1" />
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/account_acc"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="12dp"
|
||||
android:ellipsize="end"
|
||||
android:singleLine="true"
|
||||
android:textAppearance="@style/TextAppearance.Material3.BodySmall"
|
||||
app:layout_constraintEnd_toStartOf="@id/owner_accounts"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/account_name"
|
||||
tools:text="@tools:sample/full_names" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/other_account1"
|
||||
android:layout_width="36dp"
|
||||
android:layout_height="36dp"
|
||||
android:layout_gravity="bottom|end"
|
||||
android:scaleType="fitCenter"
|
||||
android:visibility="gone"
|
||||
tools:src="@tools:sample/avatars"
|
||||
tools:visibility="visible" />
|
||||
<com.google.android.material.button.MaterialButton
|
||||
style="@style/Widget.Material3.Button.IconButton"
|
||||
android:id="@+id/owner_accounts"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="12dp"
|
||||
android:contentDescription="@string/manage_accounts"
|
||||
app:layout_constraintTop_toTopOf="@id/account_name"
|
||||
app:layout_constraintBottom_toBottomOf="@id/account_acc"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:icon="@drawable/ic_accounts" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/other_account2"
|
||||
android:layout_width="36dp"
|
||||
android:layout_height="36dp"
|
||||
android:layout_gravity="bottom|end"
|
||||
android:layout_marginStart="20dp"
|
||||
android:scaleType="fitCenter"
|
||||
android:visibility="gone"
|
||||
tools:src="@tools:sample/avatars"
|
||||
tools:visibility="visible" />
|
||||
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||
|
||||
|
||||
<androidx.appcompat.widget.LinearLayoutCompat
|
||||
android:id="@+id/change_account"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="30dp"
|
||||
android:layout_marginTop="10dp"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/account_name"
|
||||
style="@style/TextAppearance.Material3.TitleSmall"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:ellipsize="end"
|
||||
android:paddingTop="@dimen/nav_header_vertical_spacing"
|
||||
android:singleLine="true"
|
||||
tools:text="@tools:sample/full_names" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/owner_accounts"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="5dp"
|
||||
android:contentDescription="@string/open_menu"
|
||||
android:gravity="center_vertical"
|
||||
android:src="@drawable/ic_baseline_arrow_drop_down_24"
|
||||
app:tint="?colorControlNormal" />
|
||||
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||
|
||||
|
||||
<androidx.appcompat.widget.LinearLayoutCompat
|
||||
android:id="@+id/instance_info_container"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="30dp"
|
||||
android:layout_marginTop="10dp"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/account_acc"
|
||||
style="@style/TextAppearance.Material3.TitleSmall"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:ellipsize="end"
|
||||
android:gravity="center_vertical"
|
||||
android:singleLine="true"
|
||||
android:textSize="16sp"
|
||||
tools:text="@tools:sample/full_names" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/instance_info"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_vertical|end"
|
||||
android:contentDescription="@string/information"
|
||||
android:src="@drawable/ic_baseline_info_24"
|
||||
app:tint="?colorControlNormal" />
|
||||
|
||||
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||
|
||||
|
||||
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||
</RelativeLayout>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
|
|
@ -73,6 +73,11 @@
|
|||
android:icon="@drawable/ic_info_outline_white_24dp"
|
||||
android:title="@string/action_about_instance"
|
||||
android:visible="true" />
|
||||
<item
|
||||
android:id="@+id/nav_instance_info"
|
||||
android:icon="@drawable/ic_info_outline_white_24dp"
|
||||
android:title="@string/instance_information"
|
||||
android:visible="true" />
|
||||
|
||||
</group>
|
||||
</menu>
|
||||
|
|
|
@ -76,6 +76,14 @@
|
|||
app:popEnterAnim="@anim/pop_enter"
|
||||
app:popExitAnim="@anim/pop_exit" />
|
||||
|
||||
<action
|
||||
android:id="@+id/categories_to_network"
|
||||
app:destination="@id/FragmentNetworkSettings"
|
||||
app:enterAnim="@anim/enter"
|
||||
app:exitAnim="@anim/exit"
|
||||
app:popEnterAnim="@anim/pop_enter"
|
||||
app:popExitAnim="@anim/pop_exit" />
|
||||
|
||||
<action
|
||||
android:id="@+id/categories_to_language"
|
||||
app:destination="@id/FragmentLanguageSettings"
|
||||
|
@ -133,6 +141,11 @@
|
|||
android:name="app.fedilab.android.mastodon.ui.fragment.settings.FragmentThemingSettings"
|
||||
android:label="@string/theming" />
|
||||
|
||||
<fragment
|
||||
android:id="@+id/FragmentNetworkSettings"
|
||||
android:name="app.fedilab.android.mastodon.ui.fragment.settings.FragmentNetworkSettings"
|
||||
android:label="@string/network" />
|
||||
|
||||
<fragment
|
||||
android:id="@+id/FragmentLanguageSettings"
|
||||
android:name="app.fedilab.android.mastodon.ui.fragment.settings.FragmentLanguageSettings"
|
||||
|
|
|
@ -369,6 +369,7 @@
|
|||
<string name="peertube_instance">Peertube instance</string>
|
||||
<string name="set_display_emoji">Use Emoji One</string>
|
||||
<string name="information">Information</string>
|
||||
<string name="instance_information">Instance information</string>
|
||||
<string name="set_display_card">Display previews in all messages</string>
|
||||
<string name="account_id_clipbloard">The account id has been copied in the clipboard!</string>
|
||||
<string name="set_change_locale">Change the language</string>
|
||||
|
@ -627,6 +628,7 @@
|
|||
<string name="export_theme">Export the theme</string>
|
||||
<string name="export_theme_title">Tap here to export the current theme</string>
|
||||
<string name="theme_file_error">An error occurred when selecting the theme file</string>
|
||||
<string name="network">Network</string>
|
||||
<string name="user_count">User count</string>
|
||||
<string name="status_count">Status count</string>
|
||||
<string name="instance_count">Instance count</string>
|
||||
|
@ -1792,10 +1794,13 @@
|
|||
<string name="pref_category_key_pixelfed" translatable="false">pref_category_key_pixelfed</string>
|
||||
<string name="pref_category_key_home_cache" translatable="false">pref_category_key_home_cache</string>
|
||||
<string name="pref_category_key_theming" translatable="false">pref_category_theming</string>
|
||||
<string name="pref_category_key_network" translatable="false">pref_category_network</string>
|
||||
<string name="pref_category_key_administration" translatable="false">pref_category_administration</string>
|
||||
<string name="pref_category_key_languages" translatable="false">pref_category_languages</string>
|
||||
<string name="pref_category_key_extra_features" translatable="false">pref_category_key_extra_features</string>
|
||||
|
||||
<string name="pref_key_proxy" translatable="false">pref_key_proxy</string>
|
||||
|
||||
<string name="pref_export_settings" translatable="false">pref_export_settings</string>
|
||||
<string name="pref_import_settings" translatable="false">pref_import_settings</string>
|
||||
<string name="export_settings">Export settings</string>
|
||||
|
|
|
@ -67,6 +67,13 @@
|
|||
app:icon="@drawable/ic_theming"
|
||||
app:key="@string/pref_category_key_theming" />
|
||||
|
||||
<Preference
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:title="@string/network"
|
||||
app:icon="@drawable/ic_network_prefs"
|
||||
app:key="@string/pref_category_key_network" />
|
||||
|
||||
<!--
|
||||
<Preference
|
||||
android:layout_width="match_parent"
|
||||
|
|
12
app/src/main/res/xml/pref_network.xml
Normal file
12
app/src/main/res/xml/pref_network.xml
Normal file
|
@ -0,0 +1,12 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
|
||||
<Preference
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:title="@string/proxy_set"
|
||||
app:icon="@drawable/ic_proxy"
|
||||
app:key="@string/pref_key_proxy" />
|
||||
|
||||
</PreferenceScreen>
|
Loading…
Reference in a new issue