diff --git a/AdvancedDisplay/Android.bp b/AdvancedDisplay/Android.bp index 455692a5..c2477a35 100644 --- a/AdvancedDisplay/Android.bp +++ b/AdvancedDisplay/Android.bp @@ -13,7 +13,6 @@ android_app { platform_apis: true, static_libs: [ - "org.lineageos.platform.internal", "org.lineageos.settings.resources", ], diff --git a/AdvancedDisplay/src/org/lineageos/settings/device/AdvancedDisplayFragment.java b/AdvancedDisplay/src/org/lineageos/settings/device/AdvancedDisplayFragment.java index 54468608..c7e7b70e 100644 --- a/AdvancedDisplay/src/org/lineageos/settings/device/AdvancedDisplayFragment.java +++ b/AdvancedDisplay/src/org/lineageos/settings/device/AdvancedDisplayFragment.java @@ -23,8 +23,6 @@ import androidx.preference.PreferenceFragment; import org.lineageos.settings.device.R; -import org.lineageos.internal.util.FileUtils; - public class AdvancedDisplayFragment extends PreferenceFragment { private mDNIeScenario mmDNIeScenario; private mDNIeAccessibility mmDNIeAccessibility; diff --git a/AdvancedDisplay/src/org/lineageos/settings/device/FileUtils.java b/AdvancedDisplay/src/org/lineageos/settings/device/FileUtils.java new file mode 100644 index 00000000..3bb40280 --- /dev/null +++ b/AdvancedDisplay/src/org/lineageos/settings/device/FileUtils.java @@ -0,0 +1,160 @@ +/* + * Copyright (C) 2016 The CyanogenMod Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.lineageos.settings.device; + +import android.util.Log; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; + +public final class FileUtils { + private static final String TAG = "FileUtils"; + + private FileUtils() { + // This class is not supposed to be instantiated + } + + /** + * Reads the first line of text from the given file. + * Reference {@link BufferedReader#readLine()} for clarification on what a line is + * + * @return the read line contents, or null on failure + */ + public static String readOneLine(String fileName) { + String line = null; + BufferedReader reader = null; + + try { + reader = new BufferedReader(new FileReader(fileName), 512); + line = reader.readLine(); + } catch (FileNotFoundException e) { + Log.w(TAG, "No such file " + fileName + " for reading", e); + } catch (IOException e) { + Log.e(TAG, "Could not read from file " + fileName, e); + } finally { + try { + if (reader != null) { + reader.close(); + } + } catch (IOException e) { + // Ignored, not much we can do anyway + } + } + + return line; + } + + /** + * Writes the given value into the given file + * + * @return true on success, false on failure + */ + public static boolean writeLine(String fileName, String value) { + BufferedWriter writer = null; + + try { + writer = new BufferedWriter(new FileWriter(fileName)); + writer.write(value); + } catch (FileNotFoundException e) { + Log.w(TAG, "No such file " + fileName + " for writing", e); + return false; + } catch (IOException e) { + Log.e(TAG, "Could not write to file " + fileName, e); + return false; + } finally { + try { + if (writer != null) { + writer.close(); + } + } catch (IOException e) { + // Ignored, not much we can do anyway + } + } + + return true; + } + + /** + * Checks whether the given file exists + * + * @return true if exists, false if not + */ + public static boolean fileExists(String fileName) { + final File file = new File(fileName); + return file.exists(); + } + + /** + * Checks whether the given file is readable + * + * @return true if readable, false if not + */ + public static boolean isFileReadable(String fileName) { + final File file = new File(fileName); + return file.exists() && file.canRead(); + } + + /** + * Checks whether the given file is writable + * + * @return true if writable, false if not + */ + public static boolean isFileWritable(String fileName) { + final File file = new File(fileName); + return file.exists() && file.canWrite(); + } + + /** + * Deletes an existing file + * + * @return true if the delete was successful, false if not + */ + public static boolean delete(String fileName) { + final File file = new File(fileName); + boolean ok = false; + try { + ok = file.delete(); + } catch (SecurityException e) { + Log.w(TAG, "SecurityException trying to delete " + fileName, e); + } + return ok; + } + + /** + * Renames an existing file + * + * @return true if the rename was successful, false if not + */ + public static boolean rename(String srcPath, String dstPath) { + final File srcFile = new File(srcPath); + final File dstFile = new File(dstPath); + boolean ok = false; + try { + ok = srcFile.renameTo(dstFile); + } catch (SecurityException e) { + Log.w(TAG, "SecurityException trying to rename " + srcPath + " to " + dstPath, e); + } catch (NullPointerException e) { + Log.e(TAG, "NullPointerException trying to rename " + srcPath + " to " + dstPath, e); + } + return ok; + } +} diff --git a/AdvancedDisplay/src/org/lineageos/settings/device/mDNIeAccessibility.java b/AdvancedDisplay/src/org/lineageos/settings/device/mDNIeAccessibility.java index a2849661..31fa0250 100644 --- a/AdvancedDisplay/src/org/lineageos/settings/device/mDNIeAccessibility.java +++ b/AdvancedDisplay/src/org/lineageos/settings/device/mDNIeAccessibility.java @@ -25,8 +25,6 @@ import androidx.preference.ListPreference; import androidx.preference.Preference; import androidx.preference.PreferenceManager; -import org.lineageos.internal.util.FileUtils; - public class mDNIeAccessibility extends ListPreference implements Preference.OnPreferenceChangeListener { private static String FILE = null; diff --git a/AdvancedDisplay/src/org/lineageos/settings/device/mDNIeScenario.java b/AdvancedDisplay/src/org/lineageos/settings/device/mDNIeScenario.java index 37d57927..de56a2ea 100644 --- a/AdvancedDisplay/src/org/lineageos/settings/device/mDNIeScenario.java +++ b/AdvancedDisplay/src/org/lineageos/settings/device/mDNIeScenario.java @@ -25,8 +25,6 @@ import androidx.preference.ListPreference; import androidx.preference.Preference; import androidx.preference.PreferenceManager; -import org.lineageos.internal.util.FileUtils; - public class mDNIeScenario extends ListPreference implements Preference.OnPreferenceChangeListener { private static String FILE = null; diff --git a/doze/Android.bp b/doze/Android.bp index a719893d..51322fd6 100644 --- a/doze/Android.bp +++ b/doze/Android.bp @@ -18,7 +18,6 @@ android_app { static_libs: [ "androidx.window.extensions", "androidx.window.sidecar", - "org.lineageos.platform.internal", "org.lineageos.settings.resources", ], diff --git a/doze/src/org/lineageos/settings/doze/SamsungDozeSettings.java b/doze/src/org/lineageos/settings/doze/SamsungDozeSettings.java index 0bc7fb84..b7fa21f9 100644 --- a/doze/src/org/lineageos/settings/doze/SamsungDozeSettings.java +++ b/doze/src/org/lineageos/settings/doze/SamsungDozeSettings.java @@ -29,8 +29,6 @@ import androidx.preference.SwitchPreference; import com.android.settingslib.widget.MainSwitchPreference; -import org.lineageos.internal.util.ScreenType; - public class SamsungDozeSettings extends PreferenceFragment implements OnPreferenceChangeListener, OnCheckedChangeListener { diff --git a/doze/src/org/lineageos/settings/doze/ScreenType.java b/doze/src/org/lineageos/settings/doze/ScreenType.java new file mode 100644 index 00000000..d3d58406 --- /dev/null +++ b/doze/src/org/lineageos/settings/doze/ScreenType.java @@ -0,0 +1,66 @@ +/* + * Copyright (C) 2015 The CyanogenMod Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.lineageos.settings.doze; + +import android.content.Context; +import android.util.DisplayMetrics; +import android.view.DisplayInfo; +import android.view.WindowManager; + +public class ScreenType { + // Device type reference + private static int sDeviceType = -1; + + // Device types + private static final int DEVICE_PHONE = 0; + private static final int DEVICE_HYBRID = 1; + private static final int DEVICE_TABLET = 2; + + private static int getScreenType(Context context) { + if (sDeviceType == -1) { + WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); + DisplayInfo outDisplayInfo = new DisplayInfo(); + wm.getDefaultDisplay().getDisplayInfo(outDisplayInfo); + int shortSize = Math.min(outDisplayInfo.logicalHeight, outDisplayInfo.logicalWidth); + int shortSizeDp = shortSize * DisplayMetrics.DENSITY_DEFAULT + / outDisplayInfo.logicalDensityDpi; + if (shortSizeDp < 600) { + // 0-599dp: "phone" UI with a separate status & navigation bar + sDeviceType = DEVICE_PHONE; + } else if (shortSizeDp < 720) { + // 600-719dp: "phone" UI with modifications for larger screens + sDeviceType = DEVICE_HYBRID; + } else { + // 720dp: "tablet" UI with a single combined status & navigation bar + sDeviceType = DEVICE_TABLET; + } + } + return sDeviceType; + } + + public static boolean isPhone(Context context) { + return getScreenType(context) == DEVICE_PHONE; + } + + public static boolean isHybrid(Context context) { + return getScreenType(context) == DEVICE_HYBRID; + } + + public static boolean isTablet(Context context) { + return getScreenType(context) == DEVICE_TABLET; + } +}