diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 2860acff..b317cb1f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -13,7 +13,7 @@ android:roundIcon="@mipmap/app_logo_round" android:supportsRtl="true" android:theme="@style/AppTheme"> - + diff --git a/app/src/main/assets/fonts/manroperegular.ttf b/app/src/main/assets/fonts/manroperegular.ttf new file mode 100644 index 00000000..53627a0c Binary files /dev/null and b/app/src/main/assets/fonts/manroperegular.ttf differ diff --git a/app/src/main/res/font/roboto.ttf b/app/src/main/assets/fonts/roboto.ttf similarity index 100% rename from app/src/main/res/font/roboto.ttf rename to app/src/main/assets/fonts/roboto.ttf diff --git a/app/src/main/res/font/sourcecodeproregular.ttf b/app/src/main/assets/fonts/sourcecodeproregular.ttf similarity index 100% rename from app/src/main/res/font/sourcecodeproregular.ttf rename to app/src/main/assets/fonts/sourcecodeproregular.ttf diff --git a/app/src/main/java/org/mian/gitnex/activities/BaseActivity.java b/app/src/main/java/org/mian/gitnex/activities/BaseActivity.java new file mode 100644 index 00000000..db146eda --- /dev/null +++ b/app/src/main/java/org/mian/gitnex/activities/BaseActivity.java @@ -0,0 +1,61 @@ +package org.mian.gitnex.activities; + +import android.os.Bundle; +import androidx.appcompat.app.AppCompatActivity; +import org.mian.gitnex.helpers.FontsOverride; +import org.mian.gitnex.util.TinyDB; + +/** + * Author M M Arif + */ + +public abstract class BaseActivity extends AppCompatActivity { + + @Override + public void onCreate(Bundle savedInstanceState) { + + super.onCreate(savedInstanceState); + setContentView(getLayoutResourceId()); + + final TinyDB tinyDb = new TinyDB(getApplicationContext()); + + if(tinyDb.getInt("customFontId") == 0) { + + FontsOverride.setDefaultFont(this, "DEFAULT", "fonts/roboto.ttf"); + FontsOverride.setDefaultFont(this, "MONOSPACE", "fonts/roboto.ttf"); + FontsOverride.setDefaultFont(this, "SERIF", "fonts/roboto.ttf"); + FontsOverride.setDefaultFont(this, "SANS_SERIF", "fonts/roboto.ttf"); + + } + else if (tinyDb.getInt("customFontId") == 1) { + + FontsOverride.setDefaultFont(this, "DEFAULT", "fonts/manroperegular.ttf"); + FontsOverride.setDefaultFont(this, "MONOSPACE", "fonts/manroperegular.ttf"); + FontsOverride.setDefaultFont(this, "SERIF", "fonts/manroperegular.ttf"); + FontsOverride.setDefaultFont(this, "SANS_SERIF", "fonts/manroperegular.ttf"); + + } + else if (tinyDb.getInt("customFontId") == 2) { + + FontsOverride.setDefaultFont(this, "DEFAULT", "fonts/sourcecodeproregular.ttf"); + FontsOverride.setDefaultFont(this, "MONOSPACE", "fonts/sourcecodeproregular.ttf"); + FontsOverride.setDefaultFont(this, "SERIF", "fonts/sourcecodeproregular.ttf"); + FontsOverride.setDefaultFont(this, "SANS_SERIF", "fonts/sourcecodeproregular.ttf"); + + } + else { + + FontsOverride.setDefaultFont(this, "DEFAULT", "fonts/roboto.ttf"); + FontsOverride.setDefaultFont(this, "MONOSPACE", "fonts/roboto.ttf"); + FontsOverride.setDefaultFont(this, "SERIF", "fonts/roboto.ttf"); + FontsOverride.setDefaultFont(this, "SANS_SERIF", "fonts/roboto.ttf"); + + } + + } + + protected abstract int getLayoutResourceId(); + +} + + diff --git a/app/src/main/java/org/mian/gitnex/activities/IssueDetailActivity.java b/app/src/main/java/org/mian/gitnex/activities/IssueDetailActivity.java index 7618faed..8873a6ad 100644 --- a/app/src/main/java/org/mian/gitnex/activities/IssueDetailActivity.java +++ b/app/src/main/java/org/mian/gitnex/activities/IssueDetailActivity.java @@ -132,6 +132,8 @@ public class IssueDetailActivity extends AppCompatActivity { assigneesLayout = findViewById(R.id.frameAssignees); Toolbar toolbar = findViewById(R.id.toolbar); + TextView toolbarTitle = toolbar.findViewById(R.id.toolbar_title); + setSupportActionBar(toolbar); Objects.requireNonNull(getSupportActionBar()).setTitle(repoName); getSupportActionBar().setDisplayHomeAsUpEnabled(true); @@ -158,6 +160,31 @@ public class IssueDetailActivity extends AppCompatActivity { } }); + Typeface myTypeface; + if(tinyDb.getInt("customFontId") == 0) { + + myTypeface = Typeface.createFromAsset(Objects.requireNonNull(getApplicationContext()).getAssets(), "fonts/roboto.ttf"); + + } + else if (tinyDb.getInt("customFontId") == 1) { + + myTypeface = Typeface.createFromAsset(Objects.requireNonNull(getApplicationContext()).getAssets(), "fonts/manroperegular.ttf"); + + } + else if (tinyDb.getInt("customFontId") == 2) { + + myTypeface = Typeface.createFromAsset(Objects.requireNonNull(getApplicationContext()).getAssets(), "fonts/sourcecodeproregular.ttf"); + + } + else { + + myTypeface = Typeface.createFromAsset(Objects.requireNonNull(getApplicationContext()).getAssets(), "fonts/roboto.ttf"); + + } + + toolbarTitle.setTypeface(myTypeface); + toolbarTitle.setText(repoName); + getSingleIssue(instanceUrl, instanceToken, repoOwner, repoName, issueIndex, loginUid); fetchDataAsync(instanceUrl, instanceToken, repoOwner, repoName, issueIndex, loginUid); diff --git a/app/src/main/java/org/mian/gitnex/activities/LoginActivity.java b/app/src/main/java/org/mian/gitnex/activities/LoginActivity.java index 7a4e8a07..2c858632 100644 --- a/app/src/main/java/org/mian/gitnex/activities/LoginActivity.java +++ b/app/src/main/java/org/mian/gitnex/activities/LoginActivity.java @@ -20,7 +20,6 @@ import android.widget.Spinner; import android.widget.TextView; import androidx.annotation.NonNull; import androidx.appcompat.app.AlertDialog; -import androidx.appcompat.app.AppCompatActivity; import com.tooltip.Tooltip; import org.mian.gitnex.R; import org.mian.gitnex.clients.RetrofitClient; @@ -44,7 +43,7 @@ import retrofit2.Callback; * Author M M Arif */ -public class LoginActivity extends AppCompatActivity implements View.OnClickListener { +public class LoginActivity extends BaseActivity implements View.OnClickListener { private Button loginButton; private EditText instanceUrlET, loginUidET, loginPassword, otpCode, loginTokenCode; @@ -55,10 +54,14 @@ public class LoginActivity extends AppCompatActivity implements View.OnClickList private String device_id = "token"; @Override - protected void onCreate(Bundle savedInstanceState) { + protected int getLayoutResourceId(){ + return R.layout.activity_login; + } + + @Override + public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setContentView(R.layout.activity_login); TinyDB tinyDb = new TinyDB(getApplicationContext()); boolean connToInternet = AppUtil.haveNetworkConnection(getApplicationContext()); diff --git a/app/src/main/java/org/mian/gitnex/activities/MainActivity.java b/app/src/main/java/org/mian/gitnex/activities/MainActivity.java index 349a85bf..51f3a4e3 100644 --- a/app/src/main/java/org/mian/gitnex/activities/MainActivity.java +++ b/app/src/main/java/org/mian/gitnex/activities/MainActivity.java @@ -8,7 +8,9 @@ import com.google.android.material.navigation.NavigationView; import androidx.core.view.GravityCompat; import androidx.drawerlayout.widget.DrawerLayout; import androidx.appcompat.app.ActionBarDrawerToggle; -import androidx.appcompat.app.AppCompatActivity; +import androidx.fragment.app.Fragment; +import androidx.fragment.app.FragmentManager; +import android.graphics.Typeface; import android.net.Uri; import android.os.Bundle; import android.util.Log; @@ -45,17 +47,25 @@ import retrofit2.Callback; * Author M M Arif */ -public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener { +public class MainActivity extends BaseActivity implements NavigationView.OnNavigationItemSelectedListener { private DrawerLayout drawer; private TextView userFullName; private TextView userEmail; private ImageView userAvatar; + private TextView toolbarTitle; final Context ctx = this; + private Typeface myTypeface; @Override - protected void onCreate(Bundle savedInstanceState) { + protected int getLayoutResourceId(){ + return R.layout.activity_main; + } + @Override + public void onCreate(Bundle savedInstanceState) { + + super.onCreate(savedInstanceState); final TinyDB tinyDb = new TinyDB(getApplicationContext()); tinyDb.putBoolean("noConnection", false); //userAvatar = findViewById(R.id.userAvatar); @@ -86,17 +96,62 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On boolean connToInternet = AppUtil.haveNetworkConnection(getApplicationContext()); - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_main); - if(!tinyDb.getBoolean("loggedInMode")) { logout(); return; } androidx.appcompat.widget.Toolbar toolbar = findViewById(R.id.toolbar); + toolbarTitle = toolbar.findViewById(R.id.toolbar_title); + + if(tinyDb.getInt("customFontId") == 0) { + + myTypeface = Typeface.createFromAsset(getAssets(), "fonts/roboto.ttf"); + + } + else if (tinyDb.getInt("customFontId") == 1) { + + myTypeface = Typeface.createFromAsset(getAssets(), "fonts/manroperegular.ttf"); + + } + else if (tinyDb.getInt("customFontId") == 2) { + + myTypeface = Typeface.createFromAsset(getAssets(), "fonts/sourcecodeproregular.ttf"); + + } + else { + + myTypeface = Typeface.createFromAsset(getAssets(), "fonts/roboto.ttf"); + + } + + toolbarTitle.setTypeface(myTypeface); setSupportActionBar(toolbar); + FragmentManager fm = getSupportFragmentManager(); + Fragment fragmentById = fm.findFragmentById(R.id.fragment_container); + if (fragmentById instanceof SettingsFragment) { + toolbarTitle.setText(getResources().getString(R.string.pageTitleSettings)); + } + else if (fragmentById instanceof MyRepositoriesFragment) { + toolbarTitle.setText(getResources().getString(R.string.pageTitleMyRepos)); + } + else if (fragmentById instanceof StarredRepositoriesFragment) { + toolbarTitle.setText(getResources().getString(R.string.pageTitleStarredRepos)); + } + else if (fragmentById instanceof OrganizationsFragment) { + toolbarTitle.setText(getResources().getString(R.string.pageTitleOrganizations)); + } + else if (fragmentById instanceof ExploreRepositoriesFragment) { + toolbarTitle.setText(getResources().getString(R.string.pageTitleExplore)); + } + else if (fragmentById instanceof ProfileFragment) { + toolbarTitle.setText(getResources().getString(R.string.pageTitleProfile)); + } + else if (fragmentById instanceof AboutFragment) { + toolbarTitle.setText(getResources().getString(R.string.pageTitleAbout)); + } + drawer = findViewById(R.id.drawer_layout); NavigationView navigationView = findViewById(R.id.nav_view); navigationView.setNavigationItemSelectedListener(this); @@ -130,8 +185,6 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On tinyDb.putBoolean("noConnection", false); } - //tinyDb.putBoolean("noConnection", true); - String userEmailNav = tinyDb.getString("userEmail"); String userFullNameNav = tinyDb.getString("userFullname"); String userAvatarNav = tinyDb.getString("userAvatar"); @@ -139,11 +192,13 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On userEmail = hView.findViewById(R.id.userEmail); if (!userEmailNav.equals("")) { userEmail.setText(userEmailNav); + userEmail.setTypeface(myTypeface); } userFullName = hView.findViewById(R.id.userFullname); if (!userFullNameNav.equals("")) { userFullName.setText(userFullNameNav); + userFullName.setTypeface(myTypeface); } userAvatar = hView.findViewById(R.id.userAvatar); @@ -176,31 +231,37 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On if(savedInstanceState == null) { if(tinyDb.getInt("homeScreenId") == 0) { + toolbarTitle.setText(getResources().getString(R.string.pageTitleMyRepos)); getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new MyRepositoriesFragment()).commit(); navigationView.setCheckedItem(R.id.nav_home); } else if(tinyDb.getInt("homeScreenId") == 1) { + toolbarTitle.setText(getResources().getString(R.string.pageTitleStarredRepos)); getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new StarredRepositoriesFragment()).commit(); navigationView.setCheckedItem(R.id.nav_starred_repos); } else if(tinyDb.getInt("homeScreenId") == 2) { + toolbarTitle.setText(getResources().getString(R.string.pageTitleOrganizations)); getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new OrganizationsFragment()).commit(); navigationView.setCheckedItem(R.id.nav_organizations); } else if(tinyDb.getInt("homeScreenId") == 3) { + toolbarTitle.setText(getResources().getString(R.string.pageTitleRepositories)); getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new RepositoriesFragment()).commit(); navigationView.setCheckedItem(R.id.nav_repositories); } else if(tinyDb.getInt("homeScreenId") == 4) { + toolbarTitle.setText(getResources().getString(R.string.pageTitleProfile)); getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new ProfileFragment()).commit(); navigationView.setCheckedItem(R.id.nav_profile); } else { + toolbarTitle.setText(getResources().getString(R.string.pageTitleMyRepos)); getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new MyRepositoriesFragment()).commit(); navigationView.setCheckedItem(R.id.nav_home); @@ -246,22 +307,28 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On switch (menuItem.getItemId()) { case R.id.nav_home: + toolbarTitle.setText(getResources().getString(R.string.pageTitleMyRepos)); getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new MyRepositoriesFragment()).commit(); break; case R.id.nav_organizations: + toolbarTitle.setText(getResources().getString(R.string.pageTitleOrganizations)); getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new OrganizationsFragment()).commit(); break; case R.id.nav_profile: + toolbarTitle.setText(getResources().getString(R.string.pageTitleProfile)); getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new ProfileFragment()).commit(); break; case R.id.nav_repositories: + toolbarTitle.setText(getResources().getString(R.string.pageTitleRepositories)); getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new RepositoriesFragment()).commit(); + break; case R.id.nav_settings: + toolbarTitle.setText(getResources().getString(R.string.pageTitleSettings)); getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new SettingsFragment()).commit(); break; @@ -270,6 +337,7 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out); break; case R.id.nav_about: + toolbarTitle.setText(getResources().getString(R.string.pageTitleAbout)); getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new AboutFragment()).commit(); break; @@ -277,10 +345,12 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On rateThisApp(); break; case R.id.nav_starred_repos: + toolbarTitle.setText(getResources().getString(R.string.pageTitleStarredRepos)); getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new StarredRepositoriesFragment()).commit(); break; case R.id.nav_explore: + toolbarTitle.setText(getResources().getString(R.string.pageTitleExplore)); getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new ExploreRepositoriesFragment()).commit(); break; diff --git a/app/src/main/java/org/mian/gitnex/activities/OrgDetailActivity.java b/app/src/main/java/org/mian/gitnex/activities/OrgDetailActivity.java index 749431b8..45ea48f6 100644 --- a/app/src/main/java/org/mian/gitnex/activities/OrgDetailActivity.java +++ b/app/src/main/java/org/mian/gitnex/activities/OrgDetailActivity.java @@ -9,10 +9,14 @@ import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentPagerAdapter; import androidx.viewpager.widget.ViewPager; import android.content.Intent; +import android.graphics.Typeface; import android.os.Bundle; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; import org.mian.gitnex.R; import org.mian.gitnex.fragments.MembersByOrgFragment; import org.mian.gitnex.fragments.OrgBottomSheetFragment; @@ -37,6 +41,8 @@ public class OrgDetailActivity extends AppCompatActivity implements OrgBottomShe String orgName = tinyDb.getString("orgName"); Toolbar toolbar = findViewById(R.id.toolbar); + TextView toolbarTitle = toolbar.findViewById(R.id.toolbar_title); + setSupportActionBar(toolbar); Objects.requireNonNull(getSupportActionBar()).setTitle(orgName); getSupportActionBar().setDisplayHomeAsUpEnabled(true); @@ -48,6 +54,44 @@ public class OrgDetailActivity extends AppCompatActivity implements OrgBottomShe TabLayout tabLayout = findViewById(R.id.tabs); + Typeface myTypeface; + if(tinyDb.getInt("customFontId") == 0) { + + myTypeface = Typeface.createFromAsset(Objects.requireNonNull(getApplicationContext()).getAssets(), "fonts/roboto.ttf"); + + } + else if (tinyDb.getInt("customFontId") == 1) { + + myTypeface = Typeface.createFromAsset(Objects.requireNonNull(getApplicationContext()).getAssets(), "fonts/manroperegular.ttf"); + + } + else if (tinyDb.getInt("customFontId") == 2) { + + myTypeface = Typeface.createFromAsset(Objects.requireNonNull(getApplicationContext()).getAssets(), "fonts/sourcecodeproregular.ttf"); + + } + else { + + myTypeface = Typeface.createFromAsset(Objects.requireNonNull(getApplicationContext()).getAssets(), "fonts/roboto.ttf"); + + } + + toolbarTitle.setTypeface(myTypeface); + toolbarTitle.setText(orgName); + + ViewGroup vg = (ViewGroup) tabLayout.getChildAt(0); + int tabsCount = vg.getChildCount(); + for (int j = 0; j < tabsCount; j++) { + ViewGroup vgTab = (ViewGroup) vg.getChildAt(j); + int tabChildCount = vgTab.getChildCount(); + for (int i = 0; i < tabChildCount; i++) { + View tabViewChild = vgTab.getChildAt(i); + if (tabViewChild instanceof TextView) { + ((TextView) tabViewChild).setTypeface(myTypeface); + } + } + } + mViewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout)); tabLayout.addOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(mViewPager)); diff --git a/app/src/main/java/org/mian/gitnex/activities/OrgTeamMembersActivity.java b/app/src/main/java/org/mian/gitnex/activities/OrgTeamMembersActivity.java index ce9015e2..586b40c5 100644 --- a/app/src/main/java/org/mian/gitnex/activities/OrgTeamMembersActivity.java +++ b/app/src/main/java/org/mian/gitnex/activities/OrgTeamMembersActivity.java @@ -1,7 +1,6 @@ package org.mian.gitnex.activities; import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProvider; import android.os.Bundle; @@ -16,12 +15,13 @@ import org.mian.gitnex.models.UserInfo; import org.mian.gitnex.util.TinyDB; import org.mian.gitnex.viewmodels.TeamMembersByOrgViewModel; import java.util.List; +import java.util.Objects; /** * Author M M Arif */ -public class OrgTeamMembersActivity extends AppCompatActivity { +public class OrgTeamMembersActivity extends BaseActivity { private TextView noDataMembers; private View.OnClickListener onClickListener; @@ -29,9 +29,13 @@ public class OrgTeamMembersActivity extends AppCompatActivity { private GridView mGridView; @Override - protected void onCreate(Bundle savedInstanceState) { + protected int getLayoutResourceId(){ + return R.layout.activity_org_team_members; + } + + @Override + public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setContentView(R.layout.activity_org_team_members); TinyDB tinyDb = new TinyDB(getApplicationContext()); final String instanceUrl = tinyDb.getString("instanceUrl"); @@ -46,7 +50,7 @@ public class OrgTeamMembersActivity extends AppCompatActivity { initCloseListener(); closeActivity.setOnClickListener(onClickListener); - if(getIntent().getStringExtra("teamTitle") != null && !getIntent().getStringExtra("teamTitle").equals("")) { + if(getIntent().getStringExtra("teamTitle") != null && !Objects.requireNonNull(getIntent().getStringExtra("teamTitle")).equals("")) { toolbarTitle.setText(getIntent().getStringExtra("teamTitle")); } else { @@ -54,7 +58,7 @@ public class OrgTeamMembersActivity extends AppCompatActivity { } String teamId; - if(getIntent().getStringExtra("teamId") != null && !getIntent().getStringExtra("teamId").equals("")){ + if(getIntent().getStringExtra("teamId") != null && !Objects.requireNonNull(getIntent().getStringExtra("teamId")).equals("")){ teamId = getIntent().getStringExtra("teamId"); } else { @@ -64,6 +68,7 @@ public class OrgTeamMembersActivity extends AppCompatActivity { getIntent().getStringExtra("teamId"); //Log.i("teamId", getIntent().getStringExtra("teamId")); + assert teamId != null; fetchDataAsync(instanceUrl, Authorization.returnAuthentication(getApplicationContext(), loginUid, instanceToken), Integer.valueOf(teamId)); } diff --git a/app/src/main/java/org/mian/gitnex/activities/RepoDetailActivity.java b/app/src/main/java/org/mian/gitnex/activities/RepoDetailActivity.java index 1bc60fd9..e0b1dcb6 100644 --- a/app/src/main/java/org/mian/gitnex/activities/RepoDetailActivity.java +++ b/app/src/main/java/org/mian/gitnex/activities/RepoDetailActivity.java @@ -3,7 +3,6 @@ package org.mian.gitnex.activities; import com.google.android.material.tabs.TabLayout; import com.google.gson.JsonElement; import androidx.annotation.NonNull; -import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.widget.Toolbar; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentManager; @@ -14,6 +13,7 @@ import retrofit2.Callback; import android.annotation.SuppressLint; import android.content.Intent; import android.content.res.ColorStateList; +import android.graphics.Typeface; import android.os.Bundle; import android.util.Log; import android.view.LayoutInflater; @@ -21,6 +21,7 @@ import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; +import android.view.ViewGroup; import android.widget.TextView; import org.mian.gitnex.R; import org.mian.gitnex.clients.RetrofitClient; @@ -47,14 +48,18 @@ import android.net.Uri; * Author M M Arif */ -public class RepoDetailActivity extends AppCompatActivity implements RepoBottomSheetFragment.BottomSheetListener { +public class RepoDetailActivity extends BaseActivity implements RepoBottomSheetFragment.BottomSheetListener { private TextView textViewBadge; @Override - protected void onCreate(Bundle savedInstanceState) { + protected int getLayoutResourceId(){ + return R.layout.activity_repo_detail; + } + + @Override + public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setContentView(R.layout.activity_repo_detail); TinyDB tinyDb = new TinyDB(getApplicationContext()); String repoFullName = tinyDb.getString("repoFullName"); @@ -70,6 +75,8 @@ public class RepoDetailActivity extends AppCompatActivity implements RepoBottomS AppUtil.setAppLocale(getResources(), appLocale); Toolbar toolbar = findViewById(R.id.toolbar); + TextView toolbarTitle = toolbar.findViewById(R.id.toolbar_title); + setSupportActionBar(toolbar); Objects.requireNonNull(getSupportActionBar()).setTitle(repoName1); getSupportActionBar().setDisplayHomeAsUpEnabled(true); @@ -81,6 +88,44 @@ public class RepoDetailActivity extends AppCompatActivity implements RepoBottomS TabLayout tabLayout = findViewById(R.id.tabs); + Typeface myTypeface; + if(tinyDb.getInt("customFontId") == 0) { + + myTypeface = Typeface.createFromAsset(Objects.requireNonNull(getApplicationContext()).getAssets(), "fonts/roboto.ttf"); + + } + else if (tinyDb.getInt("customFontId") == 1) { + + myTypeface = Typeface.createFromAsset(Objects.requireNonNull(getApplicationContext()).getAssets(), "fonts/manroperegular.ttf"); + + } + else if (tinyDb.getInt("customFontId") == 2) { + + myTypeface = Typeface.createFromAsset(Objects.requireNonNull(getApplicationContext()).getAssets(), "fonts/sourcecodeproregular.ttf"); + + } + else { + + myTypeface = Typeface.createFromAsset(Objects.requireNonNull(getApplicationContext()).getAssets(), "fonts/roboto.ttf"); + + } + + toolbarTitle.setTypeface(myTypeface); + toolbarTitle.setText(repoName1); + + ViewGroup vg = (ViewGroup) tabLayout.getChildAt(0); + int tabsCount = vg.getChildCount(); + for (int j = 0; j < tabsCount; j++) { + ViewGroup vgTab = (ViewGroup) vg.getChildAt(j); + int tabChildCount = vgTab.getChildCount(); + for (int i = 0; i < tabChildCount; i++) { + View tabViewChild = vgTab.getChildAt(i); + if (tabViewChild instanceof TextView) { + ((TextView) tabViewChild).setTypeface(myTypeface); + } + } + } + mViewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout)); tabLayout.addOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(mViewPager)); diff --git a/app/src/main/java/org/mian/gitnex/adapters/RepoStargazersAdapter.java b/app/src/main/java/org/mian/gitnex/adapters/RepoStargazersAdapter.java index 6eea64dc..9dacfe95 100644 --- a/app/src/main/java/org/mian/gitnex/adapters/RepoStargazersAdapter.java +++ b/app/src/main/java/org/mian/gitnex/adapters/RepoStargazersAdapter.java @@ -2,6 +2,7 @@ package org.mian.gitnex.adapters; import android.annotation.SuppressLint; import android.content.Context; +import android.graphics.Typeface; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -12,6 +13,7 @@ import com.squareup.picasso.Picasso; import org.mian.gitnex.R; import org.mian.gitnex.helpers.RoundedTransformation; import org.mian.gitnex.models.UserInfo; +import org.mian.gitnex.util.TinyDB; import java.util.List; /** @@ -79,11 +81,36 @@ public class RepoStargazersAdapter extends BaseAdapter { UserInfo currentItem = stargazersList.get(position); Picasso.get().load(currentItem.getAvatar()).transform(new RoundedTransformation(8, 0)).resize(180, 180).centerCrop().into(viewHolder.memberAvatar); + final TinyDB tinyDb = new TinyDB(mCtx); + Typeface myTypeface; + if(tinyDb.getInt("customFontId") == 0) { + + myTypeface = Typeface.createFromAsset(mCtx.getAssets(), "fonts/roboto.ttf"); + + } + else if (tinyDb.getInt("customFontId") == 1) { + + myTypeface = Typeface.createFromAsset(mCtx.getAssets(), "fonts/manroperegular.ttf"); + + } + else if (tinyDb.getInt("customFontId") == 2) { + + myTypeface = Typeface.createFromAsset(mCtx.getAssets(), "fonts/sourcecodeproregular.ttf"); + + } + else { + + myTypeface = Typeface.createFromAsset(mCtx.getAssets(), "fonts/roboto.ttf"); + + } + if(!currentItem.getFullname().equals("")) { viewHolder.memberName.setText(currentItem.getFullname()); + viewHolder.memberName.setTypeface(myTypeface); } else { viewHolder.memberName.setText(currentItem.getLogin()); + viewHolder.memberName.setTypeface(myTypeface); } } diff --git a/app/src/main/java/org/mian/gitnex/adapters/RepoWatchersAdapter.java b/app/src/main/java/org/mian/gitnex/adapters/RepoWatchersAdapter.java index fb6909dc..478ef19e 100644 --- a/app/src/main/java/org/mian/gitnex/adapters/RepoWatchersAdapter.java +++ b/app/src/main/java/org/mian/gitnex/adapters/RepoWatchersAdapter.java @@ -2,6 +2,7 @@ package org.mian.gitnex.adapters; import android.annotation.SuppressLint; import android.content.Context; +import android.graphics.Typeface; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -12,6 +13,7 @@ import com.squareup.picasso.Picasso; import org.mian.gitnex.R; import org.mian.gitnex.helpers.RoundedTransformation; import org.mian.gitnex.models.UserInfo; +import org.mian.gitnex.util.TinyDB; import java.util.List; /** @@ -79,11 +81,36 @@ public class RepoWatchersAdapter extends BaseAdapter { UserInfo currentItem = watchersList.get(position); Picasso.get().load(currentItem.getAvatar()).transform(new RoundedTransformation(8, 0)).resize(180, 180).centerCrop().into(viewHolder.memberAvatar); + final TinyDB tinyDb = new TinyDB(mCtx); + Typeface myTypeface; + if(tinyDb.getInt("customFontId") == 0) { + + myTypeface = Typeface.createFromAsset(mCtx.getAssets(), "fonts/roboto.ttf"); + + } + else if (tinyDb.getInt("customFontId") == 1) { + + myTypeface = Typeface.createFromAsset(mCtx.getAssets(), "fonts/manroperegular.ttf"); + + } + else if (tinyDb.getInt("customFontId") == 2) { + + myTypeface = Typeface.createFromAsset(mCtx.getAssets(), "fonts/sourcecodeproregular.ttf"); + + } + else { + + myTypeface = Typeface.createFromAsset(mCtx.getAssets(), "fonts/roboto.ttf"); + + } + if(!currentItem.getFullname().equals("")) { viewHolder.memberName.setText(currentItem.getFullname()); + viewHolder.memberName.setTypeface(myTypeface); } else { viewHolder.memberName.setText(currentItem.getLogin()); + viewHolder.memberName.setTypeface(myTypeface); } } diff --git a/app/src/main/java/org/mian/gitnex/adapters/TeamMembersByOrgAdapter.java b/app/src/main/java/org/mian/gitnex/adapters/TeamMembersByOrgAdapter.java index d773a39e..db9c68af 100644 --- a/app/src/main/java/org/mian/gitnex/adapters/TeamMembersByOrgAdapter.java +++ b/app/src/main/java/org/mian/gitnex/adapters/TeamMembersByOrgAdapter.java @@ -2,6 +2,7 @@ package org.mian.gitnex.adapters; import android.annotation.SuppressLint; import android.content.Context; +import android.graphics.Typeface; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -12,6 +13,7 @@ import com.squareup.picasso.Picasso; import org.mian.gitnex.R; import org.mian.gitnex.helpers.RoundedTransformation; import org.mian.gitnex.models.UserInfo; +import org.mian.gitnex.util.TinyDB; import java.util.List; /** @@ -80,11 +82,36 @@ public class TeamMembersByOrgAdapter extends BaseAdapter { UserInfo currentItem = teamMembersList.get(position); Picasso.get().load(currentItem.getAvatar()).transform(new RoundedTransformation(8, 0)).resize(180, 180).centerCrop().into(viewHolder.memberAvatar); + final TinyDB tinyDb = new TinyDB(mCtx); + Typeface myTypeface; + if(tinyDb.getInt("customFontId") == 0) { + + myTypeface = Typeface.createFromAsset(mCtx.getAssets(), "fonts/roboto.ttf"); + + } + else if (tinyDb.getInt("customFontId") == 1) { + + myTypeface = Typeface.createFromAsset(mCtx.getAssets(), "fonts/manroperegular.ttf"); + + } + else if (tinyDb.getInt("customFontId") == 2) { + + myTypeface = Typeface.createFromAsset(mCtx.getAssets(), "fonts/sourcecodeproregular.ttf"); + + } + else { + + myTypeface = Typeface.createFromAsset(mCtx.getAssets(), "fonts/roboto.ttf"); + + } + if(!currentItem.getFullname().equals("")) { viewHolder.memberName.setText(currentItem.getFullname()); + viewHolder.memberName.setTypeface(myTypeface); } else { viewHolder.memberName.setText(currentItem.getLogin()); + viewHolder.memberName.setTypeface(myTypeface); } } diff --git a/app/src/main/java/org/mian/gitnex/fragments/AboutFragment.java b/app/src/main/java/org/mian/gitnex/fragments/AboutFragment.java index 408b983b..ccfdfd19 100644 --- a/app/src/main/java/org/mian/gitnex/fragments/AboutFragment.java +++ b/app/src/main/java/org/mian/gitnex/fragments/AboutFragment.java @@ -27,7 +27,6 @@ public class AboutFragment extends Fragment { public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View v = inflater.inflate(R.layout.fragment_about, container, false); - ((MainActivity) Objects.requireNonNull(getActivity())).setActionBarTitle(getResources().getString(R.string.pageTitleAbout)); TinyDB tinyDb = new TinyDB(getContext()); diff --git a/app/src/main/java/org/mian/gitnex/fragments/ExploreRepositoriesFragment.java b/app/src/main/java/org/mian/gitnex/fragments/ExploreRepositoriesFragment.java index 67faf79f..d2c8bf64 100644 --- a/app/src/main/java/org/mian/gitnex/fragments/ExploreRepositoriesFragment.java +++ b/app/src/main/java/org/mian/gitnex/fragments/ExploreRepositoriesFragment.java @@ -17,7 +17,6 @@ import androidx.recyclerview.widget.DividerItemDecoration; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import org.mian.gitnex.R; -import org.mian.gitnex.activities.MainActivity; import org.mian.gitnex.adapters.ExploreRepositoriesAdapter; import org.mian.gitnex.clients.RetrofitClient; import org.mian.gitnex.helpers.Authorization; @@ -77,7 +76,6 @@ public class ExploreRepositoriesFragment extends Fragment { final View v = inflater.inflate(R.layout.fragment_explore_repo, container, false); //setHasOptionsMenu(true); - ((MainActivity) Objects.requireNonNull(getActivity())).setActionBarTitle(getResources().getString(R.string.pageTitleExplore)); TinyDB tinyDb = new TinyDB(getContext()); final String instanceUrl = tinyDb.getString("instanceUrl"); diff --git a/app/src/main/java/org/mian/gitnex/fragments/MyRepositoriesFragment.java b/app/src/main/java/org/mian/gitnex/fragments/MyRepositoriesFragment.java index 7bbd34b1..b23e666a 100644 --- a/app/src/main/java/org/mian/gitnex/fragments/MyRepositoriesFragment.java +++ b/app/src/main/java/org/mian/gitnex/fragments/MyRepositoriesFragment.java @@ -24,7 +24,6 @@ import android.widget.ImageView; import android.widget.ProgressBar; import android.widget.TextView; import org.mian.gitnex.R; -import org.mian.gitnex.activities.MainActivity; import org.mian.gitnex.activities.NewRepoActivity; import org.mian.gitnex.adapters.MyReposListAdapter; import org.mian.gitnex.helpers.Authorization; @@ -83,7 +82,6 @@ public class MyRepositoriesFragment extends Fragment { final View v = inflater.inflate(R.layout.fragment_my_repositories, container, false); setHasOptionsMenu(true); - ((MainActivity) Objects.requireNonNull(getActivity())).setActionBarTitle(getResources().getString(R.string.pageTitleMyRepos)); TinyDB tinyDb = new TinyDB(getContext()); final String instanceUrl = tinyDb.getString("instanceUrl"); diff --git a/app/src/main/java/org/mian/gitnex/fragments/OrganizationsFragment.java b/app/src/main/java/org/mian/gitnex/fragments/OrganizationsFragment.java index e048be77..ad359046 100644 --- a/app/src/main/java/org/mian/gitnex/fragments/OrganizationsFragment.java +++ b/app/src/main/java/org/mian/gitnex/fragments/OrganizationsFragment.java @@ -23,7 +23,6 @@ import android.widget.ImageView; import android.widget.ProgressBar; import android.widget.TextView; import org.mian.gitnex.R; -import org.mian.gitnex.activities.MainActivity; import org.mian.gitnex.activities.NewOrganizationActivity; import org.mian.gitnex.adapters.OrganizationsListAdapter; import org.mian.gitnex.helpers.Authorization; @@ -50,7 +49,6 @@ public class OrganizationsFragment extends Fragment { @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { - ((MainActivity) Objects.requireNonNull(getActivity())).setActionBarTitle(getResources().getString(R.string.pageTitleOrganizations)); final View v = inflater.inflate(R.layout.fragment_organizations, container, false); setHasOptionsMenu(true); diff --git a/app/src/main/java/org/mian/gitnex/fragments/ProfileFragment.java b/app/src/main/java/org/mian/gitnex/fragments/ProfileFragment.java index d0782fc5..8f680ec2 100644 --- a/app/src/main/java/org/mian/gitnex/fragments/ProfileFragment.java +++ b/app/src/main/java/org/mian/gitnex/fragments/ProfileFragment.java @@ -1,6 +1,7 @@ package org.mian.gitnex.fragments; import android.content.Context; +import android.graphics.Typeface; import android.os.Bundle; import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -37,7 +38,6 @@ public class ProfileFragment extends Fragment { public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View v = inflater.inflate(R.layout.fragment_profile, container, false); - ((MainActivity) Objects.requireNonNull(getActivity())).setActionBarTitle(getResources().getString(R.string.pageTitleProfile)); setHasOptionsMenu(true); TinyDB tinyDb = new TinyDB(getContext()); @@ -57,8 +57,43 @@ public class ProfileFragment extends Fragment { ViewPager mViewPager = v.findViewById(R.id.container); mViewPager.setAdapter(mSectionsPagerAdapter); + Typeface myTypeface; + if(tinyDb.getInt("customFontId") == 0) { + + myTypeface = Typeface.createFromAsset(Objects.requireNonNull(getContext()).getAssets(), "fonts/roboto.ttf"); + + } + else if (tinyDb.getInt("customFontId") == 1) { + + myTypeface = Typeface.createFromAsset(Objects.requireNonNull(getContext()).getAssets(), "fonts/manroperegular.ttf"); + + } + else if (tinyDb.getInt("customFontId") == 2) { + + myTypeface = Typeface.createFromAsset(Objects.requireNonNull(getContext()).getAssets(), "fonts/sourcecodeproregular.ttf"); + + } + else { + + myTypeface = Typeface.createFromAsset(Objects.requireNonNull(getContext()).getAssets(), "fonts/roboto.ttf"); + + } + TabLayout tabLayout = v.findViewById(R.id.tabs); + ViewGroup vg = (ViewGroup) tabLayout.getChildAt(0); + int tabsCount = vg.getChildCount(); + for (int j = 0; j < tabsCount; j++) { + ViewGroup vgTab = (ViewGroup) vg.getChildAt(j); + int tabChildCount = vgTab.getChildCount(); + for (int i = 0; i < tabChildCount; i++) { + View tabViewChild = vgTab.getChildAt(i); + if (tabViewChild instanceof TextView) { + ((TextView) tabViewChild).setTypeface(myTypeface); + } + } + } + mViewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout)); tabLayout.addOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(mViewPager)); diff --git a/app/src/main/java/org/mian/gitnex/fragments/RepositoriesFragment.java b/app/src/main/java/org/mian/gitnex/fragments/RepositoriesFragment.java index dd08884c..f6926fc6 100644 --- a/app/src/main/java/org/mian/gitnex/fragments/RepositoriesFragment.java +++ b/app/src/main/java/org/mian/gitnex/fragments/RepositoriesFragment.java @@ -22,7 +22,6 @@ import android.widget.ImageView; import android.widget.ProgressBar; import android.widget.TextView; import org.mian.gitnex.R; -import org.mian.gitnex.activities.MainActivity; import org.mian.gitnex.activities.NewRepoActivity; import org.mian.gitnex.adapters.ReposListAdapter; import org.mian.gitnex.helpers.Authorization; @@ -54,7 +53,6 @@ public class RepositoriesFragment extends Fragment { final View v = inflater.inflate(R.layout.fragment_repositories, container, false); setHasOptionsMenu(true); - ((MainActivity) Objects.requireNonNull(getActivity())).setActionBarTitle(getResources().getString(R.string.pageTitleRepositories)); TinyDB tinyDb = new TinyDB(getContext()); final String instanceUrl = tinyDb.getString("instanceUrl"); diff --git a/app/src/main/java/org/mian/gitnex/fragments/SettingsFragment.java b/app/src/main/java/org/mian/gitnex/fragments/SettingsFragment.java index 9f276981..3ea7e686 100644 --- a/app/src/main/java/org/mian/gitnex/fragments/SettingsFragment.java +++ b/app/src/main/java/org/mian/gitnex/fragments/SettingsFragment.java @@ -13,7 +13,6 @@ import android.widget.LinearLayout; import android.widget.Switch; import android.widget.TextView; import org.mian.gitnex.R; -import org.mian.gitnex.activities.MainActivity; import org.mian.gitnex.helpers.Toasty; import org.mian.gitnex.util.TinyDB; import java.util.Objects; @@ -42,11 +41,13 @@ public class SettingsFragment extends Fragment { private static String[] homeScreenList = {"My Repositories", "Starred Repositories", "Organizations", "Repositories", "Profile"}; private static int homeScreenSelectedChoice = 0; + private static String[] customFontList = {"Roboto", "Manrope", "Source Code Pro"}; + private static int customFontSelectedChoice = 0; + @Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { - ((MainActivity) Objects.requireNonNull(getActivity())).setActionBarTitle(getResources().getString(R.string.pageTitleSettings)); View v = inflater.inflate(R.layout.fragment_settings, container, false); final TinyDB tinyDb = new TinyDB(getContext()); @@ -54,11 +55,13 @@ public class SettingsFragment extends Fragment { final TextView tvDateTimeSelected = v.findViewById(R.id.tvDateTimeSelected); // setter for time final TextView codeBlockSelected = v.findViewById(R.id.codeBlockSelected); // setter for code block final TextView homeScreenSelected = v.findViewById(R.id.homeScreenSelected); // setter for home screen + final TextView customFontSelected = v.findViewById(R.id.customFontSelected); // setter for custom font LinearLayout langFrame = v.findViewById(R.id.langFrame); LinearLayout timeFrame = v.findViewById(R.id.timeFrame); LinearLayout codeBlockFrame = v.findViewById(R.id.codeBlockFrame); LinearLayout homeScreenFrame = v.findViewById(R.id.homeScreenFrame); + LinearLayout customFontFrame = v.findViewById(R.id.customFontFrame); Switch issuesSwitch = v.findViewById(R.id.switchIssuesBadge); TextView helpTranslate = v.findViewById(R.id.helpTranslate); @@ -89,6 +92,10 @@ public class SettingsFragment extends Fragment { homeScreenSelected.setText(tinyDb.getString("homeScreenStr")); } + if(!tinyDb.getString("customFontStr").isEmpty()) { + customFontSelected.setText(tinyDb.getString("customFontStr")); + } + if(langSelectedChoice == 0) { langSelectedChoice = tinyDb.getInt("langId"); } @@ -105,6 +112,10 @@ public class SettingsFragment extends Fragment { homeScreenSelectedChoice = tinyDb.getInt("homeScreenId"); } + if(customFontSelectedChoice == 0) { + customFontSelectedChoice = tinyDb.getInt("customFontId"); + } + if(tinyDb.getBoolean("enableCounterIssueBadge")) { issuesSwitch.setChecked(true); } @@ -124,6 +135,44 @@ public class SettingsFragment extends Fragment { } }); + // custom font dialog + customFontFrame.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + + AlertDialog.Builder cfBuilder = new AlertDialog.Builder(ctx, R.style.confirmDialog); + + cfBuilder.setTitle(R.string.settingsCustomFontSelectorDialogTitle); + if(customFontSelectedChoice != -1) { + cfBuilder.setCancelable(true); + } + else { + cfBuilder.setCancelable(false); + } + + cfBuilder.setSingleChoiceItems(customFontList, customFontSelectedChoice, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterfaceCustomFont, int i) { + + customFontSelectedChoice = i; + customFontSelected.setText(customFontList[i]); + tinyDb.putString("customFontStr", customFontList[i]); + tinyDb.putInt("customFontId", i); + + Objects.requireNonNull(getActivity()).recreate(); + getActivity().overridePendingTransition(0, 0); + dialogInterfaceCustomFont.dismiss(); + Toasty.info(getContext(), getResources().getString(R.string.settingsSave)); + + } + }); + + AlertDialog cfDialog = cfBuilder.create(); + cfDialog.show(); + + } + }); + // home screen dialog homeScreenFrame.setOnClickListener(new View.OnClickListener() { @Override diff --git a/app/src/main/java/org/mian/gitnex/fragments/StarredRepositoriesFragment.java b/app/src/main/java/org/mian/gitnex/fragments/StarredRepositoriesFragment.java index ab6a811e..20c793f5 100644 --- a/app/src/main/java/org/mian/gitnex/fragments/StarredRepositoriesFragment.java +++ b/app/src/main/java/org/mian/gitnex/fragments/StarredRepositoriesFragment.java @@ -24,7 +24,6 @@ import android.widget.ImageView; import android.widget.ProgressBar; import android.widget.TextView; import org.mian.gitnex.R; -import org.mian.gitnex.activities.MainActivity; import org.mian.gitnex.activities.NewRepoActivity; import org.mian.gitnex.adapters.StarredReposListAdapter; import org.mian.gitnex.helpers.Authorization; @@ -79,7 +78,6 @@ public class StarredRepositoriesFragment extends Fragment { View v = inflater.inflate(R.layout.fragment_starred_repositories, container, false); boolean connToInternet = AppUtil.haveNetworkConnection(Objects.requireNonNull(getContext())); setHasOptionsMenu(true); - ((MainActivity) Objects.requireNonNull(getActivity())).setActionBarTitle(getResources().getString(R.string.pageTitleStarredRepos)); TinyDB tinyDb = new TinyDB(getContext()); final String instanceUrl = tinyDb.getString("instanceUrl"); diff --git a/app/src/main/java/org/mian/gitnex/helpers/FontsOverride.java b/app/src/main/java/org/mian/gitnex/helpers/FontsOverride.java new file mode 100644 index 00000000..3eded525 --- /dev/null +++ b/app/src/main/java/org/mian/gitnex/helpers/FontsOverride.java @@ -0,0 +1,43 @@ +package org.mian.gitnex.helpers; + +import android.content.Context; +import android.graphics.Typeface; +import android.util.Log; +import java.lang.reflect.Field; +import java.util.Objects; + +/** + * Author M M Arif + */ + +public class FontsOverride { + + public static void setDefaultFont(Context context, + String staticTypefaceFieldName, String fontAssetName) { + + final Typeface regular = Typeface.createFromAsset(context.getAssets(), + fontAssetName); + replaceFont(staticTypefaceFieldName, regular); + + } + + private static void replaceFont(String staticTypefaceFieldName, + final Typeface newTypeface) { + + try { + + final Field staticField = Typeface.class + .getDeclaredField(staticTypefaceFieldName); + staticField.setAccessible(true); + staticField.set(null, newTypeface); + + } + catch (NoSuchFieldException | IllegalAccessException e) { + + Log.e("error", Objects.requireNonNull(e.getMessage())); + + } + + } + +} diff --git a/app/src/main/res/layout/activity_issue_detail.xml b/app/src/main/res/layout/activity_issue_detail.xml index 84515c6b..3623d9d6 100644 --- a/app/src/main/res/layout/activity_issue_detail.xml +++ b/app/src/main/res/layout/activity_issue_detail.xml @@ -19,7 +19,17 @@ android:layout_weight="1" android:background="?attr/colorPrimary" app:popupTheme="@style/AppTheme.PopupOverlay" - app:title="@string/app_name" /> + app:title="@string/app_name" > + + + + diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 5d3b6522..f31c6bde 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -13,8 +13,7 @@ + android:orientation="vertical"> + android:elevation="4dp"> + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values-v21/styles.xml b/app/src/main/res/values-v21/styles.xml index 3d46f876..5b43477f 100644 --- a/app/src/main/res/values-v21/styles.xml +++ b/app/src/main/res/values-v21/styles.xml @@ -5,8 +5,8 @@ @color/colorPrimary @color/colorPrimary @color/colorPrimary - @font/roboto @color/colorPrimary + monospace \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 87dd2484..f4fccd1b 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -244,7 +244,7 @@ Translation Date & Time - Settings saved. + Settings saved Language English Appearance @@ -497,6 +497,7 @@ - private public + Default Translate GitNex with Crowdin @@ -542,4 +543,8 @@ Pull Request was merged successfully Pull Request is not available for merge + Font + Choose Font + Roboto + diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index ae190611..b5ac6bbf 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -4,9 +4,9 @@ @color/colorPrimary @color/colorPrimaryDark @color/colorAccent - @font/roboto @style/DrawerIcon #123456 + monospace