Skip to content

Commit 7af3b44

Browse files
committed
fragment added; navigation updated.
1 parent a2a9d3b commit 7af3b44

22 files changed

+445
-63
lines changed

.idea/.gitignore

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,4 @@ When file `token.properties` is absent, the personal access token still can be a
1111

1212
### Screenshots
1313

14-
![Repositories](screenshots/repositories_30.png?raw=true&sanitize=true "Repositories")
14+
![Repositories](screenshots/repositories_30.png?raw=true&sanitize=true "Repositories")<!-- @IGNORE PREVIOUS: link -->

mobile/src/main/java/io/syslogic/github/activity/NavHostActivity.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ public class NavHostActivity extends BaseActivity {
3131
private NavController navController;
3232

3333
/** Data Binding */
34-
@SuppressWarnings("FieldCanBeLocal")
3534
private FragmentNavHostBinding mDataBinding;
3635

3736
/**
@@ -62,7 +61,6 @@ private void setNavController() {
6261
}
6362
}
6463

65-
@SuppressWarnings("unused")
6664
public NavController getNavController() {
6765
return this.navController;
6866
}

mobile/src/main/java/io/syslogic/github/fragment/BaseFragment.java

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -98,15 +98,15 @@ public static boolean isNetworkAvailable(@Nullable Context context) {
9898
try {
9999
android.net.NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
100100
if (activeNetworkInfo != null && activeNetworkInfo.isConnected()) {
101-
Log.d("", "network available");
101+
if (mDebug) {Log.d("", "network available");}
102102
return true;
103103
}
104104
} catch (Exception e) {
105-
Log.e("", "" + e.getMessage());
105+
if (mDebug) {Log.e("", "" + e.getMessage());}
106106
}
107107
}
108108
}
109-
Log.i("update_status","Network is available : FALSE ");
109+
if (mDebug) {Log.i("update_status","Network is available : FALSE ");}
110110
return false;
111111
}
112112

@@ -134,15 +134,17 @@ private void registerBroadcastReceiver(@NonNull Context context) {
134134

135135
@Override
136136
public void onNetworkAvailable() {
137-
if (mDebug && this.getContext() != null) {
138-
Log.d(LOG_TAG, this.getContext().getResources().getString(R.string.debug_network_present));
137+
if (mDebug) {
138+
String message = requireContext().getResources().getString(R.string.debug_network_present);
139+
Log.d(LOG_TAG, message);
139140
}
140141
}
141142

142143
@Override
143144
public void onNetworkLost() {
144-
if (mDebug && this.getContext() != null) {
145-
Log.d(LOG_TAG, this.getContext().getResources().getString(R.string.debug_network_absent));
145+
if (mDebug) {
146+
String message = requireContext().getResources().getString(R.string.debug_network_absent);
147+
Log.d(LOG_TAG, message);
146148
}
147149
}
148150

@@ -223,7 +225,7 @@ public void onResponse(@NonNull Call<User> call, @NonNull Response<User> respons
223225

224226
@Override
225227
public void onFailure(@NonNull Call<User> call, @NonNull Throwable t) {
226-
// if (mDebug) {Log.e(LOG_TAG, t.getMessage());}
228+
if (mDebug) {Log.e(LOG_TAG, t.getMessage());}
227229
}
228230
});
229231
}
Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
package io.syslogic.github.fragment;
2+
3+
import android.content.Intent;
4+
import android.net.Uri;
5+
import android.os.Bundle;
6+
import android.view.LayoutInflater;
7+
import android.view.View;
8+
import android.view.ViewGroup;
9+
10+
import androidx.annotation.NonNull;
11+
import androidx.annotation.Nullable;
12+
import androidx.databinding.ViewDataBinding;
13+
14+
import io.syslogic.github.R;
15+
import io.syslogic.github.activity.NavHostActivity;
16+
import io.syslogic.github.databinding.FragmentHomeScreenBinding;
17+
import io.syslogic.github.model.User;
18+
import io.syslogic.github.network.TokenCallback;
19+
import io.syslogic.github.provider.HomeScreenMenuProvider;
20+
21+
/**
22+
* Home Screen {@link BaseFragment}
23+
*
24+
* @author Martin Zeitler
25+
*/
26+
public class HomeScreenFragment extends BaseFragment implements TokenCallback {
27+
28+
/** Log Tag */
29+
@SuppressWarnings("unused")
30+
private static final String LOG_TAG = HomeScreenFragment.class.getSimpleName();
31+
32+
@SuppressWarnings("unused")
33+
private static final int resId = R.layout.fragment_home_screen;
34+
35+
/** Data Binding */
36+
private FragmentHomeScreenBinding mDataBinding;
37+
38+
/** Constructor */
39+
public HomeScreenFragment() {}
40+
41+
@NonNull
42+
@Override
43+
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
44+
45+
/* It removes & adds {@link BaseMenuProvider} */
46+
NavHostActivity activity = ((NavHostActivity) this.requireActivity());
47+
activity.setMenuProvider(new HomeScreenMenuProvider(activity));
48+
49+
this.setDataBinding(FragmentHomeScreenBinding.inflate(inflater, container, false));
50+
activity.setSupportActionBar(this.getDataBinding().toolbarHomeScreen.toolbarHomeScreen);
51+
52+
if (! isNetworkAvailable(activity)) {
53+
this.onNetworkLost();
54+
} else {
55+
String token = this.getPersonalAccessToken();
56+
if (getCurrentUser() == null && token != null) {
57+
this.setUser(token, this);
58+
}
59+
}
60+
61+
/* Navigating to RepositoriesFragment */
62+
this.mDataBinding.buttonRepositories
63+
.setOnClickListener(view -> activity.getNavController()
64+
.navigate(R.id.action_homeScreenFragment_to_repositoriesFragment));
65+
66+
/* Navigating to WorkflowFragment */
67+
this.mDataBinding.buttonWorkflow
68+
.setOnClickListener(view -> activity.getNavController()
69+
.navigate(R.id.action_homeScreenFragment_to_workflowFragment));
70+
71+
/* Navigating to GitHub Sponsors */
72+
this.mDataBinding.textGitHubSponsors
73+
.setOnClickListener(view -> activity.startActivity(
74+
new Intent(Intent.ACTION_VIEW, Uri.parse(activity.getString(R.string.url_git_hub_sponsors)))
75+
));
76+
77+
return this.mDataBinding.getRoot();
78+
}
79+
80+
@NonNull
81+
public FragmentHomeScreenBinding getDataBinding() {
82+
return this.mDataBinding;
83+
}
84+
85+
@Override
86+
protected void setDataBinding(@NonNull ViewDataBinding binding) {
87+
this.mDataBinding = (FragmentHomeScreenBinding) binding;
88+
}
89+
90+
@Override
91+
public void onNetworkAvailable() {
92+
super.onNetworkAvailable();
93+
}
94+
95+
@Override
96+
public void onNetworkLost() {
97+
super.onNetworkLost();
98+
}
99+
100+
@Override
101+
public void onLogin(@NonNull User item) {
102+
this.mDataBinding.setUser(item);
103+
}
104+
}

mobile/src/main/java/io/syslogic/github/fragment/RepositoriesFragment.java

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,15 @@
1616

1717
import io.syslogic.github.Constants;
1818
import io.syslogic.github.R;
19-
import io.syslogic.github.activity.BaseActivity;
19+
import io.syslogic.github.activity.NavHostActivity;
2020
import io.syslogic.github.model.PagerState;
2121
import io.syslogic.github.model.QueryString;
2222
import io.syslogic.github.model.SpinnerItem;
2323
import io.syslogic.github.adapter.QueryStringAdapter;
2424
import io.syslogic.github.databinding.FragmentRepositoriesBinding;
2525
import io.syslogic.github.model.User;
2626
import io.syslogic.github.network.TokenCallback;
27-
import io.syslogic.github.provider.SettingsMenuProvider;
27+
import io.syslogic.github.provider.RepositoriesMenuProvider;
2828
import io.syslogic.github.recyclerview.RepositoriesAdapter;
2929
import io.syslogic.github.recyclerview.RepositoriesLinearView;
3030
import io.syslogic.github.recyclerview.ScrollListener;
@@ -57,15 +57,17 @@ public RepositoriesFragment() {}
5757
@Override
5858
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
5959

60-
BaseActivity activity = ((BaseActivity) this.requireActivity());
60+
NavHostActivity activity = ((NavHostActivity) this.requireActivity());
6161
this.setDataBinding(FragmentRepositoriesBinding.inflate(inflater, container, false));
6262
this.getDataBinding().setPagerState(new PagerState());
6363

6464
/* It removes & adds {@link BaseMenuProvider} */
65-
activity.setMenuProvider(new SettingsMenuProvider(activity));
65+
activity.setMenuProvider(new RepositoriesMenuProvider(activity));
6666

6767
// the SpinnerItem has the same ID as the QueryString.
68-
activity.setSupportActionBar(this.getDataBinding().toolbarRepositories.toolbarQuery);
68+
activity.setSupportActionBar(this.getDataBinding().toolbarRepositories.toolbarRepositories);
69+
this.mDataBinding.toolbarRepositories.home.setOnClickListener(view -> activity.onBackPressed());
70+
6971
AppCompatSpinner spinner = this.getDataBinding().toolbarRepositories.spinnerQueryString;
7072
spinner.setAdapter(new QueryStringAdapter(requireContext()));
7173
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@@ -127,6 +129,7 @@ public void onNothingSelected(AdapterView<?> parent) {}
127129
this.onNetworkLost();
128130
}
129131
}
132+
130133
return this.getDataBinding().getRoot();
131134
}
132135

@@ -195,6 +198,6 @@ public void onNetworkLost() {
195198

196199
@Override
197200
public void onLogin(@NonNull User item) {
198-
201+
this.mDataBinding.setUser(item);
199202
}
200203
}

mobile/src/main/java/io/syslogic/github/fragment/WorkflowFragment.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,10 @@
1313

1414
import io.syslogic.github.Constants;
1515
import io.syslogic.github.R;
16+
import io.syslogic.github.activity.NavHostActivity;
1617
import io.syslogic.github.databinding.FragmentWorkflowBinding;
1718
import io.syslogic.github.model.Workflow;
19+
import io.syslogic.github.provider.WorkflowMenuProvider;
1820

1921
/**
2022
* Workflow {@link BaseFragment}
@@ -51,7 +53,18 @@ public void onCreate(@Nullable Bundle savedInstanceState) {
5153
@NonNull
5254
@Override
5355
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
56+
57+
NavHostActivity activity = ((NavHostActivity) this.requireActivity());
5458
this.setDataBinding(FragmentWorkflowBinding.inflate(inflater, container, false));
59+
60+
/* It removes & adds {@link BaseMenuProvider} */
61+
activity.setMenuProvider(new WorkflowMenuProvider(activity));
62+
63+
// the SpinnerItem has the same ID as the QueryString.
64+
activity.setSupportActionBar(this.getDataBinding().toolbarWorkflow.toolbarWorkflow);
65+
this.mDataBinding.toolbarWorkflow.home.setOnClickListener(view -> activity.onBackPressed());
66+
67+
5568
if (! isNetworkAvailable(this.requireContext())) {
5669
this.onNetworkLost();
5770
} else {
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package io.syslogic.github.provider;
2+
3+
import android.view.Menu;
4+
import android.view.MenuInflater;
5+
import android.view.MenuItem;
6+
7+
import androidx.annotation.NonNull;
8+
import androidx.core.view.MenuHost;
9+
10+
import io.syslogic.github.R;
11+
import io.syslogic.github.activity.BaseActivity;
12+
13+
/**
14+
* Home Screen {@link BaseMenuProvider}
15+
*
16+
* @author Martin Zeitler
17+
*/
18+
public class HomeScreenMenuProvider extends BaseMenuProvider {
19+
20+
/** Constructor */
21+
public HomeScreenMenuProvider(@NonNull BaseActivity activity) {
22+
super(activity);
23+
}
24+
25+
/**
26+
* Called by the {@link MenuHost} to allow the {@link BaseMenuProvider} to inflate {@link MenuItem}s into the menu.
27+
*
28+
* @param menu the menu to inflate the new menu items into
29+
* @param inflater the inflater to be used to inflate the updated menu
30+
*/
31+
@Override
32+
public void onCreateMenu(@NonNull Menu menu, @NonNull MenuInflater inflater) {
33+
inflater.inflate(R.menu.home_screen, menu);
34+
}
35+
36+
/**
37+
* Called by the {@link MenuHost} when a {@link MenuItem} is selected from the menu.
38+
*
39+
* @param item the menu item that was selected
40+
* @return {@code true} if the given menu item is handled by this menu provider, {@code false} otherwise
41+
*/
42+
@Override
43+
public boolean onMenuItemSelected(@NonNull MenuItem item) {
44+
if (getNavController() != null) {
45+
if (item.getItemId() == R.id.menu_action_preferences) {
46+
getNavController().navigate(R.id.action_homeScreenFragment_to_preferencesFragment);
47+
return true;
48+
}
49+
}
50+
return false;
51+
}
52+
}

mobile/src/main/java/io/syslogic/github/provider/SettingsMenuProvider.java renamed to mobile/src/main/java/io/syslogic/github/provider/RepositoriesMenuProvider.java

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,14 @@
1111
import io.syslogic.github.activity.BaseActivity;
1212

1313
/**
14-
* Settings {@link BaseMenuProvider}
14+
* Repositories {@link BaseMenuProvider}
1515
*
1616
* @author Martin Zeitler
1717
*/
18-
public class SettingsMenuProvider extends BaseMenuProvider {
18+
public class RepositoriesMenuProvider extends BaseMenuProvider {
1919

2020
/** Constructor */
21-
public SettingsMenuProvider(@NonNull BaseActivity activity) {
21+
public RepositoriesMenuProvider(@NonNull BaseActivity activity) {
2222
super(activity);
2323
}
2424

@@ -30,7 +30,7 @@ public SettingsMenuProvider(@NonNull BaseActivity activity) {
3030
*/
3131
@Override
3232
public void onCreateMenu(@NonNull Menu menu, @NonNull MenuInflater inflater) {
33-
inflater.inflate(R.menu.settings, menu);
33+
inflater.inflate(R.menu.repositories, menu);
3434
}
3535

3636
/**
@@ -42,10 +42,7 @@ public void onCreateMenu(@NonNull Menu menu, @NonNull MenuInflater inflater) {
4242
@Override
4343
public boolean onMenuItemSelected(@NonNull MenuItem item) {
4444
if (getNavController() != null) {
45-
if (item.getItemId() == R.id.menu_action_preferences) {
46-
getNavController().navigate(R.id.action_repositoriesFragment_to_preferencesFragment);
47-
return true;
48-
} else if (item.getItemId() == R.id.menu_action_query_strings) {
45+
if (item.getItemId() == R.id.menu_action_query_strings) {
4946
getNavController().navigate(R.id.action_repositoriesFragment_to_queryStringsGraph);
5047
return true;
5148
}

0 commit comments

Comments
 (0)