Skip to content

Commit 1f0a36d

Browse files
committed
[Settings] Add dual pane support for "About the device"
Signed-off-by: Muntashir Al-Islam <muntashirakon@riseup.net>
1 parent 6f27e27 commit 1f0a36d

3 files changed

Lines changed: 64 additions & 23 deletions

File tree

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
// SPDX-License-Identifier: GPL-3.0-or-later
2+
3+
package io.github.muntashirakon.AppManager.settings;
4+
5+
import android.os.Build;
6+
import android.os.Bundle;
7+
import android.view.LayoutInflater;
8+
import android.view.View;
9+
import android.view.ViewGroup;
10+
import android.widget.TextView;
11+
12+
import androidx.annotation.NonNull;
13+
import androidx.annotation.Nullable;
14+
import androidx.core.widget.NestedScrollView;
15+
import androidx.fragment.app.Fragment;
16+
import androidx.lifecycle.ViewModelProvider;
17+
18+
import io.github.muntashirakon.AppManager.R;
19+
import io.github.muntashirakon.AppManager.misc.DeviceInfo2;
20+
21+
public class AboutDeviceFragment extends Fragment {
22+
private MainPreferencesViewModel mModel;
23+
private TextView mTextView;
24+
25+
@Override
26+
public void onCreate(@Nullable Bundle savedInstanceState) {
27+
super.onCreate(savedInstanceState);
28+
mModel = new ViewModelProvider(requireActivity()).get(MainPreferencesViewModel.class);
29+
}
30+
31+
@Override
32+
public void onStart() {
33+
super.onStart();
34+
requireActivity().setTitle(R.string.about_device);
35+
}
36+
37+
@Nullable
38+
@Override
39+
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
40+
NestedScrollView view = (NestedScrollView) inflater.inflate(io.github.muntashirakon.ui.R.layout.dialog_scrollable_text_view, container, false);
41+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
42+
view.setScrollIndicators(0);
43+
}
44+
ViewGroup.LayoutParams lp = view.getLayoutParams();
45+
if (lp instanceof ViewGroup.MarginLayoutParams) {
46+
ViewGroup.MarginLayoutParams mlp = (ViewGroup.MarginLayoutParams) lp;
47+
mlp.topMargin = 0;
48+
view.setLayoutParams(mlp);
49+
}
50+
view.setFitsSystemWindows(false);
51+
return view;
52+
}
53+
54+
@Override
55+
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
56+
mTextView = view.findViewById(android.R.id.content);
57+
view.findViewById(android.R.id.checkbox).setVisibility(View.GONE);
58+
mModel.getDeviceInfo().observe(getViewLifecycleOwner(), deviceInfo ->
59+
mTextView.setText(deviceInfo.toLocalizedString(requireActivity())));
60+
mModel.loadDeviceInfo(new DeviceInfo2(requireActivity()));
61+
}
62+
}

app/src/main/java/io/github/muntashirakon/AppManager/settings/MainPreferences.java

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@
33
package io.github.muntashirakon.AppManager.settings;
44

55
import android.os.Bundle;
6-
import android.view.View;
7-
import android.widget.TextView;
86

97
import androidx.annotation.NonNull;
108
import androidx.annotation.Nullable;
@@ -18,13 +16,11 @@
1816
import java.util.Map;
1917

2018
import io.github.muntashirakon.AppManager.R;
21-
import io.github.muntashirakon.AppManager.misc.DeviceInfo2;
2219
import io.github.muntashirakon.AppManager.self.life.BuildExpiryChecker;
2320
import io.github.muntashirakon.AppManager.self.life.FundingCampaignChecker;
2421
import io.github.muntashirakon.AppManager.utils.LangUtils;
2522
import io.github.muntashirakon.AppManager.utils.UIUtils;
2623
import io.github.muntashirakon.AppManager.utils.appearance.AppearanceUtils;
27-
import io.github.muntashirakon.dialog.AlertDialogBuilder;
2824
import io.github.muntashirakon.dialog.SearchableSingleChoiceDialogBuilder;
2925
import io.github.muntashirakon.preference.InfoAlertPreference;
3026
import io.github.muntashirakon.preference.WarningAlertPreference;
@@ -99,11 +95,6 @@ public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
9995
// Mode of operation
10096
mModePref = requirePreference("mode_of_operations");
10197
mModes = getResources().getStringArray(R.array.modes);
102-
// About device
103-
requirePreference("about_device").setOnPreferenceClickListener(preference -> {
104-
mModel.loadDeviceInfo(new DeviceInfo2(mActivity));
105-
return true;
106-
});
10798

10899
mModel.getOperationCompletedLiveData().observe(requireActivity(), completed -> {
109100
if (requireActivity() instanceof SettingsActivity) {
@@ -113,19 +104,6 @@ public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
113104
});
114105
}
115106

116-
@Override
117-
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
118-
super.onViewCreated(view, savedInstanceState);
119-
// Preference loaders
120-
// Device info
121-
mModel.getDeviceInfo().observe(getViewLifecycleOwner(), deviceInfo -> {
122-
View v = View.inflate(mActivity, io.github.muntashirakon.ui.R.layout.dialog_scrollable_text_view, null);
123-
((TextView) v.findViewById(android.R.id.content)).setText(deviceInfo.toLocalizedString(mActivity));
124-
v.findViewById(android.R.id.checkbox).setVisibility(View.GONE);
125-
new AlertDialogBuilder(mActivity, true).setTitle(R.string.about_device).setView(v).show();
126-
});
127-
}
128-
129107
@Override
130108
public void onStart() {
131109
super.onStart();

app/src/main/res/xml/preferences_main.xml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,8 @@
102102
app:key="about_device"
103103
app:icon="@drawable/ic_phone_android"
104104
app:title="@string/about_device"
105-
app:summary="@string/pref_about_device_msg" />
105+
app:summary="@string/pref_about_device_msg"
106+
android:fragment="io.github.muntashirakon.AppManager.settings.AboutDeviceFragment" />
106107

107108
<Preference
108109
app:key="about"

0 commit comments

Comments
 (0)