From 328ea1b130a3b6064280f6bdc37b6f5f00e881ea Mon Sep 17 00:00:00 2001 From: Arne Schwabe Date: Fri, 12 Aug 2022 14:41:22 +0200 Subject: Mark all methods in profile manager synchronized to avoid race conditions --- main/src/main/java/de/blinkt/openvpn/core/ProfileManager.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'main/src') diff --git a/main/src/main/java/de/blinkt/openvpn/core/ProfileManager.java b/main/src/main/java/de/blinkt/openvpn/core/ProfileManager.java index b46a8f10..9f5c3ab5 100644 --- a/main/src/main/java/de/blinkt/openvpn/core/ProfileManager.java +++ b/main/src/main/java/de/blinkt/openvpn/core/ProfileManager.java @@ -250,7 +250,7 @@ public class ProfileManager { editor.apply(); } - public void addProfile(VpnProfile profile) { + public synchronized void addProfile(VpnProfile profile) { profiles.put(profile.getUUID().toString(), profile); } @@ -259,7 +259,7 @@ public class ProfileManager { * profiles * @param context */ - public void refreshVPNList(Context context) + public synchronized void refreshVPNList(Context context) { SharedPreferences listpref = Preferences.getSharedPreferencesMulti(PREFS_NAME, context); Set vlist = listpref.getStringSet("vpnlist", null); @@ -283,7 +283,7 @@ public class ProfileManager { } } - private void loadVPNList(Context context) { + private synchronized void loadVPNList(Context context) { profiles = new HashMap<>(); SharedPreferences listpref = Preferences.getSharedPreferencesMulti(PREFS_NAME, context); Set vlist = listpref.getStringSet("vpnlist", null); @@ -298,7 +298,7 @@ public class ProfileManager { } } - private void loadVpnEntry(Context context, String vpnentry) { + private synchronized void loadVpnEntry(Context context, String vpnentry) { ObjectInputStream vpnfile = null; try { FileInputStream vpInput; @@ -339,7 +339,7 @@ public class ProfileManager { } } - public void removeProfile(Context context, VpnProfile profile) { + public synchronized void removeProfile(Context context, VpnProfile profile) { String vpnentry = profile.getUUID().toString(); profiles.remove(vpnentry); saveProfileList(context); -- cgit v1.2.3 From 62a4c42f42abcc202f6ccba2e5b2a2a05a259068 Mon Sep 17 00:00:00 2001 From: Arne Schwabe Date: Fri, 12 Aug 2022 15:56:41 +0200 Subject: Try to fix/workaround problems reported by Google Play console --- main/src/main/java/de/blinkt/openvpn/core/LogItem.java | 5 +++-- main/src/main/java/de/blinkt/openvpn/core/NetworkUtils.java | 4 ++++ 2 files changed, 7 insertions(+), 2 deletions(-) (limited to 'main/src') diff --git a/main/src/main/java/de/blinkt/openvpn/core/LogItem.java b/main/src/main/java/de/blinkt/openvpn/core/LogItem.java index c61cbc44..144ae7c4 100644 --- a/main/src/main/java/de/blinkt/openvpn/core/LogItem.java +++ b/main/src/main/java/de/blinkt/openvpn/core/LogItem.java @@ -18,6 +18,7 @@ import java.io.ByteArrayInputStream; import java.io.UnsupportedEncodingException; import java.nio.BufferOverflowException; import java.nio.ByteBuffer; +import java.nio.charset.StandardCharsets; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.security.cert.CertificateException; @@ -195,7 +196,7 @@ public class LogItem implements Parcelable { } private void marschalString(String str, ByteBuffer bb) throws UnsupportedEncodingException { - byte[] utf8bytes = str.getBytes("UTF-8"); + byte[] utf8bytes = str.getBytes(StandardCharsets.UTF_8); bb.putInt(utf8bytes.length); bb.put(utf8bytes); } @@ -204,7 +205,7 @@ public class LogItem implements Parcelable { int len = bb.getInt(); byte[] utf8bytes = new byte[len]; bb.get(utf8bytes); - return new String(utf8bytes, "UTF-8"); + return new String(utf8bytes, StandardCharsets.UTF_8); } diff --git a/main/src/main/java/de/blinkt/openvpn/core/NetworkUtils.java b/main/src/main/java/de/blinkt/openvpn/core/NetworkUtils.java index 00f45ed4..8b2a1b1c 100644 --- a/main/src/main/java/de/blinkt/openvpn/core/NetworkUtils.java +++ b/main/src/main/java/de/blinkt/openvpn/core/NetworkUtils.java @@ -29,6 +29,10 @@ public class NetworkUtils { NetworkCapabilities nc = conn.getNetworkCapabilities(network); + // Ignore network if it has no capabilities + if (nc == null) + continue; + // Skip VPN networks like ourselves if (nc.hasTransport(NetworkCapabilities.TRANSPORT_VPN)) continue; -- cgit v1.2.3 From c51decadcb8e9d925196c52ba670a170d69feff8 Mon Sep 17 00:00:00 2001 From: Arne Schwabe Date: Fri, 12 Aug 2022 16:29:20 +0200 Subject: Version 0.7.39 --- main/src/main/cpp/CMakeLists.txt | 1 + main/src/main/cpp/openvpn | 2 +- main/src/main/cpp/openvpn3 | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) (limited to 'main/src') diff --git a/main/src/main/cpp/CMakeLists.txt b/main/src/main/cpp/CMakeLists.txt index c0222151..37c5bd82 100644 --- a/main/src/main/cpp/CMakeLists.txt +++ b/main/src/main/cpp/CMakeLists.txt @@ -166,6 +166,7 @@ set(openvpn_srcs src/openvpn/occ.c src/openvpn/openvpn.c src/openvpn/options.c + src/openvpn/options_util.c src/openvpn/otime.c src/openvpn/packet_id.c src/openvpn/perf.c diff --git a/main/src/main/cpp/openvpn b/main/src/main/cpp/openvpn index 7e5f4107..b1ae5974 160000 --- a/main/src/main/cpp/openvpn +++ b/main/src/main/cpp/openvpn @@ -1 +1 @@ -Subproject commit 7e5f410745eeda7d08d83445429ecd70035b730b +Subproject commit b1ae59746c150da85aa93c8e0ac1e8a0e670d6ef diff --git a/main/src/main/cpp/openvpn3 b/main/src/main/cpp/openvpn3 index a6296185..2288b479 160000 --- a/main/src/main/cpp/openvpn3 +++ b/main/src/main/cpp/openvpn3 @@ -1 +1 @@ -Subproject commit a6296185ec5d6f604ed2c66a3e1c81ff99e387f9 +Subproject commit 2288b479e90adc972e2d0069394eb36e8ec3f14c -- cgit v1.2.3 From e544282169db8b8e90867bbb087133621bde35ca Mon Sep 17 00:00:00 2001 From: Arne Schwabe Date: Sun, 21 Aug 2022 17:21:46 +0200 Subject: Log exit reason on start in log This should help finding out why the process suddenly dies. --- .../blinkt/openvpn/core/ICSOpenVPNApplication.java | 1 - .../main/java/de/blinkt/openvpn/core/LogItem.java | 15 ++++++- .../de/blinkt/openvpn/core/StatusListener.java | 42 ++++++++++++++++++- .../java/de/blinkt/openvpn/core/VpnStatus.java | 49 ++++++++++++++++++---- .../de/blinkt/openvpn/core/TestLogFileHandler.java | 22 +++++++++- .../blinkt/openvpn/fragments/SendDumpFragment.java | 1 + 6 files changed, 117 insertions(+), 13 deletions(-) (limited to 'main/src') diff --git a/main/src/main/java/de/blinkt/openvpn/core/ICSOpenVPNApplication.java b/main/src/main/java/de/blinkt/openvpn/core/ICSOpenVPNApplication.java index 1df46525..271ec139 100644 --- a/main/src/main/java/de/blinkt/openvpn/core/ICSOpenVPNApplication.java +++ b/main/src/main/java/de/blinkt/openvpn/core/ICSOpenVPNApplication.java @@ -128,5 +128,4 @@ public class ICSOpenVPNApplication extends Application { mChannel.setLightColor(Color.CYAN); mNotificationManager.createNotificationChannel(mChannel); } - } diff --git a/main/src/main/java/de/blinkt/openvpn/core/LogItem.java b/main/src/main/java/de/blinkt/openvpn/core/LogItem.java index 144ae7c4..74601349 100644 --- a/main/src/main/java/de/blinkt/openvpn/core/LogItem.java +++ b/main/src/main/java/de/blinkt/openvpn/core/LogItem.java @@ -48,6 +48,14 @@ public class LogItem implements Parcelable { mArgs = args; } + public LogItem(VpnStatus.LogLevel level, int verblevel, String message, long eventLogTime) { + mMessage = message; + mLevel = level; + mVerbosityLevel = verblevel; + logtime = eventLogTime; + } + + public LogItem(VpnStatus.LogLevel level, int verblevel, String message) { mMessage = message; mLevel = level; @@ -85,8 +93,6 @@ public class LogItem implements Parcelable { other.mLevel.equals(mLevel)) && mVerbosityLevel == other.mVerbosityLevel && logtime == other.logtime; - - } public byte[] getMarschaledBytes() throws UnsupportedEncodingException, BufferOverflowException { @@ -241,6 +247,11 @@ public class LogItem implements Parcelable { mMessage = msg; } + public LogItem(VpnStatus.LogLevel loglevel, String msg, long logEventTime) { + mLevel = loglevel; + mMessage = msg; + logtime = logEventTime; + } public LogItem(VpnStatus.LogLevel loglevel, int ressourceId) { mRessourceId = ressourceId; diff --git a/main/src/main/java/de/blinkt/openvpn/core/StatusListener.java b/main/src/main/java/de/blinkt/openvpn/core/StatusListener.java index 13a88974..500cc5e7 100644 --- a/main/src/main/java/de/blinkt/openvpn/core/StatusListener.java +++ b/main/src/main/java/de/blinkt/openvpn/core/StatusListener.java @@ -5,29 +5,36 @@ package de.blinkt.openvpn.core; +import static android.app.ApplicationExitInfo.REASON_CRASH_NATIVE; + +import android.app.ActivityManager; +import android.app.ApplicationExitInfo; import android.app.PendingIntent; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.ServiceConnection; +import android.os.Build; import android.os.IBinder; import android.os.ParcelFileDescriptor; import android.os.RemoteException; import android.util.Log; + +import androidx.annotation.RequiresApi; + import de.blinkt.openvpn.BuildConfig; import de.blinkt.openvpn.core.VpnStatus.LogLevel; import java.io.DataInputStream; import java.io.File; import java.io.IOException; +import java.util.List; /** * Created by arne on 09.11.16. */ public class StatusListener implements VpnStatus.LogListener { - private File mCacheDir; - private Context mContext; private final IStatusCallbacks mCallback = new IStatusCallbacks.Stub() { @Override public void newLogItem(LogItem item) throws RemoteException { @@ -50,6 +57,7 @@ public class StatusListener implements VpnStatus.LogListener { VpnStatus.setConnectedVPNProfile(uuid); } }; + private File mCacheDir; private final ServiceConnection mConnection = new ServiceConnection() { @@ -102,6 +110,7 @@ public class StatusListener implements VpnStatus.LogListener { } }; + private Context mContext; void init(Context c) { @@ -112,6 +121,35 @@ public class StatusListener implements VpnStatus.LogListener { c.bindService(intent, mConnection, Context.BIND_AUTO_CREATE); this.mContext = c; + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) + logLatestExitReasons(c); + } + + @RequiresApi(Build.VERSION_CODES.R) + private void logLatestExitReasons(Context c) { + ActivityManager activityManager = (ActivityManager) c.getSystemService(Context.ACTIVITY_SERVICE); + List exitReasons = activityManager.getHistoricalProcessExitReasons(null, 0, 5); + ApplicationExitInfo lastguiexit = null; + ApplicationExitInfo lastserviceexit = null; + for (ApplicationExitInfo aei : exitReasons) { + if (aei.getProcessName().endsWith(":openvpn")) { + if (lastserviceexit == null || aei.getTimestamp() > lastserviceexit.getTimestamp()) + lastserviceexit = aei; + } else { + if (lastguiexit == null || aei.getTimestamp() > lastguiexit.getTimestamp()) + lastguiexit = aei; + } + } + logExitNotification(lastserviceexit, "Last exit reason reported by Android for Service Process: "); + logExitNotification(lastguiexit, "Last exit reason reported by Android for UI Process: "); + + } + + private void logExitNotification(ApplicationExitInfo aei, String s) { + if (aei != null) { + LogItem li = new LogItem(LogLevel.DEBUG, s + aei, aei.getTimestamp()); + VpnStatus.newLogItemIfUnique(li); + } } @Override diff --git a/main/src/main/java/de/blinkt/openvpn/core/VpnStatus.java b/main/src/main/java/de/blinkt/openvpn/core/VpnStatus.java index c8e69414..8130faef 100644 --- a/main/src/main/java/de/blinkt/openvpn/core/VpnStatus.java +++ b/main/src/main/java/de/blinkt/openvpn/core/VpnStatus.java @@ -14,15 +14,15 @@ import android.os.Message; import java.io.File; import java.io.PrintWriter; import java.io.StringWriter; +import java.util.Iterator; import java.util.LinkedList; +import java.util.ListIterator; import java.util.Locale; import java.util.Vector; import de.blinkt.openvpn.R; public class VpnStatus { - - private static final LinkedList logbuffer; private static Vector logListener; @@ -150,7 +150,6 @@ public class VpnStatus { VpnStatus.trafficHistory = trafficHistory; } - public enum LogLevel { INFO(2), ERROR(-2), @@ -240,7 +239,7 @@ public class VpnStatus { String nativeAPI; try { nativeAPI = NativeUtils.getNativeAPI(); - } catch (UnsatisfiedLinkError ignore) { + } catch (UnsatisfiedLinkError|NoClassDefFoundError ignore) { nativeAPI = "error"; } @@ -418,15 +417,23 @@ public class VpnStatus { } static void newLogItem(LogItem logItem) { - newLogItem(logItem, false); + newLogItem(logItem, false, false); + } + + public static void newLogItemIfUnique(LogItem li) { + newLogItem(li, false, true); } + public static void newLogItem(LogItem logItem, boolean cachedLine) + { + newLogItem(logItem, cachedLine, false); + } - synchronized static void newLogItem(LogItem logItem, boolean cachedLine) { + synchronized static void newLogItem(LogItem logItem, boolean cachedLine, boolean enforceUnique) { if (cachedLine) { logbuffer.addFirst(logItem); } else { - logbuffer.addLast(logItem); + insertLogItemByLogTime(logItem, enforceUnique); if (mLogFileHandler != null) { Message m = mLogFileHandler.obtainMessage(LogFileHandler.LOG_MESSAGE, logItem); mLogFileHandler.sendMessage(m); @@ -445,6 +452,34 @@ public class VpnStatus { } } + private static void insertLogItemByLogTime(LogItem logItem, boolean enforceUnique) { + /* Shortcut for the shortcut that it should be added at the + * end to avoid traversing the list + */ + if (!logbuffer.isEmpty() && logbuffer.getLast().getLogtime() <= logItem.getLogtime()) + { + logbuffer.addLast(logItem); + return; + } + + ListIterator itr = logbuffer.listIterator(); + long newItemLogTime = logItem.getLogtime(); + while(itr.hasNext()) { + LogItem laterLogItem = itr.next(); + if (enforceUnique && laterLogItem.equals(logItem)) + /* Identical object found, ignore new item */ + return; + + if (laterLogItem.getLogtime() > newItemLogTime) { + itr.previous(); + itr.add(logItem); + return; + } + } + /* no hasNext, add at the end */ + itr.add(logItem); + } + public static void logError(String msg) { newLogItem(new LogItem(LogLevel.ERROR, msg)); diff --git a/main/src/test/java/de/blinkt/openvpn/core/TestLogFileHandler.java b/main/src/test/java/de/blinkt/openvpn/core/TestLogFileHandler.java index b32e5efa..e024bf90 100644 --- a/main/src/test/java/de/blinkt/openvpn/core/TestLogFileHandler.java +++ b/main/src/test/java/de/blinkt/openvpn/core/TestLogFileHandler.java @@ -80,6 +80,27 @@ public class TestLogFileHandler { Assert.assertEquals(li, li2); } + @Test + public void testLogInsertByTime() + { + VpnStatus vpnStatus = new VpnStatus(); + /* Add the generic information message */ + VpnStatus.clearLog(); + + long[] testTimes = {1000, 20000, 1500, 500, 6000, 70000, System.currentTimeMillis()+5000}; + for (long time: testTimes) { + LogItem li = new LogItem(VpnStatus.LogLevel.INFO, "unit test", time); + VpnStatus.newLogItemIfUnique(li); + } + + long lastlogTime = 0; + for(LogItem li:VpnStatus.getlogbuffer()) + { + org.junit.Assert.assertTrue(li.getLogtime() >= lastlogTime); + lastlogTime = li.getLogtime(); + } + } + private void testEquals(LogItem li, LogItem li2) { Assert.assertEquals(li.getLogLevel(), li2.getLogLevel()); @@ -120,5 +141,4 @@ public class TestLogFileHandler { } } - } \ No newline at end of file diff --git a/main/src/ui/java/de/blinkt/openvpn/fragments/SendDumpFragment.java b/main/src/ui/java/de/blinkt/openvpn/fragments/SendDumpFragment.java index 5bc0bbb1..6d4d2968 100644 --- a/main/src/ui/java/de/blinkt/openvpn/fragments/SendDumpFragment.java +++ b/main/src/ui/java/de/blinkt/openvpn/fragments/SendDumpFragment.java @@ -104,6 +104,7 @@ public class SendDumpFragment extends Fragment { Pair ldump = getLastestDump(getActivity()); if (ldump == null) { VpnStatus.logError("No Minidump found!"); + return; } uris.add(Uri.parse("content://de.blinkt.openvpn.FileProvider/" + ldump.first.getName())); -- cgit v1.2.3 From 017b3f39c2368a41012c0c6a1f000858b305b1d3 Mon Sep 17 00:00:00 2001 From: Arne Schwabe Date: Sun, 21 Aug 2022 20:08:44 +0200 Subject: Implement querying for notification permission (API 33) --- main/src/main/AndroidManifest.xml | 1 + .../blinkt/openvpn/fragments/VPNProfileList.java | 22 +++++ main/src/ui/res/drawable/notifications.xml | 10 +++ main/src/ui/res/layout/vpn_profile_list.xml | 97 ++++++++++++---------- 4 files changed, 87 insertions(+), 43 deletions(-) create mode 100644 main/src/ui/res/drawable/notifications.xml (limited to 'main/src') diff --git a/main/src/main/AndroidManifest.xml b/main/src/main/AndroidManifest.xml index 61d96c4b..eb0c0d4f 100644 --- a/main/src/main/AndroidManifest.xml +++ b/main/src/main/AndroidManifest.xml @@ -8,6 +8,7 @@ + diff --git a/main/src/ui/java/de/blinkt/openvpn/fragments/VPNProfileList.java b/main/src/ui/java/de/blinkt/openvpn/fragments/VPNProfileList.java index c7ee5df1..e833e81f 100644 --- a/main/src/ui/java/de/blinkt/openvpn/fragments/VPNProfileList.java +++ b/main/src/ui/java/de/blinkt/openvpn/fragments/VPNProfileList.java @@ -5,12 +5,14 @@ package de.blinkt.openvpn.fragments; +import android.Manifest; import android.annotation.TargetApi; import android.app.Activity; import android.app.AlertDialog; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; +import android.content.pm.PackageManager; import android.content.pm.ShortcutInfo; import android.content.pm.ShortcutManager; import android.graphics.drawable.Drawable; @@ -20,6 +22,7 @@ import android.os.Build; import android.os.Bundle; import android.os.PersistableBundle; +import androidx.activity.result.contract.ActivityResultContracts; import androidx.annotation.NonNull; import androidx.annotation.RequiresApi; import androidx.fragment.app.ListFragment; @@ -76,6 +79,7 @@ public class VPNProfileList extends ListFragment implements OnClickListener, Vpn private static final int SELECT_PROFILE = 43; private static final int IMPORT_PROFILE = 231; private static final int FILE_PICKER_RESULT_KITKAT = 392; + private static final int RESULT_PERMISSION = 395; private static final int MENU_IMPORT_PROFILE = Menu.FIRST + 1; private static final int MENU_CHANGE_SORTING = Menu.FIRST + 2; private static final int MENU_IMPORT_AS = Menu.FIRST + 3; @@ -85,6 +89,7 @@ public class VPNProfileList extends ListFragment implements OnClickListener, Vpn private ArrayAdapter mArrayadapter; private Intent mLastIntent; private VpnProfile defaultVPN; + private View mPermissionView; @Override public void updateState(String state, String logmessage, final int localizedResId, ConnectionStatus level, Intent intent) { @@ -278,10 +283,24 @@ public class VPNProfileList extends ListFragment implements OnClickListener, Vpn if (fab_import != null) fab_import.setOnClickListener(this); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) + checkForNotificationPermission(v); + + return v; } + private void checkForNotificationPermission(View v) { + mPermissionView = v.findViewById(R.id.notification_permission); + boolean permissionGranted = (requireActivity().checkSelfPermission(Manifest.permission.POST_NOTIFICATIONS) == PackageManager.PERMISSION_GRANTED); + mPermissionView.setVisibility(permissionGranted ? View.GONE : View.VISIBLE); + + mPermissionView.setOnClickListener((view) -> { + requireActivity().requestPermissions(new String[]{Manifest.permission.POST_NOTIFICATIONS}, RESULT_PERMISSION); + }); + } + private void setListAdapter() { if (mArrayadapter == null) { mArrayadapter = new VPNArrayAdapter(getActivity(), R.layout.vpn_list_item, R.id.vpn_item_title); @@ -483,9 +502,12 @@ public class VPNProfileList extends ListFragment implements OnClickListener, Vpn VpnProfile profile = ProfileManager.get(getActivity(), profileUUID); if (profile != null) onAddOrDuplicateProfile(profile); + } else if (resultCode == RESULT_PERMISSION) { + checkForNotificationPermission(requireView()); } + if (resultCode != Activity.RESULT_OK) return; diff --git a/main/src/ui/res/drawable/notifications.xml b/main/src/ui/res/drawable/notifications.xml new file mode 100644 index 00000000..b9d27eb7 --- /dev/null +++ b/main/src/ui/res/drawable/notifications.xml @@ -0,0 +1,10 @@ + + + diff --git a/main/src/ui/res/layout/vpn_profile_list.xml b/main/src/ui/res/layout/vpn_profile_list.xml index f85222b6..7dd2eb36 100644 --- a/main/src/ui/res/layout/vpn_profile_list.xml +++ b/main/src/ui/res/layout/vpn_profile_list.xml @@ -3,77 +3,88 @@ ~ Distributed under the GNU GPL v2 with additional terms. For full terms see the file doc/LICENSE.txt --> + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="match_parent" + android:layout_height="match_parent"> + android:layout_width="match_parent" + android:layout_height="match_parent" + android:orientation="vertical" + android:paddingLeft="@dimen/stdpadding" + android:paddingRight="@dimen/stdpadding"> + + + android:id="@android:id/list" + android:layout_width="fill_parent" + android:layout_height="fill_parent" + android:descendantFocusability="afterDescendants" /> + android:id="@android:id/empty" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:gravity="center" + android:orientation="vertical"> + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:text="@string/no_vpn_profiles_defined" + android:textAppearance="?android:attr/textAppearanceLarge" /> + android:layout_width="match_parent" + android:layout_height="12sp" /> + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:autoLink="web" + android:text="@string/openvpn_is_no_free_vpn" /> + android:layout_width="match_parent" + android:layout_height="12sp" /> + android:id="@+id/add_new_vpn_hint" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + tools:ignore="SelectableText" /> + android:id="@+id/import_vpn_hint" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + tools:ignore="SelectableText" /> + android:layout_width="match_parent" + android:layout_height="12sp" /> + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:text="@string/faq_hint" /> - + -- cgit v1.2.3 From ffa1cca8544a224eef7fb89dc8dd3bef9ecc8e5c Mon Sep 17 00:00:00 2001 From: Arne Schwabe Date: Sun, 21 Aug 2022 20:49:07 +0200 Subject: Replace system standard bitmap drawables with vector drawables --- .../src/main/res/drawable-hdpi/ic_menu_archive.png | Bin 1094 -> 0 bytes .../res/drawable-hdpi/ic_menu_copy_holo_light.png | Bin 199 -> 0 bytes main/src/main/res/drawable-hdpi/ic_menu_log.png | Bin 2891 -> 0 bytes .../main/res/drawable-hdpi/vpn_item_settings.png | Bin 773 -> 0 bytes .../src/main/res/drawable-mdpi/ic_menu_archive.png | Bin 831 -> 0 bytes .../res/drawable-mdpi/ic_menu_copy_holo_light.png | Bin 161 -> 0 bytes main/src/main/res/drawable-mdpi/ic_menu_log.png | Bin 2860 -> 0 bytes .../main/res/drawable-mdpi/vpn_item_settings.png | Bin 653 -> 0 bytes .../main/res/drawable-xhdpi/ic_menu_archive.png | Bin 1398 -> 0 bytes .../res/drawable-xhdpi/ic_menu_copy_holo_light.png | Bin 252 -> 0 bytes main/src/main/res/drawable-xhdpi/ic_menu_log.png | Bin 2927 -> 0 bytes .../main/res/drawable-xhdpi/vpn_item_settings.png | Bin 956 -> 0 bytes .../drawable-xxhdpi/ic_menu_copy_holo_light.png | Bin 1279 -> 0 bytes main/src/main/res/drawable-xxhdpi/ic_menu_log.png | Bin 3069 -> 0 bytes .../drawable/ic_baseline_add_circle_outline_24.xml | 10 ++++++++ .../main/res/drawable/ic_baseline_archive_24.xml | 10 ++++++++ .../src/main/res/drawable/ic_baseline_check_24.xml | 10 ++++++++ .../src/main/res/drawable/ic_baseline_close_24.xml | 10 ++++++++ .../main/res/drawable/ic_baseline_delete_24.xml | 15 +++++++++++ .../res/drawable/ic_baseline_delete_outline_24.xml | 10 ++++++++ main/src/main/res/drawable/ic_baseline_edit_24.xml | 5 ++++ .../main/res/drawable/ic_baseline_file_copy_24.xml | 10 ++++++++ .../res/drawable/ic_baseline_file_present_24.xml | 10 ++++++++ .../res/drawable/ic_baseline_filter_list_24.xml | 10 ++++++++ .../main/res/drawable/ic_baseline_folder_24.xml | 10 ++++++++ .../src/main/res/drawable/ic_baseline_pause_24.xml | 10 ++++++++ .../res/drawable/ic_baseline_play_arrow_24.xml | 10 ++++++++ .../res/drawable/ic_baseline_receipt_long_24.xml | 14 +++++++++++ .../main/res/drawable/ic_baseline_search_24.xml | 10 ++++++++ .../src/main/res/drawable/ic_baseline_share_24.xml | 15 +++++++++++ main/src/main/res/drawable/ic_baseline_sort_24.xml | 10 ++++++++ .../main/res/drawable/ic_baseline_warning_24.xml | 10 ++++++++ main/src/main/res/drawable/ic_edit.xml | 10 ++++++++ main/src/main/res/values/attrs.xml | 3 ++- main/src/main/res/values/refs.xml | 27 ++++++++++++++++++++ main/src/skeleton/res/values/attrs.xml | 5 ++++ main/src/skeleton/res/values/refs.xml | 27 -------------------- main/src/skeleton/res/values/styles.xml | 1 - .../openvpn/fragments/FileSelectionFragment.java | 8 +++--- .../ic_add_circle_outline_grey600_24dp.png | Bin 624 -> 0 bytes .../ic_add_circle_outline_white_24dp.png | Bin 606 -> 0 bytes .../res/drawable-hdpi/ic_archive_grey600_24dp.png | Bin 353 -> 0 bytes .../ui/res/drawable-hdpi/ic_archive_white_24dp.png | Bin 347 -> 0 bytes .../ui/res/drawable-hdpi/ic_check_white_24dp.png | Bin 309 -> 0 bytes .../ui/res/drawable-hdpi/ic_close_white_24dp.png | Bin 221 -> 0 bytes .../drawable-hdpi/ic_content_copy_white_24dp.png | Bin 287 -> 0 bytes .../res/drawable-hdpi/ic_delete_grey600_24dp.png | Bin 248 -> 0 bytes .../ui/res/drawable-hdpi/ic_delete_white_24dp.png | Bin 246 -> 0 bytes .../src/ui/res/drawable-hdpi/ic_doc_generic_am.png | Bin 694 -> 0 bytes .../ui/res/drawable-hdpi/ic_edit_grey600_24dp.png | Bin 341 -> 0 bytes .../ui/res/drawable-hdpi/ic_edit_white_24dp.png | Bin 339 -> 0 bytes .../drawable-hdpi/ic_filter_list_white_24dp.png | Bin 206 -> 0 bytes .../res/drawable-hdpi/ic_menu_copy_holo_dark.png | Bin 186 -> 0 bytes .../ui/res/drawable-hdpi/ic_pause_white_24dp.png | Bin 105 -> 0 bytes .../res/drawable-hdpi/ic_play_arrow_white_24dp.png | Bin 195 -> 0 bytes .../ui/res/drawable-hdpi/ic_receipt_white_24dp.png | Bin 261 -> 0 bytes .../src/ui/res/drawable-hdpi/ic_root_folder_am.png | Bin 508 -> 0 bytes .../ui/res/drawable-hdpi/ic_search_white_24dp.png | Bin 396 -> 0 bytes .../ui/res/drawable-hdpi/ic_share_white_24dp.png | Bin 506 -> 0 bytes .../ui/res/drawable-hdpi/ic_sort_white_24dp.png | Bin 115 -> 0 bytes .../ui/res/drawable-hdpi/ic_warning_black_36dp.png | Bin 549 -> 0 bytes .../ic_add_circle_outline_grey600_24dp.png | Bin 427 -> 0 bytes .../ic_add_circle_outline_white_24dp.png | Bin 409 -> 0 bytes .../res/drawable-mdpi/ic_archive_grey600_24dp.png | Bin 266 -> 0 bytes .../ui/res/drawable-mdpi/ic_archive_white_24dp.png | Bin 264 -> 0 bytes .../ui/res/drawable-mdpi/ic_check_white_24dp.png | Bin 243 -> 0 bytes .../ui/res/drawable-mdpi/ic_close_white_24dp.png | Bin 175 -> 0 bytes .../drawable-mdpi/ic_content_copy_white_24dp.png | Bin 216 -> 0 bytes .../res/drawable-mdpi/ic_delete_grey600_24dp.png | Bin 199 -> 0 bytes .../ui/res/drawable-mdpi/ic_delete_white_24dp.png | Bin 197 -> 0 bytes .../src/ui/res/drawable-mdpi/ic_doc_generic_am.png | Bin 561 -> 0 bytes .../ui/res/drawable-mdpi/ic_edit_grey600_24dp.png | Bin 276 -> 0 bytes .../ui/res/drawable-mdpi/ic_edit_white_24dp.png | Bin 272 -> 0 bytes .../drawable-mdpi/ic_filter_list_white_24dp.png | Bin 181 -> 0 bytes .../res/drawable-mdpi/ic_menu_copy_holo_dark.png | Bin 162 -> 0 bytes .../ui/res/drawable-mdpi/ic_pause_white_24dp.png | Bin 83 -> 0 bytes .../res/drawable-mdpi/ic_play_arrow_white_24dp.png | Bin 157 -> 0 bytes .../ui/res/drawable-mdpi/ic_receipt_white_24dp.png | Bin 194 -> 0 bytes .../src/ui/res/drawable-mdpi/ic_root_folder_am.png | Bin 442 -> 0 bytes .../ui/res/drawable-mdpi/ic_search_white_24dp.png | Bin 247 -> 0 bytes .../ui/res/drawable-mdpi/ic_share_white_24dp.png | Bin 361 -> 0 bytes .../ui/res/drawable-mdpi/ic_sort_white_24dp.png | Bin 90 -> 0 bytes .../ui/res/drawable-mdpi/ic_warning_black_36dp.png | Bin 432 -> 0 bytes .../ic_add_circle_outline_grey600_24dp.png | Bin 781 -> 0 bytes .../ic_add_circle_outline_white_24dp.png | Bin 775 -> 0 bytes .../res/drawable-xhdpi/ic_archive_grey600_24dp.png | Bin 372 -> 0 bytes .../res/drawable-xhdpi/ic_archive_white_24dp.png | Bin 362 -> 0 bytes .../ui/res/drawable-xhdpi/ic_check_white_24dp.png | Bin 363 -> 0 bytes .../ui/res/drawable-xhdpi/ic_close_white_24dp.png | Bin 257 -> 0 bytes .../drawable-xhdpi/ic_content_copy_white_24dp.png | Bin 330 -> 0 bytes .../res/drawable-xhdpi/ic_delete_grey600_24dp.png | Bin 271 -> 0 bytes .../ui/res/drawable-xhdpi/ic_delete_white_24dp.png | Bin 270 -> 0 bytes .../ui/res/drawable-xhdpi/ic_doc_generic_am.png | Bin 831 -> 0 bytes .../ui/res/drawable-xhdpi/ic_edit_grey600_24dp.png | Bin 379 -> 0 bytes .../ui/res/drawable-xhdpi/ic_edit_white_24dp.png | Bin 378 -> 0 bytes .../drawable-xhdpi/ic_filter_list_white_24dp.png | Bin 200 -> 0 bytes .../res/drawable-xhdpi/ic_menu_copy_holo_dark.png | Bin 261 -> 0 bytes .../ui/res/drawable-xhdpi/ic_pause_white_24dp.png | Bin 90 -> 0 bytes .../drawable-xhdpi/ic_play_arrow_white_24dp.png | Bin 220 -> 0 bytes .../res/drawable-xhdpi/ic_receipt_white_24dp.png | Bin 240 -> 0 bytes .../ui/res/drawable-xhdpi/ic_root_folder_am.png | Bin 582 -> 0 bytes .../ui/res/drawable-xhdpi/ic_search_white_24dp.png | Bin 465 -> 0 bytes .../ui/res/drawable-xhdpi/ic_share_white_24dp.png | Bin 625 -> 0 bytes .../ui/res/drawable-xhdpi/ic_sort_white_24dp.png | Bin 101 -> 0 bytes .../res/drawable-xhdpi/ic_warning_black_36dp.png | Bin 655 -> 0 bytes .../ic_add_circle_outline_grey600_24dp.png | Bin 1106 -> 0 bytes .../ic_add_circle_outline_white_24dp.png | Bin 1097 -> 0 bytes .../drawable-xxhdpi/ic_archive_grey600_24dp.png | Bin 529 -> 0 bytes .../res/drawable-xxhdpi/ic_archive_white_24dp.png | Bin 520 -> 0 bytes .../ui/res/drawable-xxhdpi/ic_check_white_24dp.png | Bin 460 -> 0 bytes .../ui/res/drawable-xxhdpi/ic_close_white_24dp.png | Bin 347 -> 0 bytes .../drawable-xxhdpi/ic_content_copy_white_24dp.png | Bin 436 -> 0 bytes .../res/drawable-xxhdpi/ic_delete_grey600_24dp.png | Bin 341 -> 0 bytes .../res/drawable-xxhdpi/ic_delete_white_24dp.png | Bin 338 -> 0 bytes .../ui/res/drawable-xxhdpi/ic_doc_generic_am.png | Bin 585 -> 0 bytes .../res/drawable-xxhdpi/ic_edit_grey600_24dp.png | Bin 493 -> 0 bytes .../ui/res/drawable-xxhdpi/ic_edit_white_24dp.png | Bin 490 -> 0 bytes .../drawable-xxhdpi/ic_filter_list_white_24dp.png | Bin 223 -> 0 bytes .../res/drawable-xxhdpi/ic_menu_copy_holo_dark.png | Bin 1272 -> 0 bytes .../ui/res/drawable-xxhdpi/ic_pause_white_24dp.png | Bin 92 -> 0 bytes .../drawable-xxhdpi/ic_play_arrow_white_24dp.png | Bin 283 -> 0 bytes .../res/drawable-xxhdpi/ic_receipt_white_24dp.png | Bin 292 -> 0 bytes .../ui/res/drawable-xxhdpi/ic_root_folder_am.png | Bin 1263 -> 0 bytes .../res/drawable-xxhdpi/ic_search_white_24dp.png | Bin 728 -> 0 bytes .../ui/res/drawable-xxhdpi/ic_share_white_24dp.png | Bin 857 -> 0 bytes .../ui/res/drawable-xxhdpi/ic_sort_white_24dp.png | Bin 103 -> 0 bytes .../res/drawable-xxhdpi/ic_warning_black_36dp.png | Bin 873 -> 0 bytes .../ic_add_circle_outline_grey600_24dp.png | Bin 1508 -> 0 bytes .../ic_add_circle_outline_white_24dp.png | Bin 1634 -> 0 bytes .../drawable-xxxhdpi/ic_archive_grey600_24dp.png | Bin 773 -> 0 bytes .../res/drawable-xxxhdpi/ic_archive_white_24dp.png | Bin 763 -> 0 bytes .../res/drawable-xxxhdpi/ic_check_white_24dp.png | Bin 587 -> 0 bytes .../res/drawable-xxxhdpi/ic_close_white_24dp.png | Bin 436 -> 0 bytes .../ic_content_copy_white_24dp.png | Bin 522 -> 0 bytes .../drawable-xxxhdpi/ic_delete_grey600_24dp.png | Bin 402 -> 0 bytes .../res/drawable-xxxhdpi/ic_delete_white_24dp.png | Bin 397 -> 0 bytes .../res/drawable-xxxhdpi/ic_edit_grey600_24dp.png | Bin 639 -> 0 bytes .../ui/res/drawable-xxxhdpi/ic_edit_white_24dp.png | Bin 632 -> 0 bytes .../drawable-xxxhdpi/ic_filter_list_white_24dp.png | Bin 254 -> 0 bytes .../res/drawable-xxxhdpi/ic_pause_white_24dp.png | Bin 94 -> 0 bytes .../drawable-xxxhdpi/ic_play_arrow_white_24dp.png | Bin 343 -> 0 bytes .../res/drawable-xxxhdpi/ic_receipt_white_24dp.png | Bin 334 -> 0 bytes .../res/drawable-xxxhdpi/ic_search_white_24dp.png | Bin 915 -> 0 bytes .../res/drawable-xxxhdpi/ic_share_white_24dp.png | Bin 1115 -> 0 bytes .../ui/res/drawable-xxxhdpi/ic_sort_white_24dp.png | Bin 107 -> 0 bytes .../res/drawable-xxxhdpi/ic_warning_black_36dp.png | Bin 1033 -> 0 bytes main/src/ui/res/drawable/ic_warning.xml | 28 +++++++++++++++++++++ main/src/ui/res/layout-v21/profile_list_fabs.xml | 2 +- main/src/ui/res/layout/vpn_list_item.xml | 2 +- main/src/ui/res/menu/allowed_apps.xml | 2 +- main/src/ui/res/values/refs.xml | 27 -------------------- 151 files changed, 268 insertions(+), 63 deletions(-) delete mode 100644 main/src/main/res/drawable-hdpi/ic_menu_archive.png delete mode 100644 main/src/main/res/drawable-hdpi/ic_menu_copy_holo_light.png delete mode 100644 main/src/main/res/drawable-hdpi/ic_menu_log.png delete mode 100644 main/src/main/res/drawable-hdpi/vpn_item_settings.png delete mode 100644 main/src/main/res/drawable-mdpi/ic_menu_archive.png delete mode 100644 main/src/main/res/drawable-mdpi/ic_menu_copy_holo_light.png delete mode 100644 main/src/main/res/drawable-mdpi/ic_menu_log.png delete mode 100644 main/src/main/res/drawable-mdpi/vpn_item_settings.png delete mode 100644 main/src/main/res/drawable-xhdpi/ic_menu_archive.png delete mode 100644 main/src/main/res/drawable-xhdpi/ic_menu_copy_holo_light.png delete mode 100644 main/src/main/res/drawable-xhdpi/ic_menu_log.png delete mode 100644 main/src/main/res/drawable-xhdpi/vpn_item_settings.png delete mode 100644 main/src/main/res/drawable-xxhdpi/ic_menu_copy_holo_light.png delete mode 100644 main/src/main/res/drawable-xxhdpi/ic_menu_log.png create mode 100644 main/src/main/res/drawable/ic_baseline_add_circle_outline_24.xml create mode 100644 main/src/main/res/drawable/ic_baseline_archive_24.xml create mode 100644 main/src/main/res/drawable/ic_baseline_check_24.xml create mode 100644 main/src/main/res/drawable/ic_baseline_close_24.xml create mode 100644 main/src/main/res/drawable/ic_baseline_delete_24.xml create mode 100644 main/src/main/res/drawable/ic_baseline_delete_outline_24.xml create mode 100644 main/src/main/res/drawable/ic_baseline_edit_24.xml create mode 100644 main/src/main/res/drawable/ic_baseline_file_copy_24.xml create mode 100644 main/src/main/res/drawable/ic_baseline_file_present_24.xml create mode 100644 main/src/main/res/drawable/ic_baseline_filter_list_24.xml create mode 100644 main/src/main/res/drawable/ic_baseline_folder_24.xml create mode 100644 main/src/main/res/drawable/ic_baseline_pause_24.xml create mode 100644 main/src/main/res/drawable/ic_baseline_play_arrow_24.xml create mode 100644 main/src/main/res/drawable/ic_baseline_receipt_long_24.xml create mode 100644 main/src/main/res/drawable/ic_baseline_search_24.xml create mode 100644 main/src/main/res/drawable/ic_baseline_share_24.xml create mode 100644 main/src/main/res/drawable/ic_baseline_sort_24.xml create mode 100644 main/src/main/res/drawable/ic_baseline_warning_24.xml create mode 100644 main/src/main/res/drawable/ic_edit.xml create mode 100644 main/src/main/res/values/refs.xml create mode 100644 main/src/skeleton/res/values/attrs.xml delete mode 100644 main/src/skeleton/res/values/refs.xml delete mode 100644 main/src/ui/res/drawable-hdpi/ic_add_circle_outline_grey600_24dp.png delete mode 100644 main/src/ui/res/drawable-hdpi/ic_add_circle_outline_white_24dp.png delete mode 100644 main/src/ui/res/drawable-hdpi/ic_archive_grey600_24dp.png delete mode 100644 main/src/ui/res/drawable-hdpi/ic_archive_white_24dp.png delete mode 100644 main/src/ui/res/drawable-hdpi/ic_check_white_24dp.png delete mode 100644 main/src/ui/res/drawable-hdpi/ic_close_white_24dp.png delete mode 100644 main/src/ui/res/drawable-hdpi/ic_content_copy_white_24dp.png delete mode 100644 main/src/ui/res/drawable-hdpi/ic_delete_grey600_24dp.png delete mode 100644 main/src/ui/res/drawable-hdpi/ic_delete_white_24dp.png delete mode 100644 main/src/ui/res/drawable-hdpi/ic_doc_generic_am.png delete mode 100644 main/src/ui/res/drawable-hdpi/ic_edit_grey600_24dp.png delete mode 100644 main/src/ui/res/drawable-hdpi/ic_edit_white_24dp.png delete mode 100644 main/src/ui/res/drawable-hdpi/ic_filter_list_white_24dp.png delete mode 100644 main/src/ui/res/drawable-hdpi/ic_menu_copy_holo_dark.png delete mode 100644 main/src/ui/res/drawable-hdpi/ic_pause_white_24dp.png delete mode 100644 main/src/ui/res/drawable-hdpi/ic_play_arrow_white_24dp.png delete mode 100644 main/src/ui/res/drawable-hdpi/ic_receipt_white_24dp.png delete mode 100644 main/src/ui/res/drawable-hdpi/ic_root_folder_am.png delete mode 100755 main/src/ui/res/drawable-hdpi/ic_search_white_24dp.png delete mode 100644 main/src/ui/res/drawable-hdpi/ic_share_white_24dp.png delete mode 100644 main/src/ui/res/drawable-hdpi/ic_sort_white_24dp.png delete mode 100644 main/src/ui/res/drawable-hdpi/ic_warning_black_36dp.png delete mode 100644 main/src/ui/res/drawable-mdpi/ic_add_circle_outline_grey600_24dp.png delete mode 100644 main/src/ui/res/drawable-mdpi/ic_add_circle_outline_white_24dp.png delete mode 100644 main/src/ui/res/drawable-mdpi/ic_archive_grey600_24dp.png delete mode 100644 main/src/ui/res/drawable-mdpi/ic_archive_white_24dp.png delete mode 100644 main/src/ui/res/drawable-mdpi/ic_check_white_24dp.png delete mode 100644 main/src/ui/res/drawable-mdpi/ic_close_white_24dp.png delete mode 100644 main/src/ui/res/drawable-mdpi/ic_content_copy_white_24dp.png delete mode 100644 main/src/ui/res/drawable-mdpi/ic_delete_grey600_24dp.png delete mode 100644 main/src/ui/res/drawable-mdpi/ic_delete_white_24dp.png delete mode 100644 main/src/ui/res/drawable-mdpi/ic_doc_generic_am.png delete mode 100644 main/src/ui/res/drawable-mdpi/ic_edit_grey600_24dp.png delete mode 100644 main/src/ui/res/drawable-mdpi/ic_edit_white_24dp.png delete mode 100644 main/src/ui/res/drawable-mdpi/ic_filter_list_white_24dp.png delete mode 100644 main/src/ui/res/drawable-mdpi/ic_menu_copy_holo_dark.png delete mode 100644 main/src/ui/res/drawable-mdpi/ic_pause_white_24dp.png delete mode 100644 main/src/ui/res/drawable-mdpi/ic_play_arrow_white_24dp.png delete mode 100644 main/src/ui/res/drawable-mdpi/ic_receipt_white_24dp.png delete mode 100644 main/src/ui/res/drawable-mdpi/ic_root_folder_am.png delete mode 100755 main/src/ui/res/drawable-mdpi/ic_search_white_24dp.png delete mode 100644 main/src/ui/res/drawable-mdpi/ic_share_white_24dp.png delete mode 100644 main/src/ui/res/drawable-mdpi/ic_sort_white_24dp.png delete mode 100644 main/src/ui/res/drawable-mdpi/ic_warning_black_36dp.png delete mode 100644 main/src/ui/res/drawable-xhdpi/ic_add_circle_outline_grey600_24dp.png delete mode 100644 main/src/ui/res/drawable-xhdpi/ic_add_circle_outline_white_24dp.png delete mode 100644 main/src/ui/res/drawable-xhdpi/ic_archive_grey600_24dp.png delete mode 100644 main/src/ui/res/drawable-xhdpi/ic_archive_white_24dp.png delete mode 100644 main/src/ui/res/drawable-xhdpi/ic_check_white_24dp.png delete mode 100644 main/src/ui/res/drawable-xhdpi/ic_close_white_24dp.png delete mode 100644 main/src/ui/res/drawable-xhdpi/ic_content_copy_white_24dp.png delete mode 100644 main/src/ui/res/drawable-xhdpi/ic_delete_grey600_24dp.png delete mode 100644 main/src/ui/res/drawable-xhdpi/ic_delete_white_24dp.png delete mode 100644 main/src/ui/res/drawable-xhdpi/ic_doc_generic_am.png delete mode 100644 main/src/ui/res/drawable-xhdpi/ic_edit_grey600_24dp.png delete mode 100644 main/src/ui/res/drawable-xhdpi/ic_edit_white_24dp.png delete mode 100644 main/src/ui/res/drawable-xhdpi/ic_filter_list_white_24dp.png delete mode 100644 main/src/ui/res/drawable-xhdpi/ic_menu_copy_holo_dark.png delete mode 100644 main/src/ui/res/drawable-xhdpi/ic_pause_white_24dp.png delete mode 100644 main/src/ui/res/drawable-xhdpi/ic_play_arrow_white_24dp.png delete mode 100644 main/src/ui/res/drawable-xhdpi/ic_receipt_white_24dp.png delete mode 100644 main/src/ui/res/drawable-xhdpi/ic_root_folder_am.png delete mode 100755 main/src/ui/res/drawable-xhdpi/ic_search_white_24dp.png delete mode 100644 main/src/ui/res/drawable-xhdpi/ic_share_white_24dp.png delete mode 100644 main/src/ui/res/drawable-xhdpi/ic_sort_white_24dp.png delete mode 100644 main/src/ui/res/drawable-xhdpi/ic_warning_black_36dp.png delete mode 100644 main/src/ui/res/drawable-xxhdpi/ic_add_circle_outline_grey600_24dp.png delete mode 100644 main/src/ui/res/drawable-xxhdpi/ic_add_circle_outline_white_24dp.png delete mode 100644 main/src/ui/res/drawable-xxhdpi/ic_archive_grey600_24dp.png delete mode 100644 main/src/ui/res/drawable-xxhdpi/ic_archive_white_24dp.png delete mode 100644 main/src/ui/res/drawable-xxhdpi/ic_check_white_24dp.png delete mode 100644 main/src/ui/res/drawable-xxhdpi/ic_close_white_24dp.png delete mode 100644 main/src/ui/res/drawable-xxhdpi/ic_content_copy_white_24dp.png delete mode 100644 main/src/ui/res/drawable-xxhdpi/ic_delete_grey600_24dp.png delete mode 100644 main/src/ui/res/drawable-xxhdpi/ic_delete_white_24dp.png delete mode 100644 main/src/ui/res/drawable-xxhdpi/ic_doc_generic_am.png delete mode 100644 main/src/ui/res/drawable-xxhdpi/ic_edit_grey600_24dp.png delete mode 100644 main/src/ui/res/drawable-xxhdpi/ic_edit_white_24dp.png delete mode 100644 main/src/ui/res/drawable-xxhdpi/ic_filter_list_white_24dp.png delete mode 100644 main/src/ui/res/drawable-xxhdpi/ic_menu_copy_holo_dark.png delete mode 100644 main/src/ui/res/drawable-xxhdpi/ic_pause_white_24dp.png delete mode 100644 main/src/ui/res/drawable-xxhdpi/ic_play_arrow_white_24dp.png delete mode 100644 main/src/ui/res/drawable-xxhdpi/ic_receipt_white_24dp.png delete mode 100644 main/src/ui/res/drawable-xxhdpi/ic_root_folder_am.png delete mode 100755 main/src/ui/res/drawable-xxhdpi/ic_search_white_24dp.png delete mode 100644 main/src/ui/res/drawable-xxhdpi/ic_share_white_24dp.png delete mode 100644 main/src/ui/res/drawable-xxhdpi/ic_sort_white_24dp.png delete mode 100644 main/src/ui/res/drawable-xxhdpi/ic_warning_black_36dp.png delete mode 100644 main/src/ui/res/drawable-xxxhdpi/ic_add_circle_outline_grey600_24dp.png delete mode 100644 main/src/ui/res/drawable-xxxhdpi/ic_add_circle_outline_white_24dp.png delete mode 100644 main/src/ui/res/drawable-xxxhdpi/ic_archive_grey600_24dp.png delete mode 100644 main/src/ui/res/drawable-xxxhdpi/ic_archive_white_24dp.png delete mode 100644 main/src/ui/res/drawable-xxxhdpi/ic_check_white_24dp.png delete mode 100644 main/src/ui/res/drawable-xxxhdpi/ic_close_white_24dp.png delete mode 100644 main/src/ui/res/drawable-xxxhdpi/ic_content_copy_white_24dp.png delete mode 100644 main/src/ui/res/drawable-xxxhdpi/ic_delete_grey600_24dp.png delete mode 100644 main/src/ui/res/drawable-xxxhdpi/ic_delete_white_24dp.png delete mode 100644 main/src/ui/res/drawable-xxxhdpi/ic_edit_grey600_24dp.png delete mode 100644 main/src/ui/res/drawable-xxxhdpi/ic_edit_white_24dp.png delete mode 100644 main/src/ui/res/drawable-xxxhdpi/ic_filter_list_white_24dp.png delete mode 100644 main/src/ui/res/drawable-xxxhdpi/ic_pause_white_24dp.png delete mode 100644 main/src/ui/res/drawable-xxxhdpi/ic_play_arrow_white_24dp.png delete mode 100644 main/src/ui/res/drawable-xxxhdpi/ic_receipt_white_24dp.png delete mode 100755 main/src/ui/res/drawable-xxxhdpi/ic_search_white_24dp.png delete mode 100644 main/src/ui/res/drawable-xxxhdpi/ic_share_white_24dp.png delete mode 100644 main/src/ui/res/drawable-xxxhdpi/ic_sort_white_24dp.png delete mode 100644 main/src/ui/res/drawable-xxxhdpi/ic_warning_black_36dp.png create mode 100644 main/src/ui/res/drawable/ic_warning.xml delete mode 100644 main/src/ui/res/values/refs.xml (limited to 'main/src') diff --git a/main/src/main/res/drawable-hdpi/ic_menu_archive.png b/main/src/main/res/drawable-hdpi/ic_menu_archive.png deleted file mode 100644 index e2d9bc1a..00000000 Binary files a/main/src/main/res/drawable-hdpi/ic_menu_archive.png and /dev/null differ diff --git a/main/src/main/res/drawable-hdpi/ic_menu_copy_holo_light.png b/main/src/main/res/drawable-hdpi/ic_menu_copy_holo_light.png deleted file mode 100644 index 0dd8865f..00000000 Binary files a/main/src/main/res/drawable-hdpi/ic_menu_copy_holo_light.png and /dev/null differ diff --git a/main/src/main/res/drawable-hdpi/ic_menu_log.png b/main/src/main/res/drawable-hdpi/ic_menu_log.png deleted file mode 100644 index 474ec16e..00000000 Binary files a/main/src/main/res/drawable-hdpi/ic_menu_log.png and /dev/null differ diff --git a/main/src/main/res/drawable-hdpi/vpn_item_settings.png b/main/src/main/res/drawable-hdpi/vpn_item_settings.png deleted file mode 100644 index 47b4ba23..00000000 Binary files a/main/src/main/res/drawable-hdpi/vpn_item_settings.png and /dev/null differ diff --git a/main/src/main/res/drawable-mdpi/ic_menu_archive.png b/main/src/main/res/drawable-mdpi/ic_menu_archive.png deleted file mode 100644 index 49ac569d..00000000 Binary files a/main/src/main/res/drawable-mdpi/ic_menu_archive.png and /dev/null differ diff --git a/main/src/main/res/drawable-mdpi/ic_menu_copy_holo_light.png b/main/src/main/res/drawable-mdpi/ic_menu_copy_holo_light.png deleted file mode 100644 index 74cb920f..00000000 Binary files a/main/src/main/res/drawable-mdpi/ic_menu_copy_holo_light.png and /dev/null differ diff --git a/main/src/main/res/drawable-mdpi/ic_menu_log.png b/main/src/main/res/drawable-mdpi/ic_menu_log.png deleted file mode 100644 index c8d60977..00000000 Binary files a/main/src/main/res/drawable-mdpi/ic_menu_log.png and /dev/null differ diff --git a/main/src/main/res/drawable-mdpi/vpn_item_settings.png b/main/src/main/res/drawable-mdpi/vpn_item_settings.png deleted file mode 100644 index 79281042..00000000 Binary files a/main/src/main/res/drawable-mdpi/vpn_item_settings.png and /dev/null differ diff --git a/main/src/main/res/drawable-xhdpi/ic_menu_archive.png b/main/src/main/res/drawable-xhdpi/ic_menu_archive.png deleted file mode 100644 index b1be9d5b..00000000 Binary files a/main/src/main/res/drawable-xhdpi/ic_menu_archive.png and /dev/null differ diff --git a/main/src/main/res/drawable-xhdpi/ic_menu_copy_holo_light.png b/main/src/main/res/drawable-xhdpi/ic_menu_copy_holo_light.png deleted file mode 100644 index 364b1692..00000000 Binary files a/main/src/main/res/drawable-xhdpi/ic_menu_copy_holo_light.png and /dev/null differ diff --git a/main/src/main/res/drawable-xhdpi/ic_menu_log.png b/main/src/main/res/drawable-xhdpi/ic_menu_log.png deleted file mode 100644 index 29c1faed..00000000 Binary files a/main/src/main/res/drawable-xhdpi/ic_menu_log.png and /dev/null differ diff --git a/main/src/main/res/drawable-xhdpi/vpn_item_settings.png b/main/src/main/res/drawable-xhdpi/vpn_item_settings.png deleted file mode 100644 index a057db8b..00000000 Binary files a/main/src/main/res/drawable-xhdpi/vpn_item_settings.png and /dev/null differ diff --git a/main/src/main/res/drawable-xxhdpi/ic_menu_copy_holo_light.png b/main/src/main/res/drawable-xxhdpi/ic_menu_copy_holo_light.png deleted file mode 100644 index 91043c9d..00000000 Binary files a/main/src/main/res/drawable-xxhdpi/ic_menu_copy_holo_light.png and /dev/null differ diff --git a/main/src/main/res/drawable-xxhdpi/ic_menu_log.png b/main/src/main/res/drawable-xxhdpi/ic_menu_log.png deleted file mode 100644 index d91c632b..00000000 Binary files a/main/src/main/res/drawable-xxhdpi/ic_menu_log.png and /dev/null differ diff --git a/main/src/main/res/drawable/ic_baseline_add_circle_outline_24.xml b/main/src/main/res/drawable/ic_baseline_add_circle_outline_24.xml new file mode 100644 index 00000000..d243c2f3 --- /dev/null +++ b/main/src/main/res/drawable/ic_baseline_add_circle_outline_24.xml @@ -0,0 +1,10 @@ + + + + + diff --git a/main/src/main/res/drawable/ic_baseline_archive_24.xml b/main/src/main/res/drawable/ic_baseline_archive_24.xml new file mode 100644 index 00000000..3e7b6df1 --- /dev/null +++ b/main/src/main/res/drawable/ic_baseline_archive_24.xml @@ -0,0 +1,10 @@ + + + + + diff --git a/main/src/main/res/drawable/ic_baseline_check_24.xml b/main/src/main/res/drawable/ic_baseline_check_24.xml new file mode 100644 index 00000000..0a3aedb6 --- /dev/null +++ b/main/src/main/res/drawable/ic_baseline_check_24.xml @@ -0,0 +1,10 @@ + + + + + diff --git a/main/src/main/res/drawable/ic_baseline_close_24.xml b/main/src/main/res/drawable/ic_baseline_close_24.xml new file mode 100644 index 00000000..57cc2c2a --- /dev/null +++ b/main/src/main/res/drawable/ic_baseline_close_24.xml @@ -0,0 +1,10 @@ + + + + + diff --git a/main/src/main/res/drawable/ic_baseline_delete_24.xml b/main/src/main/res/drawable/ic_baseline_delete_24.xml new file mode 100644 index 00000000..0e28eccf --- /dev/null +++ b/main/src/main/res/drawable/ic_baseline_delete_24.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/main/src/main/res/drawable/ic_baseline_delete_outline_24.xml b/main/src/main/res/drawable/ic_baseline_delete_outline_24.xml new file mode 100644 index 00000000..3486e426 --- /dev/null +++ b/main/src/main/res/drawable/ic_baseline_delete_outline_24.xml @@ -0,0 +1,10 @@ + + + + + diff --git a/main/src/main/res/drawable/ic_baseline_edit_24.xml b/main/src/main/res/drawable/ic_baseline_edit_24.xml new file mode 100644 index 00000000..ef50295e --- /dev/null +++ b/main/src/main/res/drawable/ic_baseline_edit_24.xml @@ -0,0 +1,5 @@ + + + diff --git a/main/src/main/res/drawable/ic_baseline_file_copy_24.xml b/main/src/main/res/drawable/ic_baseline_file_copy_24.xml new file mode 100644 index 00000000..ecd94523 --- /dev/null +++ b/main/src/main/res/drawable/ic_baseline_file_copy_24.xml @@ -0,0 +1,10 @@ + + + + + diff --git a/main/src/main/res/drawable/ic_baseline_file_present_24.xml b/main/src/main/res/drawable/ic_baseline_file_present_24.xml new file mode 100644 index 00000000..7ecee740 --- /dev/null +++ b/main/src/main/res/drawable/ic_baseline_file_present_24.xml @@ -0,0 +1,10 @@ + + + + + diff --git a/main/src/main/res/drawable/ic_baseline_filter_list_24.xml b/main/src/main/res/drawable/ic_baseline_filter_list_24.xml new file mode 100644 index 00000000..3775d893 --- /dev/null +++ b/main/src/main/res/drawable/ic_baseline_filter_list_24.xml @@ -0,0 +1,10 @@ + + + + + diff --git a/main/src/main/res/drawable/ic_baseline_folder_24.xml b/main/src/main/res/drawable/ic_baseline_folder_24.xml new file mode 100644 index 00000000..ddb19f72 --- /dev/null +++ b/main/src/main/res/drawable/ic_baseline_folder_24.xml @@ -0,0 +1,10 @@ + + + + + diff --git a/main/src/main/res/drawable/ic_baseline_pause_24.xml b/main/src/main/res/drawable/ic_baseline_pause_24.xml new file mode 100644 index 00000000..ddf43821 --- /dev/null +++ b/main/src/main/res/drawable/ic_baseline_pause_24.xml @@ -0,0 +1,10 @@ + + + + + diff --git a/main/src/main/res/drawable/ic_baseline_play_arrow_24.xml b/main/src/main/res/drawable/ic_baseline_play_arrow_24.xml new file mode 100644 index 00000000..bc2dc1f2 --- /dev/null +++ b/main/src/main/res/drawable/ic_baseline_play_arrow_24.xml @@ -0,0 +1,10 @@ + + + + + diff --git a/main/src/main/res/drawable/ic_baseline_receipt_long_24.xml b/main/src/main/res/drawable/ic_baseline_receipt_long_24.xml new file mode 100644 index 00000000..0880a35b --- /dev/null +++ b/main/src/main/res/drawable/ic_baseline_receipt_long_24.xml @@ -0,0 +1,14 @@ + + + + + + + + + diff --git a/main/src/main/res/drawable/ic_baseline_search_24.xml b/main/src/main/res/drawable/ic_baseline_search_24.xml new file mode 100644 index 00000000..8a14314b --- /dev/null +++ b/main/src/main/res/drawable/ic_baseline_search_24.xml @@ -0,0 +1,10 @@ + + + + + diff --git a/main/src/main/res/drawable/ic_baseline_share_24.xml b/main/src/main/res/drawable/ic_baseline_share_24.xml new file mode 100644 index 00000000..36f1711a --- /dev/null +++ b/main/src/main/res/drawable/ic_baseline_share_24.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/main/src/main/res/drawable/ic_baseline_sort_24.xml b/main/src/main/res/drawable/ic_baseline_sort_24.xml new file mode 100644 index 00000000..332d4031 --- /dev/null +++ b/main/src/main/res/drawable/ic_baseline_sort_24.xml @@ -0,0 +1,10 @@ + + + + + diff --git a/main/src/main/res/drawable/ic_baseline_warning_24.xml b/main/src/main/res/drawable/ic_baseline_warning_24.xml new file mode 100644 index 00000000..6a3283fe --- /dev/null +++ b/main/src/main/res/drawable/ic_baseline_warning_24.xml @@ -0,0 +1,10 @@ + + + + + diff --git a/main/src/main/res/drawable/ic_edit.xml b/main/src/main/res/drawable/ic_edit.xml new file mode 100644 index 00000000..98b15783 --- /dev/null +++ b/main/src/main/res/drawable/ic_edit.xml @@ -0,0 +1,10 @@ + + + diff --git a/main/src/main/res/values/attrs.xml b/main/src/main/res/values/attrs.xml index 502a691b..06caf3f0 100644 --- a/main/src/main/res/values/attrs.xml +++ b/main/src/main/res/values/attrs.xml @@ -6,7 +6,8 @@ --> - + + diff --git a/main/src/main/res/values/refs.xml b/main/src/main/res/values/refs.xml new file mode 100644 index 00000000..ebed84fa --- /dev/null +++ b/main/src/main/res/values/refs.xml @@ -0,0 +1,27 @@ + + + + @drawable/ic_baseline_close_24 + @drawable/ic_baseline_play_arrow_24 + @drawable/ic_baseline_pause_24 + @drawable/ic_baseline_share_24 + @drawable/ic_baseline_check_24 + @drawable/ic_baseline_filter_list_24 + @drawable/ic_baseline_delete_outline_24 + @drawable/ic_baseline_file_copy_24 + @drawable/ic_baseline_delete_outline_24 + @drawable/ic_baseline_search_24 + + @drawable/ic_edit + @drawable/ic_baseline_archive_24 + @drawable/ic_baseline_add_circle_outline_24 + @drawable/ic_baseline_warning_24 + @drawable/ic_baseline_add_circle_outline_24 + @drawable/ic_baseline_archive_24 + @drawable/ic_baseline_receipt_long_24 + @drawable/ic_baseline_sort_24 + + \ No newline at end of file diff --git a/main/src/skeleton/res/values/attrs.xml b/main/src/skeleton/res/values/attrs.xml new file mode 100644 index 00000000..051e23d0 --- /dev/null +++ b/main/src/skeleton/res/values/attrs.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/main/src/skeleton/res/values/refs.xml b/main/src/skeleton/res/values/refs.xml deleted file mode 100644 index a5105456..00000000 --- a/main/src/skeleton/res/values/refs.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - @android:drawable/ic_menu_close_clear_cancel - @android:drawable/ic_media_play - @android:drawable/ic_media_pause - @android:drawable/ic_menu_share - @android:drawable/ic_menu_save - @android:drawable/ic_menu_view - @android:drawable/ic_menu_delete - @android:drawable/ic_menu_edit - @drawable/ic_menu_archive - @drawable/vpn_item_settings - @android:drawable/ic_menu_add - @android:drawable/ic_dialog_alert - @android:drawable/ic_menu_add - @drawable/ic_menu_archive - @android:drawable/ic_menu_delete - @drawable/ic_menu_copy_holo_light - @drawable/ic_menu_log - @android:drawable/ic_menu_sort_by_size - - \ No newline at end of file diff --git a/main/src/skeleton/res/values/styles.xml b/main/src/skeleton/res/values/styles.xml index dbe2d1e4..9a6ca1e8 100644 --- a/main/src/skeleton/res/values/styles.xml +++ b/main/src/skeleton/res/values/styles.xml @@ -14,5 +14,4 @@