Compare commits
24 Commits
i2p-androi
...
i2p-androi
Author | SHA1 | Date | |
---|---|---|---|
fa668711bf | |||
48d9afea41 | |||
da4ed503c8 | |||
78a0a2b5f4 | |||
42202cc4d2 | |||
49f4562bf7 | |||
ca6031ab47 | |||
6c83285e04 | |||
96bb2cf161 | |||
ddb2482623 | |||
bf2dea5e0a | |||
2d784dbef2 | |||
554a65987b | |||
846795dea6 | |||
7a22ce4bee | |||
0e25d89bd8 | |||
61010b2c93 | |||
5fac82a915 | |||
c8c36540eb | |||
59b1da6950 | |||
40894d8d04 | |||
d0f38397cd | |||
17b86fffdd | |||
a06b449bfb |
21
CHANGELOG
21
CHANGELOG
@ -1,3 +1,24 @@
|
||||
2.9.0
|
||||
* Update I2P Library
|
||||
|
||||
2.8.0
|
||||
* Update I2P Library
|
||||
* Migrate to AndroidX
|
||||
* Migrate to MagicIndicator
|
||||
|
||||
2.7.1
|
||||
* Update I2P Library
|
||||
* Roll back ViewPageIndicator version, fixes crash, causes other issues
|
||||
|
||||
2.7.0
|
||||
* Update I2P Library
|
||||
|
||||
2.6.0
|
||||
* Update I2P Library
|
||||
|
||||
2.5.0
|
||||
* Update I2P Library
|
||||
|
||||
2.4.0
|
||||
* Update I2P Library
|
||||
|
||||
|
28
LICENSE.txt
28
LICENSE.txt
@ -43,8 +43,34 @@ License for the Android App:
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
|
||||
See the file licenses/LICENSE-Apache2.0.txt
|
||||
|
||||
===================================
|
||||
|
||||
License for the MagicIndicator library:
|
||||
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2016 hackware1993
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
|
||||
===================================
|
||||
|
||||
|
||||
See the file licenses/LICENSE-Apache2.0.txt
|
||||
|
@ -7,6 +7,7 @@ repositories {
|
||||
}
|
||||
|
||||
android {
|
||||
namespace 'net.i2p.android.router'
|
||||
compileSdkVersion Integer.parseInt(project.ANDROID_BUILD_TARGET_SDK_VERSION as String)
|
||||
defaultConfig {
|
||||
versionCode Integer.parseInt(project.I2P_ANDROID_VERSION_CODE as String)
|
||||
@ -65,21 +66,27 @@ android {
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation "androidx.appcompat:appcompat:1.5.1"
|
||||
implementation "androidx.preference:preference:1.2.0"
|
||||
implementation "androidx.annotation:annotation:1.5.0"
|
||||
implementation 'androidx.recyclerview:recyclerview:1.0.0'
|
||||
// Local dependencies
|
||||
implementation project(':lib:client')
|
||||
implementation project(':lib:helper')
|
||||
implementation project(path: ':routerjars', configuration: 'routerjars')
|
||||
// Android Support Repository dependencies
|
||||
def supportVersion = '28.0.0'
|
||||
/*def supportVersion = '28.0.0'
|
||||
implementation "com.android.support:support-v4:$supportVersion"
|
||||
implementation "com.android.support:appcompat-v7:$supportVersion"
|
||||
implementation "com.android.support:preference-v7:$supportVersion"
|
||||
implementation "com.android.support:preference-v14:$supportVersion"
|
||||
implementation "com.android.support:recyclerview-v7:$supportVersion"
|
||||
implementation "com.android.support:recyclerview-v7:$supportVersion"*/
|
||||
implementation 'com.google.android.material:material:1.9.0'
|
||||
// Remote dependencies
|
||||
implementation 'com.androidplot:androidplot-core:1.5.11'
|
||||
implementation 'com.eowise:recyclerview-stickyheaders:0.5.2@aar'
|
||||
implementation 'com.inkapplications.viewpageindicator:library:2.4.3'
|
||||
//implementation 'com.inkapplications.viewpageindicator:library:2.4.4'
|
||||
implementation 'com.github.hackware1993:MagicIndicator:1.7.0' // for androidx
|
||||
implementation 'com.pnikosis:materialish-progress:1.7'
|
||||
implementation "net.i2p:router:$I2P_VERSION"
|
||||
implementation "net.i2p:i2p:$I2P_VERSION"
|
||||
@ -94,11 +101,30 @@ dependencies {
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation "androidx.appcompat:appcompat:1.5.1"
|
||||
implementation "androidx.preference:preference:1.2.0"
|
||||
implementation "androidx.annotation:annotation:1.5.0"
|
||||
implementation 'androidx.test.espresso:espresso-core:3.6.1'
|
||||
implementation 'androidx.test.ext:junit:1.2.1'
|
||||
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.5'
|
||||
}
|
||||
|
||||
dependencies {
|
||||
// ...existing code...
|
||||
|
||||
// Force consistent lifecycle versions
|
||||
implementation('androidx.lifecycle:lifecycle-viewmodel:2.5.1')
|
||||
implementation('androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1')
|
||||
|
||||
// Exclude older versions
|
||||
configurations.all {
|
||||
resolutionStrategy {
|
||||
force 'androidx.lifecycle:lifecycle-viewmodel:2.5.1'
|
||||
force 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
project.ext.i2pbase = "../i2p.i2p"
|
||||
def Properties props = new Properties()
|
||||
def propFile = new File(project(':routerjars').projectDir, 'local.properties')
|
||||
|
@ -11,6 +11,7 @@
|
||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
||||
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
|
||||
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
|
||||
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_SPECIAL_USE" />
|
||||
<!-- following two are for UPnP -->
|
||||
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
|
||||
<uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" />
|
||||
@ -29,7 +30,10 @@
|
||||
android:icon="@drawable/ic_launcher_itoopie"
|
||||
android:enabled="true"
|
||||
android:exported="true"
|
||||
android:label="@string/app_name">
|
||||
android:label="@string/app_name"
|
||||
android:foregroundServiceType="specialUse">
|
||||
<property android:name="android.app.PROPERTY_SPECIAL_USE_FGS_SUBTYPE"
|
||||
android:value="i2p_router_background_process_required_network_operation"/>
|
||||
<intent-filter>
|
||||
<action android:name="net.i2p.android.router.service.IRouterState" />
|
||||
</intent-filter>
|
||||
|
@ -1,10 +1,15 @@
|
||||
package android.support.v4.view;
|
||||
//package android.support.v4.view;
|
||||
package androidx.viewpager.widget;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.Parcel;
|
||||
import android.os.Parcelable;
|
||||
import android.support.v4.os.ParcelableCompat;
|
||||
import android.support.v4.os.ParcelableCompatCreatorCallbacks;
|
||||
//import android.support.v4.os.ParcelableCompat;
|
||||
import androidx.core.os.ParcelableCompat;
|
||||
//import android.support.v4.os.ParcelableCompatCreatorCallbacks;
|
||||
import androidx.core.os.ParcelableCompatCreatorCallbacks;
|
||||
|
||||
import androidx.viewpager.widget.ViewPager;
|
||||
import android.util.AttributeSet;
|
||||
import android.view.MotionEvent;
|
||||
import android.widget.Toast;
|
@ -2,9 +2,10 @@ package com.pavelsikun.seekbarpreference;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.res.TypedArray;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.v7.preference.Preference;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
//import android.support.v7.preference.Preference;
|
||||
import androidx.preference.Preference;
|
||||
import android.util.AttributeSet;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
|
@ -4,9 +4,11 @@ import android.annotation.TargetApi;
|
||||
import android.content.Context;
|
||||
import android.content.res.TypedArray;
|
||||
import android.os.Build;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.v7.preference.Preference;
|
||||
import android.support.v7.preference.PreferenceViewHolder;
|
||||
import androidx.annotation.NonNull;
|
||||
//import android.support.v7.preference.Preference;
|
||||
import androidx.preference.Preference;
|
||||
//import android.support.v7.preference.PreferenceViewHolder;
|
||||
import androidx.preference.PreferenceViewHolder;
|
||||
import android.util.AttributeSet;
|
||||
|
||||
import net.i2p.android.router.R;
|
||||
|
@ -5,10 +5,14 @@ import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.IntentFilter;
|
||||
import android.os.Bundle;
|
||||
import android.support.v4.app.Fragment;
|
||||
import android.support.v4.app.FragmentManager;
|
||||
import android.support.v4.content.LocalBroadcastManager;
|
||||
import android.support.v7.widget.Toolbar;
|
||||
//import android.support.v4.app.Fragment;
|
||||
import androidx.fragment.app.Fragment;
|
||||
//import android.support.v4.app.FragmentManager;
|
||||
import androidx.fragment.app.FragmentManager;
|
||||
//import android.support.v4.content.LocalBroadcastManager;
|
||||
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
|
||||
//import android.support.v7.widget.Toolbar;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
|
||||
@ -25,7 +29,7 @@ import net.i2p.android.router.service.State;
|
||||
import net.i2p.android.router.util.Connectivity;
|
||||
import net.i2p.android.router.util.Util;
|
||||
import net.i2p.android.util.MemoryFragmentPagerAdapter;
|
||||
import android.support.v4.view.CustomViewPager;
|
||||
import androidx.viewpager.widget.CustomViewPager;
|
||||
import net.i2p.android.widget.SlidingTabLayout;
|
||||
import net.i2p.router.RouterContext;
|
||||
|
||||
|
@ -6,7 +6,8 @@ import android.content.ServiceConnection;
|
||||
import android.content.SharedPreferences;
|
||||
import android.os.Bundle;
|
||||
import android.os.IBinder;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
//import android.support.v7.app.AppCompatActivity;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
|
||||
import net.i2p.android.router.service.RouterBinder;
|
||||
import net.i2p.android.router.service.RouterService;
|
||||
|
@ -6,7 +6,7 @@ import android.content.pm.PackageManager;
|
||||
import android.content.pm.ResolveInfo;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.net.Uri;
|
||||
import android.support.annotation.NonNull;
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
|
@ -6,7 +6,8 @@ import android.content.Intent;
|
||||
import android.graphics.ColorMatrix;
|
||||
import android.graphics.ColorMatrixColorFilter;
|
||||
import android.net.Uri;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
//import android.support.v7.widget.RecyclerView;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
@ -1,8 +1,10 @@
|
||||
package net.i2p.android.help;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.support.v7.widget.Toolbar;
|
||||
//import android.support.v7.app.AppCompatActivity;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
//import android.support.v7.widget.Toolbar;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
import android.view.MenuItem;
|
||||
|
||||
import net.i2p.android.router.R;
|
||||
|
@ -8,11 +8,16 @@ import android.content.pm.ResolveInfo;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.support.v4.app.Fragment;
|
||||
import android.support.v4.app.LoaderManager;
|
||||
import android.support.v4.content.Loader;
|
||||
import android.support.v7.widget.LinearLayoutManager;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
//import android.support.v4.app.Fragment;
|
||||
import androidx.fragment.app.Fragment;
|
||||
//import android.support.v4.app.LoaderManager;
|
||||
import androidx.loader.app.LoaderManager;
|
||||
//import android.support.v4.content.Loader;
|
||||
import androidx.loader.content.Loader;
|
||||
//import android.support.v7.widget.LinearLayoutManager;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
//import android.support.v7.widget.RecyclerView;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
@ -2,10 +2,14 @@ package net.i2p.android.help;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.support.v4.app.NavUtils;
|
||||
import android.support.v4.app.TaskStackBuilder;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.support.v7.widget.Toolbar;
|
||||
//import android.support.v4.app.NavUtils;
|
||||
import androidx.core.app.NavUtils;
|
||||
//import android.support.v4.app.TaskStackBuilder;
|
||||
import androidx.core.app.TaskStackBuilder;
|
||||
//import android.support.v7.app.AppCompatActivity;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
//import android.support.v7.widget.Toolbar;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
|
||||
|
@ -1,7 +1,8 @@
|
||||
package net.i2p.android.help;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.support.v4.app.Fragment;
|
||||
//import android.support.v4.app.Fragment;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
@ -2,7 +2,8 @@ package net.i2p.android.help;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
import android.support.v4.app.ListFragment;
|
||||
//import android.support.v4.app.ListFragment;
|
||||
import androidx.fragment.app.ListFragment;
|
||||
import android.view.View;
|
||||
import android.widget.ArrayAdapter;
|
||||
import android.widget.ListView;
|
||||
|
@ -2,8 +2,10 @@ package net.i2p.android.i2ptunnel;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.support.v4.app.ActivityCompat;
|
||||
import android.support.v7.widget.Toolbar;
|
||||
//import android.support.v4.app.ActivityCompat;
|
||||
import androidx.core.app.ActivityCompat;
|
||||
//import android.support.v7.widget.Toolbar;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
import android.view.View;
|
||||
|
||||
import net.i2p.android.I2PActivityBase;
|
||||
|
@ -10,12 +10,17 @@ import android.content.Intent;
|
||||
import android.net.Uri;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.v4.app.DialogFragment;
|
||||
import android.support.v4.app.Fragment;
|
||||
import android.support.v4.view.ViewCompat;
|
||||
import android.support.v7.app.AlertDialog;
|
||||
import android.support.v7.widget.Toolbar;
|
||||
import androidx.annotation.NonNull;
|
||||
//import android.support.v4.app.DialogFragment;
|
||||
import androidx.fragment.app.DialogFragment;
|
||||
//import android.support.v4.app.Fragment;
|
||||
import androidx.fragment.app.Fragment;
|
||||
//import android.support.v4.view.ViewCompat;
|
||||
import androidx.core.view.ViewCompat;
|
||||
//import android.support.v7.app.AlertDialog;
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
//import android.support.v7.widget.Toolbar;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
|
@ -2,9 +2,12 @@ package net.i2p.android.i2ptunnel;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.Build;
|
||||
import android.support.v4.util.Pair;
|
||||
import android.support.v4.view.ViewCompat;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
//import android.support.v4.util.Pair;
|
||||
import androidx.core.util.Pair;
|
||||
//import android.support.v4.view.ViewCompat;
|
||||
import androidx.core.view.ViewCompat;
|
||||
//import android.support.v7.widget.RecyclerView;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
import android.view.Gravity;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
|
@ -2,7 +2,8 @@ package net.i2p.android.i2ptunnel;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.Handler;
|
||||
import android.support.v4.content.AsyncTaskLoader;
|
||||
//import android.support.v4.content.AsyncTaskLoader;
|
||||
import androidx.loader.content.AsyncTaskLoader;
|
||||
|
||||
import net.i2p.android.router.util.Util;
|
||||
import net.i2p.i2ptunnel.TunnelController;
|
||||
|
@ -6,13 +6,20 @@ import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.IntentFilter;
|
||||
import android.os.Bundle;
|
||||
import android.support.v4.app.Fragment;
|
||||
import android.support.v4.app.LoaderManager;
|
||||
import android.support.v4.content.Loader;
|
||||
import android.support.v4.content.LocalBroadcastManager;
|
||||
import android.support.v4.util.Pair;
|
||||
import android.support.v7.widget.LinearLayoutManager;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
//import android.support.v4.app.Fragment;
|
||||
import androidx.fragment.app.Fragment;
|
||||
//import android.support.v4.app.LoaderManager;
|
||||
import androidx.loader.app.LoaderManager;
|
||||
//import android.support.v4.content.Loader;
|
||||
import androidx.loader.content.Loader;
|
||||
//import android.support.v4.content.LocalBroadcastManager;
|
||||
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
|
||||
//import android.support.v4.util.Pair;
|
||||
import androidx.core.util.Pair;
|
||||
//import android.support.v7.widget.LinearLayoutManager;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
//import android.support.v7.widget.RecyclerView;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
@ -57,6 +64,8 @@ public class TunnelListFragment extends Fragment implements
|
||||
private TunnelEntryAdapter mAdapter;
|
||||
private boolean mClientTunnels;
|
||||
|
||||
private static final String KEY_SELECTED_TUNNEL = "selected_tunnel";
|
||||
|
||||
// Container Activity must implement this interface
|
||||
public interface OnTunnelSelectedListener {
|
||||
void onTunnelSelected(int tunnelId, Pair<View, String>[] pairs);
|
||||
@ -100,6 +109,12 @@ public class TunnelListFragment extends Fragment implements
|
||||
@Override
|
||||
public void onViewCreated(View view, Bundle savedInstanceState) {
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
if (savedInstanceState != null) {
|
||||
int tunnelId = savedInstanceState.getInt(KEY_SELECTED_TUNNEL, -1);
|
||||
if (tunnelId != -1) {
|
||||
mCallback.onTunnelSelected(tunnelId, null);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -6,9 +6,11 @@ import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.v4.app.DialogFragment;
|
||||
import android.support.v7.app.AlertDialog;
|
||||
import androidx.annotation.NonNull;
|
||||
//import android.support.v4.app.DialogFragment;
|
||||
import androidx.fragment.app.DialogFragment;
|
||||
//import android.support.v7.app.AlertDialog;
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
|
||||
import net.i2p.android.router.R;
|
||||
import net.i2p.android.wizard.model.AbstractWizardModel;
|
||||
|
@ -1,15 +1,25 @@
|
||||
package net.i2p.android.i2ptunnel;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.support.v4.app.ActivityCompat;
|
||||
import android.support.v4.app.ActivityOptionsCompat;
|
||||
import android.support.v4.app.Fragment;
|
||||
import android.support.v4.app.FragmentManager;
|
||||
import android.support.v4.app.FragmentPagerAdapter;
|
||||
import android.support.v4.util.Pair;
|
||||
import android.support.v4.view.ViewPager;
|
||||
//import android.support.v4.app.ActivityCompat;
|
||||
import androidx.core.app.ActivityCompat;
|
||||
//import android.support.v4.app.ActivityOptionsCompat;
|
||||
import androidx.core.app.ActivityOptionsCompat;
|
||||
//import android.support.v4.app.Fragment;
|
||||
import androidx.fragment.app.Fragment;
|
||||
//import android.support.v4.app.FragmentManager;
|
||||
import androidx.fragment.app.FragmentManager;
|
||||
//import android.support.v4.app.FragmentPagerAdapter;
|
||||
import androidx.fragment.app.FragmentPagerAdapter;
|
||||
//import android.support.v4.util.Pair;
|
||||
import androidx.core.util.Pair;
|
||||
//import android.support.v4.view.ViewPager;
|
||||
import androidx.viewpager.widget.ViewPager;
|
||||
|
||||
import android.util.Log;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuInflater;
|
||||
@ -19,7 +29,17 @@ import android.view.ViewGroup;
|
||||
import android.widget.ImageButton;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.viewpagerindicator.TitlePageIndicator;
|
||||
import com.google.android.material.tabs.TabLayout;
|
||||
import net.lucode.hackware.magicindicator.MagicIndicator;
|
||||
import net.lucode.hackware.magicindicator.ViewPagerHelper;
|
||||
import net.lucode.hackware.magicindicator.buildins.commonnavigator.CommonNavigator;
|
||||
import net.lucode.hackware.magicindicator.buildins.commonnavigator.abs.CommonNavigatorAdapter;
|
||||
import net.lucode.hackware.magicindicator.buildins.commonnavigator.abs.IPagerIndicator;
|
||||
import net.lucode.hackware.magicindicator.buildins.commonnavigator.abs.IPagerTitleView;
|
||||
import net.lucode.hackware.magicindicator.buildins.commonnavigator.indicators.LinePagerIndicator;
|
||||
import net.lucode.hackware.magicindicator.buildins.commonnavigator.titles.ColorTransitionPagerTitleView;
|
||||
import net.lucode.hackware.magicindicator.buildins.commonnavigator.titles.SimplePagerTitleView;
|
||||
import androidx.core.content.ContextCompat;
|
||||
|
||||
import net.i2p.android.i2ptunnel.preferences.EditTunnelContainerFragment;
|
||||
import net.i2p.android.i2ptunnel.util.TunnelUtil;
|
||||
@ -52,7 +72,7 @@ public class TunnelsContainer extends Fragment implements
|
||||
private boolean mTwoPane;
|
||||
|
||||
ViewPager mViewPager;
|
||||
TitlePageIndicator mPageIndicator;
|
||||
MagicIndicator mPageIndicator;
|
||||
FragmentPagerAdapter mFragPagerAdapter;
|
||||
|
||||
private static final String FRAGMENT_CLIENT = "client_fragment";
|
||||
@ -81,15 +101,17 @@ public class TunnelsContainer extends Fragment implements
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
||||
View v = inflater.inflate(R.layout.container_tunnels, container, false);
|
||||
|
||||
mViewPager = (ViewPager) v.findViewById(R.id.pager);
|
||||
mPageIndicator = (TitlePageIndicator) v.findViewById(R.id.page_indicator);
|
||||
mNewTunnel = (ImageButton) v.findViewById(R.id.promoted_action);
|
||||
mViewPager = v.findViewById(R.id.pager);
|
||||
mPageIndicator = v.findViewById(R.id.magic_indicator);
|
||||
|
||||
mNewTunnel = v.findViewById(R.id.promoted_action);
|
||||
mNewTunnel.setVisibility(showActions() ? View.VISIBLE : View.GONE);
|
||||
|
||||
// Initialize ViewPager adapter
|
||||
mFragPagerAdapter = new TunnelsPagerAdapter(getChildFragmentManager());
|
||||
mViewPager.setAdapter(mFragPagerAdapter);
|
||||
|
||||
if (v.findViewById(R.id.detail_fragment) != null) {
|
||||
// The detail container view will be present only in the
|
||||
// large-screen layouts (res/values-w720dp). If this view
|
||||
// is present, then the activity should be in two-pane mode.
|
||||
mTwoPane = true;
|
||||
}
|
||||
|
||||
@ -100,19 +122,22 @@ public class TunnelsContainer extends Fragment implements
|
||||
savedInstanceState, FRAGMENT_SERVER);
|
||||
}
|
||||
|
||||
setupMagicIndicator();
|
||||
|
||||
return v;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onActivityCreated(Bundle savedInstanceState) {
|
||||
super.onActivityCreated(savedInstanceState);
|
||||
|
||||
|
||||
// Initialize ViewPager and adapter
|
||||
mFragPagerAdapter = new TunnelsPagerAdapter(getChildFragmentManager());
|
||||
mViewPager.setAdapter(mFragPagerAdapter);
|
||||
|
||||
// Bind the page indicator to the pager.
|
||||
mPageIndicator.setViewPager(mViewPager);
|
||||
setupMagicIndicator();
|
||||
|
||||
// Setup New Tunnel button
|
||||
mNewTunnel.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
@ -270,9 +295,14 @@ public class TunnelsContainer extends Fragment implements
|
||||
// In two-pane mode, show the detail view in this activity by
|
||||
// adding or replacing the detail fragment using a
|
||||
// fragment transaction.
|
||||
TunnelDetailFragment detailFrag = TunnelDetailFragment.newInstance(tunnelId);
|
||||
getChildFragmentManager().beginTransaction()
|
||||
.replace(R.id.detail_fragment, detailFrag).commit();
|
||||
try {
|
||||
TunnelDetailFragment detailFrag = TunnelDetailFragment.newInstance(tunnelId);
|
||||
getChildFragmentManager().beginTransaction()
|
||||
.replace(R.id.detail_fragment, detailFrag)
|
||||
.commitNow(); // Use commitNow() to execute synchronously
|
||||
} catch (Exception e) {
|
||||
Log.e("TunnelsContainer", "Failed to update detail fragment", e);
|
||||
}
|
||||
} else {
|
||||
// In single-pane mode, simply start the detail activity
|
||||
// for the selected item ID.
|
||||
@ -311,4 +341,54 @@ public class TunnelsContainer extends Fragment implements
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void setupMagicIndicator() {
|
||||
if (mPageIndicator == null || getContext() == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
CommonNavigator commonNavigator = new CommonNavigator(getContext());
|
||||
commonNavigator.setAdjustMode(true); // Add this line for better spacing
|
||||
commonNavigator.setAdapter(new CommonNavigatorAdapter() {
|
||||
@Override
|
||||
public int getCount() {
|
||||
return mFragPagerAdapter.getCount();
|
||||
}
|
||||
|
||||
@Override
|
||||
public IPagerTitleView getTitleView(Context context, final int index) {
|
||||
SimplePagerTitleView simplePagerTitleView = new ColorTransitionPagerTitleView(context);
|
||||
simplePagerTitleView.setText(mFragPagerAdapter.getPageTitle(index));
|
||||
simplePagerTitleView.setTextSize(16); // Add this line to increase text size
|
||||
simplePagerTitleView.setNormalColor(ContextCompat.getColor(context,
|
||||
R.color.primary_text_disabled_material_dark));
|
||||
simplePagerTitleView.setSelectedColor(ContextCompat.getColor(context,
|
||||
R.color.primary_text_default_material_dark));
|
||||
simplePagerTitleView.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
mViewPager.setCurrentItem(index);
|
||||
}
|
||||
});
|
||||
return simplePagerTitleView;
|
||||
}
|
||||
|
||||
@Override
|
||||
public IPagerIndicator getIndicator(Context context) {
|
||||
LinePagerIndicator indicator = new LinePagerIndicator(context);
|
||||
indicator.setMode(LinePagerIndicator.MODE_WRAP_CONTENT);
|
||||
indicator.setColors(ContextCompat.getColor(context, R.color.primary));
|
||||
indicator.setLineHeight(dpToPx(context, 3));
|
||||
return indicator;
|
||||
}
|
||||
});
|
||||
|
||||
mPageIndicator.setNavigator(commonNavigator);
|
||||
ViewPagerHelper.bind(mPageIndicator, mViewPager);
|
||||
}
|
||||
|
||||
private int dpToPx(Context context, int dp) {
|
||||
float density = context.getResources().getDisplayMetrics().density;
|
||||
return Math.round(dp * density);
|
||||
}
|
||||
}
|
||||
|
@ -3,11 +3,16 @@ package net.i2p.android.i2ptunnel.preferences;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.SharedPreferences;
|
||||
import android.os.Bundle;
|
||||
import android.support.v7.app.AlertDialog;
|
||||
import android.support.v7.preference.CheckBoxPreference;
|
||||
import android.support.v7.preference.Preference;
|
||||
import android.support.v7.preference.PreferenceCategory;
|
||||
import android.support.v7.preference.PreferenceScreen;
|
||||
//import android.support.v7.app.AlertDialog;
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
//import android.support.v7.preference.CheckBoxPreference;
|
||||
import androidx.preference.CheckBoxPreference;
|
||||
//import android.support.v7.preference.Preference;
|
||||
import androidx.preference.Preference;
|
||||
//import android.support.v7.preference.PreferenceCategory;
|
||||
import androidx.preference.PreferenceCategory;
|
||||
//import android.support.v7.preference.PreferenceScreen;
|
||||
import androidx.preference.PreferenceScreen;
|
||||
|
||||
import net.i2p.android.i2ptunnel.util.TunnelLogic;
|
||||
import net.i2p.android.i2ptunnel.util.TunnelUtil;
|
||||
|
@ -2,9 +2,12 @@ package net.i2p.android.i2ptunnel.preferences;
|
||||
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.support.v7.preference.Preference;
|
||||
import android.support.v7.preference.PreferenceGroup;
|
||||
import android.support.v7.preference.PreferenceScreen;
|
||||
//import android.support.v7.preference.Preference;
|
||||
import androidx.preference.Preference;
|
||||
//import android.support.v7.preference.PreferenceGroup;
|
||||
import androidx.preference.PreferenceGroup;
|
||||
//import android.support.v7.preference.PreferenceScreen;
|
||||
import androidx.preference.PreferenceScreen;
|
||||
import android.widget.Toast;
|
||||
|
||||
import net.i2p.android.i2ptunnel.util.SaveTunnelTask;
|
||||
|
@ -2,10 +2,14 @@ package net.i2p.android.i2ptunnel.preferences;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.support.v4.app.Fragment;
|
||||
import android.support.v4.app.FragmentManager;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.support.v7.widget.Toolbar;
|
||||
//import android.support.v4.app.Fragment;
|
||||
import androidx.fragment.app.Fragment;
|
||||
//import android.support.v4.app.FragmentManager;
|
||||
import androidx.fragment.app.FragmentManager;
|
||||
//import android.support.v7.app.AppCompatActivity;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
//import android.support.v7.widget.Toolbar;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
|
||||
import net.i2p.android.i2ptunnel.TunnelDetailActivity;
|
||||
import net.i2p.android.i2ptunnel.TunnelDetailFragment;
|
||||
|
@ -1,9 +1,12 @@
|
||||
package net.i2p.android.i2ptunnel.preferences;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.support.v4.app.Fragment;
|
||||
import android.support.v4.app.FragmentManager;
|
||||
import android.support.v7.widget.Toolbar;
|
||||
//import android.support.v4.app.Fragment;
|
||||
import androidx.fragment.app.Fragment;
|
||||
//import android.support.v4.app.FragmentManager;
|
||||
import androidx.fragment.app.FragmentManager;
|
||||
//import android.support.v7.widget.Toolbar;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
@ -5,13 +5,20 @@ import android.content.DialogInterface;
|
||||
import android.content.SharedPreferences;
|
||||
import android.os.AsyncTask;
|
||||
import android.os.Bundle;
|
||||
import android.support.v4.app.Fragment;
|
||||
import android.support.v7.app.AlertDialog;
|
||||
import android.support.v7.preference.CheckBoxPreference;
|
||||
import android.support.v7.preference.ListPreference;
|
||||
import android.support.v7.preference.Preference;
|
||||
import android.support.v7.preference.PreferenceCategory;
|
||||
import android.support.v7.preference.PreferenceScreen;
|
||||
//import android.support.v4.app.Fragment;
|
||||
import androidx.fragment.app.Fragment;
|
||||
//import android.support.v7.app.AlertDialog;
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
//import android.support.v7.preference.CheckBoxPreference;
|
||||
import androidx.preference.CheckBoxPreference;
|
||||
//import android.support.v7.preference.ListPreference;
|
||||
import androidx.preference.ListPreference;
|
||||
//import android.support.v7.preference.Preference;
|
||||
import androidx.preference.Preference;
|
||||
//import android.support.v7.preference.PreferenceCategory;
|
||||
import androidx.preference.PreferenceCategory;
|
||||
//import android.support.v7.preference.PreferenceScreen;
|
||||
import androidx.preference.PreferenceScreen;
|
||||
|
||||
import net.i2p.android.i2ptunnel.util.TunnelLogic;
|
||||
import net.i2p.android.i2ptunnel.util.TunnelUtil;
|
||||
|
@ -1,8 +1,10 @@
|
||||
package net.i2p.android.preferences;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.support.v4.app.Fragment;
|
||||
import android.support.v7.preference.Preference;
|
||||
//import android.support.v4.app.Fragment;
|
||||
import androidx.fragment.app.Fragment;
|
||||
//import android.support.v7.preference.Preference;
|
||||
import androidx.preference.Preference;
|
||||
|
||||
import net.i2p.android.router.R;
|
||||
import net.i2p.android.router.SettingsActivity;
|
||||
|
@ -2,10 +2,14 @@ package net.i2p.android.preferences;
|
||||
|
||||
import android.content.SharedPreferences;
|
||||
import android.os.Bundle;
|
||||
import android.support.v7.preference.CheckBoxPreference;
|
||||
import android.support.v7.preference.PreferenceCategory;
|
||||
import android.support.v7.preference.PreferenceManager;
|
||||
import android.support.v7.preference.PreferenceScreen;
|
||||
//import android.support.v7.preference.CheckBoxPreference;
|
||||
import androidx.preference.CheckBoxPreference;
|
||||
//import android.support.v7.preference.PreferenceCategory;
|
||||
import androidx.preference.PreferenceCategory;
|
||||
//import android.support.v7.preference.PreferenceManager;
|
||||
import androidx.preference.PreferenceManager;
|
||||
//import android.support.v7.preference.PreferenceScreen;
|
||||
import androidx.preference.PreferenceScreen;
|
||||
|
||||
import net.i2p.android.router.R;
|
||||
import net.i2p.android.router.SettingsActivity;
|
||||
|
@ -1,7 +1,8 @@
|
||||
package net.i2p.android.preferences;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.support.v7.preference.PreferenceScreen;
|
||||
//import android.support.v7.preference.PreferenceScreen;
|
||||
import androidx.preference.PreferenceScreen;
|
||||
|
||||
import net.i2p.android.router.R;
|
||||
import net.i2p.android.router.SettingsActivity;
|
||||
|
@ -4,10 +4,15 @@ import android.annotation.SuppressLint;
|
||||
import android.content.Context;
|
||||
import android.content.SharedPreferences;
|
||||
import android.os.Bundle;
|
||||
import android.support.v7.preference.CheckBoxPreference;
|
||||
import android.support.v7.preference.Preference;
|
||||
import android.support.v7.preference.PreferenceManager;
|
||||
import android.support.v7.preference.PreferenceScreen;
|
||||
//import android.support.v7.preference.CheckBoxPreference;
|
||||
//import android.support.v7.preference.Preference;
|
||||
//import android.support.v7.preference.PreferenceManager;
|
||||
//import android.support.v7.preference.PreferenceScreen;
|
||||
import androidx.preference.CheckBoxPreference;
|
||||
import androidx.preference.Preference;
|
||||
import androidx.preference.PreferenceManager;
|
||||
import androidx.preference.PreferenceScreen;
|
||||
|
||||
import android.widget.Toast;
|
||||
|
||||
import net.i2p.android.router.R;
|
||||
|
@ -2,7 +2,8 @@ package net.i2p.android.preferences.util;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.res.TypedArray;
|
||||
import android.support.v7.preference.EditTextPreference;
|
||||
//import android.support.v7.preference.EditTextPreference;
|
||||
import androidx.preference.EditTextPreference;
|
||||
import android.util.AttributeSet;
|
||||
|
||||
import net.i2p.android.router.R;
|
||||
|
@ -1,7 +1,8 @@
|
||||
package net.i2p.android.preferences.util;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.support.v7.preference.EditTextPreferenceDialogFragmentCompat;
|
||||
//import android.support.v7.preference.EditTextPreferenceDialogFragmentCompat;
|
||||
import androidx.preference.EditTextPreferenceDialogFragmentCompat;
|
||||
import android.text.InputType;
|
||||
import android.view.View;
|
||||
import android.widget.EditText;
|
||||
|
@ -1,8 +1,9 @@
|
||||
package net.i2p.android.preferences.util;
|
||||
|
||||
import android.support.v4.app.DialogFragment;
|
||||
import android.support.v7.preference.Preference;
|
||||
import android.support.v7.preference.PreferenceFragmentCompat;
|
||||
//import android.support.v4.app.DialogFragment;
|
||||
import androidx.fragment.app.DialogFragment;
|
||||
import androidx.preference.Preference;
|
||||
import androidx.preference.PreferenceFragmentCompat;
|
||||
|
||||
/**
|
||||
* Handles custom Preferences.
|
||||
|
@ -1,7 +1,8 @@
|
||||
package net.i2p.android.preferences.util;
|
||||
|
||||
import android.content.Context;
|
||||
import android.support.v7.preference.EditTextPreference;
|
||||
//import android.support.v7.preference.EditTextPreference;
|
||||
import androidx.preference.EditTextPreference;
|
||||
import android.util.AttributeSet;
|
||||
|
||||
public class IntEditTextPreference extends EditTextPreference {
|
||||
|
@ -1,7 +1,8 @@
|
||||
package net.i2p.android.preferences.util;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.support.v7.preference.EditTextPreferenceDialogFragmentCompat;
|
||||
//import android.support.v7.preference.EditTextPreferenceDialogFragmentCompat;
|
||||
import androidx.preference.EditTextPreferenceDialogFragmentCompat;
|
||||
import android.text.InputType;
|
||||
import android.view.View;
|
||||
import android.widget.EditText;
|
||||
|
@ -1,7 +1,8 @@
|
||||
package net.i2p.android.preferences.util;
|
||||
|
||||
import android.content.Context;
|
||||
import android.support.v7.preference.ListPreference;
|
||||
//import android.support.v7.preference.ListPreference;
|
||||
import androidx.preference.ListPreference;
|
||||
import android.util.AttributeSet;
|
||||
|
||||
public class IntListPreference extends ListPreference {
|
||||
|
@ -1,7 +1,8 @@
|
||||
package net.i2p.android.preferences.util;
|
||||
|
||||
import android.content.Context;
|
||||
import android.support.v7.preference.EditTextPreference;
|
||||
//import android.support.v7.preference.EditTextPreference;
|
||||
import androidx.preference.EditTextPreference;
|
||||
import android.util.AttributeSet;
|
||||
|
||||
import net.i2p.android.router.R;
|
||||
|
@ -1,7 +1,8 @@
|
||||
package net.i2p.android.preferences.util;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.support.v7.preference.EditTextPreferenceDialogFragmentCompat;
|
||||
//import android.support.v7.preference.EditTextPreferenceDialogFragmentCompat;
|
||||
import androidx.preference.EditTextPreferenceDialogFragmentCompat;
|
||||
import android.text.InputType;
|
||||
import android.view.View;
|
||||
import android.widget.EditText;
|
||||
|
@ -1,7 +1,8 @@
|
||||
package net.i2p.android.preferences.util;
|
||||
|
||||
import android.content.Context;
|
||||
import android.support.v7.preference.EditTextPreference;
|
||||
//import android.support.v7.preference.EditTextPreference;
|
||||
import android.preference.EditTextPreference;
|
||||
import android.util.AttributeSet;
|
||||
|
||||
public class SummaryEditTextPreference extends EditTextPreference {
|
||||
|
@ -3,7 +3,8 @@ package net.i2p.android.router;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.preference.PreferenceManager;
|
||||
import android.support.v4.app.Fragment;
|
||||
//import android.support.v4.app.Fragment;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuInflater;
|
||||
|
@ -1,7 +1,8 @@
|
||||
package net.i2p.android.router;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.support.v4.app.Fragment;
|
||||
//import android.support.v4.app.Fragment;
|
||||
import androidx.fragment.app.Fragment;
|
||||
|
||||
import net.i2p.android.router.util.Util;
|
||||
import net.i2p.router.CommSystemFacade;
|
||||
|
@ -1,7 +1,8 @@
|
||||
package net.i2p.android.router;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.support.v7.widget.Toolbar;
|
||||
//import android.support.v7.widget.Toolbar;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
|
||||
import net.i2p.android.I2PActivityBase;
|
||||
|
||||
|
@ -1,7 +1,8 @@
|
||||
package net.i2p.android.router;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.support.v4.app.ListFragment;
|
||||
//import android.support.v4.app.ListFragment;
|
||||
import androidx.fragment.app.ListFragment;
|
||||
import android.view.View;
|
||||
import android.widget.ArrayAdapter;
|
||||
import android.widget.ListView;
|
||||
|
@ -14,8 +14,10 @@ import android.os.Handler;
|
||||
import android.os.PowerManager;
|
||||
import android.preference.PreferenceManager;
|
||||
import android.provider.Settings;
|
||||
import android.support.v4.content.LocalBroadcastManager;
|
||||
import android.support.v7.app.AlertDialog;
|
||||
//import android.support.v4.content.LocalBroadcastManager;
|
||||
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
|
||||
//import android.support.v7.app.AlertDialog;
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
import android.util.AndroidRuntimeException;
|
||||
import android.view.Gravity;
|
||||
import android.view.LayoutInflater;
|
||||
|
@ -1,7 +1,8 @@
|
||||
package net.i2p.android.router;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.support.v7.widget.Toolbar;
|
||||
//import android.support.v7.widget.Toolbar;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
|
||||
import net.i2p.android.I2PActivityBase;
|
||||
|
||||
|
@ -3,13 +3,20 @@ package net.i2p.android.router;
|
||||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
import android.os.Bundle;
|
||||
import android.support.v4.app.Fragment;
|
||||
import android.support.v4.app.FragmentManager;
|
||||
import android.support.v4.content.LocalBroadcastManager;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.support.v7.preference.Preference;
|
||||
import android.support.v7.preference.PreferenceFragmentCompat;
|
||||
import android.support.v7.widget.Toolbar;
|
||||
//import android.support.v4.app.Fragment;
|
||||
import androidx.fragment.app.Fragment;
|
||||
//import android.support.v4.app.FragmentManager;
|
||||
import androidx.fragment.app.FragmentManager;
|
||||
//import android.support.v4.content.LocalBroadcastManager;
|
||||
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
|
||||
//import android.support.v7.app.AppCompatActivity;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
//import android.support.v7.preference.Preference;
|
||||
import androidx.preference.Preference;
|
||||
//import android.support.v7.preference.PreferenceFragmentCompat;
|
||||
import androidx.preference.PreferenceFragmentCompat;
|
||||
//import android.support.v7.widget.Toolbar;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
|
||||
import net.i2p.android.I2PActivity;
|
||||
import net.i2p.android.preferences.AdvancedPreferenceFragment;
|
||||
|
@ -1,8 +1,9 @@
|
||||
package net.i2p.android.router.addressbook;
|
||||
|
||||
import android.content.Context;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import androidx.annotation.NonNull;
|
||||
//import android.support.v7.widget.RecyclerView;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
@ -1,7 +1,8 @@
|
||||
package net.i2p.android.router.addressbook;
|
||||
|
||||
import android.content.Context;
|
||||
import android.support.v4.content.AsyncTaskLoader;
|
||||
//import android.support.v4.content.AsyncTaskLoader;
|
||||
import androidx.loader.content.AsyncTaskLoader;
|
||||
|
||||
import net.i2p.android.router.util.NamingServiceUtil;
|
||||
import net.i2p.android.router.util.Util;
|
||||
|
@ -6,9 +6,11 @@ import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.v4.app.DialogFragment;
|
||||
import android.support.v7.app.AlertDialog;
|
||||
import androidx.annotation.NonNull;
|
||||
//import android.support.v4.app.DialogFragment;
|
||||
import androidx.fragment.app.DialogFragment;
|
||||
//import android.support.v7.app.AlertDialog;
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
|
||||
import net.i2p.android.wizard.model.AbstractWizardModel;
|
||||
import net.i2p.android.wizard.ui.AbstractWizardActivity;
|
||||
|
@ -6,13 +6,21 @@ import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.support.v4.app.Fragment;
|
||||
import android.support.v4.app.FragmentManager;
|
||||
import android.support.v4.app.FragmentPagerAdapter;
|
||||
import android.support.v4.app.FragmentTransaction;
|
||||
import android.support.v4.view.MenuItemCompat;
|
||||
import android.support.v4.view.ViewPager;
|
||||
import android.support.v7.widget.SearchView;
|
||||
//import android.support.v4.app.Fragment;
|
||||
import androidx.core.content.ContextCompat;
|
||||
import androidx.fragment.app.Fragment;
|
||||
//import android.support.v4.app.FragmentManager;
|
||||
import androidx.fragment.app.FragmentManager;
|
||||
//import android.support.v4.app.FragmentPagerAdapter;
|
||||
import androidx.fragment.app.FragmentPagerAdapter;
|
||||
//import android.support.v4.app.FragmentTransaction;
|
||||
import androidx.fragment.app.FragmentTransaction;
|
||||
//import android.support.v4.view.MenuItemCompat;
|
||||
import androidx.core.view.MenuItemCompat;
|
||||
//import android.support.v4.view.ViewPager;
|
||||
import androidx.viewpager.widget.ViewPager;
|
||||
//import android.support.v7.widget.SearchView;
|
||||
import androidx.appcompat.widget.SearchView;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuInflater;
|
||||
@ -20,18 +28,27 @@ import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import com.viewpagerindicator.TitlePageIndicator;
|
||||
import net.lucode.hackware.magicindicator.MagicIndicator;
|
||||
import net.lucode.hackware.magicindicator.ViewPagerHelper;
|
||||
import net.lucode.hackware.magicindicator.buildins.commonnavigator.CommonNavigator;
|
||||
|
||||
import net.i2p.android.router.R;
|
||||
import net.i2p.android.router.util.NamingServiceUtil;
|
||||
import net.i2p.android.router.util.Util;
|
||||
import net.i2p.client.naming.NamingService;
|
||||
import net.lucode.hackware.magicindicator.buildins.commonnavigator.abs.CommonNavigatorAdapter;
|
||||
import net.lucode.hackware.magicindicator.buildins.commonnavigator.abs.IPagerIndicator;
|
||||
import net.lucode.hackware.magicindicator.buildins.commonnavigator.abs.IPagerTitleView;
|
||||
import net.lucode.hackware.magicindicator.buildins.commonnavigator.indicators.LinePagerIndicator;
|
||||
import net.lucode.hackware.magicindicator.buildins.commonnavigator.titles.ColorTransitionPagerTitleView;
|
||||
import net.lucode.hackware.magicindicator.buildins.commonnavigator.titles.SimplePagerTitleView;
|
||||
|
||||
public class AddressbookContainer extends Fragment
|
||||
implements AddressbookFragment.OnAddressSelectedListener,
|
||||
SearchView.OnQueryTextListener {
|
||||
public static final int ADD_WIZARD_REQUEST = 1;
|
||||
public static final String ADD_WIZARD_DATA = "add_wizard_data";
|
||||
private MagicIndicator mPageIndicator;
|
||||
|
||||
/**
|
||||
* Whether or not the container is in two-pane mode, i.e. running on a tablet
|
||||
@ -41,7 +58,6 @@ public class AddressbookContainer extends Fragment
|
||||
|
||||
ViewPager mViewPager;
|
||||
FragmentPagerAdapter mFragPagerAdapter;
|
||||
|
||||
private static final String FRAGMENT_ROUTER = "router_fragment";
|
||||
private static final String FRAGMENT_PRIVATE = "private_fragment";
|
||||
private static final int FRAGMENT_ID_ROUTER = 0;
|
||||
@ -66,6 +82,17 @@ public class AddressbookContainer extends Fragment
|
||||
// activity should be in two-pane mode.
|
||||
mTwoPane = true;
|
||||
}
|
||||
|
||||
if (!mTwoPane) {
|
||||
// Initialize ViewPager and adapter first
|
||||
mViewPager = (ViewPager) v.findViewById(R.id.pager);
|
||||
mFragPagerAdapter = new AddressbookPagerAdapter(getActivity(), getChildFragmentManager());
|
||||
mViewPager.setAdapter(mFragPagerAdapter);
|
||||
|
||||
// Then set up MagicIndicator
|
||||
mPageIndicator = v.findViewById(R.id.magic_indicator);
|
||||
setupMagicIndicator();
|
||||
}
|
||||
|
||||
if (savedInstanceState != null) {
|
||||
mRouterFrag = (AddressbookFragment) getChildFragmentManager().getFragment(
|
||||
@ -90,14 +117,6 @@ public class AddressbookContainer extends Fragment
|
||||
ft.commit();
|
||||
}
|
||||
|
||||
if (!mTwoPane) {
|
||||
mViewPager = (ViewPager) v.findViewById(R.id.pager);
|
||||
TitlePageIndicator pageIndicator = (TitlePageIndicator) v.findViewById(R.id.page_indicator);
|
||||
mFragPagerAdapter = new AddressbookPagerAdapter(getActivity(), getChildFragmentManager());
|
||||
mViewPager.setAdapter(mFragPagerAdapter);
|
||||
pageIndicator.setViewPager(mViewPager);
|
||||
}
|
||||
|
||||
return v;
|
||||
}
|
||||
|
||||
@ -250,4 +269,38 @@ public class AddressbookContainer extends Fragment
|
||||
if (mPrivateFrag != null)
|
||||
mPrivateFrag.filterAddresses(query);
|
||||
}
|
||||
|
||||
private void setupMagicIndicator() {
|
||||
if (mPageIndicator == null || mFragPagerAdapter == null || mViewPager == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
CommonNavigator commonNavigator = new CommonNavigator(getContext());
|
||||
commonNavigator.setAdapter(new CommonNavigatorAdapter() {
|
||||
@Override
|
||||
public int getCount() {
|
||||
return mFragPagerAdapter.getCount();
|
||||
}
|
||||
|
||||
@Override
|
||||
public IPagerTitleView getTitleView(Context context, int index) {
|
||||
SimplePagerTitleView titleView = new ColorTransitionPagerTitleView(context);
|
||||
titleView.setText(mFragPagerAdapter.getPageTitle(index));
|
||||
titleView.setNormalColor(ContextCompat.getColor(context, R.color.primary_text_disabled_material_dark));
|
||||
titleView.setSelectedColor(ContextCompat.getColor(context, R.color.primary_text_default_material_dark));
|
||||
titleView.setOnClickListener(v -> mViewPager.setCurrentItem(index));
|
||||
return titleView;
|
||||
}
|
||||
|
||||
@Override
|
||||
public IPagerIndicator getIndicator(Context context) {
|
||||
LinePagerIndicator indicator = new LinePagerIndicator(context);
|
||||
indicator.setColors(ContextCompat.getColor(context, R.color.primary));
|
||||
return indicator;
|
||||
}
|
||||
});
|
||||
|
||||
mPageIndicator.setNavigator(commonNavigator);
|
||||
ViewPagerHelper.bind(mPageIndicator, mViewPager);
|
||||
}
|
||||
}
|
||||
|
@ -6,12 +6,18 @@ import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.IntentFilter;
|
||||
import android.os.Bundle;
|
||||
import android.support.v4.app.Fragment;
|
||||
import android.support.v4.app.LoaderManager;
|
||||
import android.support.v4.content.Loader;
|
||||
import android.support.v4.content.LocalBroadcastManager;
|
||||
import android.support.v7.widget.LinearLayoutManager;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
//import android.support.v4.app.Fragment;
|
||||
import androidx.fragment.app.Fragment;
|
||||
//import android.support.v4.app.LoaderManager;
|
||||
import androidx.loader.app.LoaderManager;
|
||||
//import android.support.v4.content.Loader;
|
||||
import androidx.loader.content.Loader;
|
||||
//import android.support.v4.content.LocalBroadcastManager;
|
||||
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
|
||||
//import android.support.v7.widget.LinearLayoutManager;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
//import android.support.v7.widget.RecyclerView;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
import android.text.TextUtils;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.Menu;
|
||||
|
@ -2,8 +2,10 @@ package net.i2p.android.router.addressbook;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.support.v7.widget.Toolbar;
|
||||
//import android.support.v7.app.AppCompatActivity;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
//import android.support.v7.widget.Toolbar;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
import android.view.View;
|
||||
import android.widget.Button;
|
||||
import android.widget.EditText;
|
||||
|
@ -4,9 +4,11 @@ import android.app.Dialog;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.v4.app.DialogFragment;
|
||||
import android.support.v7.app.AlertDialog;
|
||||
import androidx.annotation.NonNull;
|
||||
//import android.support.v4.app.DialogFragment;
|
||||
import androidx.fragment.app.DialogFragment;
|
||||
//import android.support.v7.app.AlertDialog;
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
import android.text.util.Linkify;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
|
@ -7,9 +7,11 @@ import android.content.pm.PackageManager;
|
||||
import android.content.pm.ResolveInfo;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.v4.app.DialogFragment;
|
||||
import android.support.v7.app.AlertDialog;
|
||||
import androidx.annotation.NonNull;
|
||||
//import android.support.v4.app.DialogFragment;
|
||||
import androidx.fragment.app.DialogFragment;
|
||||
//import android.support.v7.app.AlertDialog;
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
import android.text.util.Linkify;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
|
@ -4,9 +4,11 @@ import android.app.Dialog;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.res.Resources;
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.v4.app.DialogFragment;
|
||||
import android.support.v7.app.AlertDialog;
|
||||
import androidx.annotation.NonNull;
|
||||
//import android.support.v4.app.DialogFragment;
|
||||
import androidx.fragment.app.DialogFragment;
|
||||
//import android.support.v7.app.AlertDialog;
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.widget.TextView;
|
||||
|
@ -3,9 +3,11 @@ package net.i2p.android.router.dialog;
|
||||
import android.app.Dialog;
|
||||
import android.content.DialogInterface;
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.v4.app.DialogFragment;
|
||||
import android.support.v7.app.AlertDialog;
|
||||
import androidx.annotation.NonNull;
|
||||
//import android.support.v4.app.DialogFragment;
|
||||
import androidx.fragment.app.DialogFragment;
|
||||
//import android.support.v7.app.AlertDialog;
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
|
||||
import net.i2p.android.I2PActivityBase;
|
||||
import net.i2p.android.router.MainFragment;
|
||||
|
@ -3,7 +3,8 @@ package net.i2p.android.router.log;
|
||||
import android.content.Intent;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.support.v7.widget.Toolbar;
|
||||
//import android.support.v7.widget.Toolbar;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuInflater;
|
||||
import android.view.MenuItem;
|
||||
|
@ -1,7 +1,8 @@
|
||||
package net.i2p.android.router.log;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.support.v7.widget.Toolbar;
|
||||
//import android.support.v7.widget.Toolbar;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
|
||||
import net.i2p.android.I2PActivityBase;
|
||||
import net.i2p.android.router.R;
|
||||
|
@ -4,9 +4,12 @@ import android.app.Activity;
|
||||
import android.content.Context;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.support.v4.app.ListFragment;
|
||||
import android.support.v4.app.LoaderManager;
|
||||
import android.support.v4.content.Loader;
|
||||
//import android.support.v4.app.ListFragment;
|
||||
import androidx.fragment.app.ListFragment;
|
||||
//import android.support.v4.app.LoaderManager;
|
||||
import androidx.loader.app.LoaderManager;
|
||||
//import android.support.v4.content.Loader;
|
||||
import androidx.loader.content.Loader;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuInflater;
|
||||
import android.view.MenuItem;
|
||||
|
@ -1,7 +1,8 @@
|
||||
package net.i2p.android.router.log;
|
||||
|
||||
import android.content.Context;
|
||||
import android.support.v4.content.AsyncTaskLoader;
|
||||
//import android.support.v4.content.AsyncTaskLoader;
|
||||
import androidx.loader.content.AsyncTaskLoader;
|
||||
|
||||
import net.i2p.I2PAppContext;
|
||||
|
||||
|
@ -2,8 +2,10 @@ package net.i2p.android.router.netdb;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.support.v4.app.Fragment;
|
||||
import android.support.v7.widget.Toolbar;
|
||||
//import android.support.v4.app.Fragment;
|
||||
import androidx.fragment.app.Fragment;
|
||||
//import android.support.v7.widget.Toolbar;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
import android.view.View;
|
||||
import android.widget.AdapterView;
|
||||
import android.widget.ArrayAdapter;
|
||||
|
@ -2,7 +2,8 @@ package net.i2p.android.router.netdb;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.support.v7.widget.Toolbar;
|
||||
//import android.support.v7.widget.Toolbar;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
|
||||
import net.i2p.android.I2PActivityBase;
|
||||
import net.i2p.android.router.R;
|
||||
|
@ -1,7 +1,8 @@
|
||||
package net.i2p.android.router.netdb;
|
||||
|
||||
import android.content.Context;
|
||||
import android.support.v4.content.AsyncTaskLoader;
|
||||
//import android.support.v4.content.AsyncTaskLoader;
|
||||
import androidx.loader.content.AsyncTaskLoader;
|
||||
|
||||
import net.i2p.android.router.util.Util;
|
||||
import net.i2p.data.Destination;
|
||||
|
@ -2,9 +2,12 @@ package net.i2p.android.router.netdb;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
import android.support.v4.app.ListFragment;
|
||||
import android.support.v4.app.LoaderManager;
|
||||
import android.support.v4.content.Loader;
|
||||
//import android.support.v4.app.ListFragment;
|
||||
import androidx.fragment.app.ListFragment;
|
||||
//import android.support.v4.app.LoaderManager;
|
||||
import androidx.loader.app.LoaderManager;
|
||||
//import android.support.v4.content.Loader;
|
||||
import androidx.loader.content.Loader;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuInflater;
|
||||
import android.view.MenuItem;
|
||||
|
@ -1,7 +1,8 @@
|
||||
package net.i2p.android.router.netdb;
|
||||
|
||||
import android.content.Context;
|
||||
import android.support.v4.content.AsyncTaskLoader;
|
||||
//import android.support.v4.content.AsyncTaskLoader;
|
||||
import androidx.loader.content.AsyncTaskLoader;
|
||||
|
||||
import net.i2p.android.router.R;
|
||||
import net.i2p.data.Hash;
|
||||
|
@ -1,12 +1,18 @@
|
||||
package net.i2p.android.router.netdb;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.support.v4.app.Fragment;
|
||||
import android.support.v4.app.FragmentManager;
|
||||
import android.support.v4.app.FragmentStatePagerAdapter;
|
||||
import android.support.v4.app.LoaderManager;
|
||||
import android.support.v4.content.Loader;
|
||||
import android.support.v4.view.ViewPager;
|
||||
//import android.support.v4.app.Fragment;
|
||||
import androidx.fragment.app.Fragment;
|
||||
//import android.support.v4.app.FragmentManager;
|
||||
import androidx.fragment.app.FragmentManager;
|
||||
//import android.support.v4.app.FragmentStatePagerAdapter;
|
||||
import androidx.fragment.app.FragmentStatePagerAdapter;
|
||||
//import android.support.v4.app.LoaderManager;
|
||||
import androidx.loader.app.LoaderManager;
|
||||
//import android.support.v4.content.Loader;
|
||||
import androidx.loader.content.Loader;
|
||||
//import android.support.v4.view.ViewPager;
|
||||
import androidx.viewpager.widget.ViewPager;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuInflater;
|
||||
|
@ -1,7 +1,8 @@
|
||||
package net.i2p.android.router.netdb;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.support.v4.app.Fragment;
|
||||
//import android.support.v4.app.Fragment;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
@ -4,7 +4,10 @@ import android.app.PendingIntent;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.os.Handler;
|
||||
import android.os.Looper;
|
||||
import java.util.concurrent.CountDownLatch;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
|
||||
import net.i2p.android.I2PActivity;
|
||||
import net.i2p.android.I2PActivityBase;
|
||||
@ -22,6 +25,7 @@ import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Properties;
|
||||
|
||||
|
||||
/**
|
||||
* Implements SAMSecureSessionInterface on Android platforms using a Toast
|
||||
* as the interactive channel.
|
||||
@ -45,12 +49,35 @@ public class AndroidSAMSecureSession extends AppCompatActivity implements SAMSec
|
||||
results.put(clientId, 1);
|
||||
}
|
||||
|
||||
public AndroidSAMSecureSession(Context ctx, RouterService rCtx, StatusBar statusBar) {
|
||||
private AndroidSAMSecureSession(Context ctx, RouterService rCtx, StatusBar statusBar) {
|
||||
mCtx = ctx;
|
||||
_routerService = rCtx;
|
||||
_statusBar = statusBar;
|
||||
}
|
||||
|
||||
public static AndroidSAMSecureSession create(Context ctx, RouterService rCtx, StatusBar statusBar) {
|
||||
if (Looper.getMainLooper().getThread() == Thread.currentThread()) {
|
||||
// We're on the main thread, create directly
|
||||
return new AndroidSAMSecureSession(ctx, rCtx, statusBar);
|
||||
} else {
|
||||
// We're not on the main thread, post to main thread
|
||||
final AndroidSAMSecureSession[] result = new AndroidSAMSecureSession[1];
|
||||
final CountDownLatch latch = new CountDownLatch(1);
|
||||
|
||||
new Handler(Looper.getMainLooper()).post(() -> {
|
||||
result[0] = new AndroidSAMSecureSession(ctx, rCtx, statusBar);
|
||||
latch.countDown();
|
||||
});
|
||||
|
||||
try {
|
||||
latch.await();
|
||||
return result[0];
|
||||
} catch (InterruptedException e) {
|
||||
throw new RuntimeException("Failed to create AndroidSAMSecureSession", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void waitForResult(String clientId) {
|
||||
for (int i=0;i<60;i++) {
|
||||
try {
|
||||
|
@ -180,7 +180,8 @@ class LoadClientsJob extends JobImpl {
|
||||
try {
|
||||
Util.i("Starting the SAM API");
|
||||
Looper.prepare();
|
||||
AndroidSAMSecureSession _androidSecureSession = new AndroidSAMSecureSession(mCtx, _routerService, _statusBar);
|
||||
//AndroidSAMSecureSession _androidSecureSession = new AndroidSAMSecureSession(mCtx, _routerService, _statusBar);
|
||||
AndroidSAMSecureSession _androidSecureSession = AndroidSAMSecureSession.create(mCtx, _routerService, _statusBar);
|
||||
SAMSecureSessionInterface _secureSession = _androidSecureSession;
|
||||
SAM_BRIDGE = new SAMBridge("127.0.0.1",
|
||||
7656,
|
||||
|
@ -1,5 +1,7 @@
|
||||
package net.i2p.android.router.service;
|
||||
|
||||
import static android.content.pm.ServiceInfo.FOREGROUND_SERVICE_TYPE_SPECIAL_USE;
|
||||
|
||||
import android.app.Service;
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.Context;
|
||||
@ -12,7 +14,8 @@ import android.os.IBinder;
|
||||
import android.os.Message;
|
||||
import android.os.RemoteCallbackList;
|
||||
import android.os.RemoteException;
|
||||
import android.support.v4.content.LocalBroadcastManager;
|
||||
//import android.support.v4.content.LocalBroadcastManager;
|
||||
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
|
||||
|
||||
import net.i2p.android.router.R;
|
||||
import net.i2p.android.router.receiver.I2PReceiver;
|
||||
@ -173,11 +176,18 @@ public class RouterService extends Service {
|
||||
// We need to *not* check if we're restarting on Android greater than Oreo due to
|
||||
// changes in how notifications work and the use of NotificationChannels.
|
||||
if(!restart) {
|
||||
startForeground(1337, _statusBar.getNote());
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
|
||||
startForeground(1337, _statusBar.getNote(), FOREGROUND_SERVICE_TYPE_SPECIAL_USE);
|
||||
} else {
|
||||
startForeground(1337, _statusBar.getNote());
|
||||
}
|
||||
} else {
|
||||
if (Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
|
||||
startForeground(1337, _statusBar.getNote());
|
||||
}
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
|
||||
startForeground(1337, _statusBar.getNote(), FOREGROUND_SERVICE_TYPE_SPECIAL_USE);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -7,7 +7,8 @@ import android.app.PendingIntent;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.os.Build;
|
||||
import android.support.v4.app.NotificationCompat;
|
||||
//import android.support.v4.app.NotificationCompat;
|
||||
import androidx.core.app.NotificationCompat;
|
||||
import android.view.Gravity;
|
||||
import android.widget.Toast;
|
||||
|
||||
@ -140,6 +141,7 @@ class StatusBar {
|
||||
mNotificationManager.createNotificationChannel(mNotificationChannel);
|
||||
mNotificationChannel.setLockscreenVisibility(Notification.VISIBILITY_PRIVATE);
|
||||
mNotifyBuilder.setChannelId(NOTIFICATION_CHANNEL_ID);
|
||||
//
|
||||
}
|
||||
mNotif = mNotifyBuilder.build();
|
||||
mNotificationManager.notify(ID, mNotif);
|
||||
|
@ -1,7 +1,8 @@
|
||||
package net.i2p.android.router.stats;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.support.v7.widget.Toolbar;
|
||||
//import android.support.v7.widget.Toolbar;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
|
||||
import net.i2p.android.I2PActivityBase;
|
||||
import net.i2p.android.router.R;
|
||||
|
@ -3,8 +3,10 @@ package net.i2p.android.router.stats;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.support.v7.app.AlertDialog;
|
||||
import android.support.v7.widget.Toolbar;
|
||||
//import android.support.v7.app.AlertDialog;
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
//import android.support.v7.widget.Toolbar;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
import android.view.View;
|
||||
import android.widget.AdapterView;
|
||||
import android.widget.ArrayAdapter;
|
||||
|
@ -3,7 +3,7 @@ package net.i2p.android.router.stats;
|
||||
import android.graphics.Color;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.support.annotation.NonNull;
|
||||
import androidx.annotation.NonNull;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
@ -1,7 +1,8 @@
|
||||
package net.i2p.android.router.util;
|
||||
|
||||
import android.content.Context;
|
||||
import android.support.v4.content.AsyncTaskLoader;
|
||||
//import android.support.v4.content.AsyncTaskLoader;
|
||||
import androidx.loader.content.AsyncTaskLoader;
|
||||
|
||||
public abstract class BetterAsyncTaskLoader<T> extends AsyncTaskLoader<T> {
|
||||
protected T mData;
|
||||
|
@ -8,7 +8,8 @@ import android.app.PendingIntent;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.os.Build;
|
||||
import android.support.v4.app.NotificationCompat;
|
||||
//import android.support.v4.app.NotificationCompat;
|
||||
import androidx.core.app.NotificationCompat;
|
||||
|
||||
public class Notifications {
|
||||
private final Context mCtx;
|
||||
|
@ -6,7 +6,8 @@ import android.content.DialogInterface;
|
||||
import android.graphics.Bitmap;
|
||||
import android.net.Uri;
|
||||
import android.os.AsyncTask;
|
||||
import android.support.v4.app.Fragment;
|
||||
//import android.support.v4.app.Fragment;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import android.view.Gravity;
|
||||
import android.view.View;
|
||||
import android.webkit.HttpAuthHandler;
|
||||
|
@ -1,7 +1,8 @@
|
||||
package net.i2p.android.util;
|
||||
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import androidx.annotation.NonNull;
|
||||
//import android.support.v7.widget.RecyclerView;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
@ -1,7 +1,9 @@
|
||||
package net.i2p.android.util;
|
||||
|
||||
import android.support.v4.app.Fragment;
|
||||
import android.support.v4.app.FragmentActivity;
|
||||
//import android.support.v4.app.Fragment;
|
||||
import androidx.fragment.app.Fragment;
|
||||
//import android.support.v4.app.FragmentActivity;
|
||||
import androidx.fragment.app.FragmentActivity;
|
||||
|
||||
public class FragmentUtils {
|
||||
public interface TwoPaneProvider {
|
||||
|
@ -1,8 +1,11 @@
|
||||
package net.i2p.android.util;
|
||||
|
||||
import android.support.v4.app.Fragment;
|
||||
import android.support.v4.app.FragmentManager;
|
||||
import android.support.v4.app.FragmentPagerAdapter;
|
||||
//import android.support.v4.app.Fragment;
|
||||
import androidx.fragment.app.Fragment;
|
||||
//import android.support.v4.app.FragmentManager;
|
||||
import androidx.fragment.app.FragmentManager;
|
||||
//import android.support.v4.app.FragmentPagerAdapter;
|
||||
import androidx.fragment.app.FragmentPagerAdapter;
|
||||
import android.util.SparseArray;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
|
@ -21,8 +21,10 @@ import android.content.res.TypedArray;
|
||||
import android.graphics.Canvas;
|
||||
import android.graphics.Rect;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.support.v7.widget.LinearLayoutManager;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
//import android.support.v7.widget.LinearLayoutManager;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
//import android.support.v7.widget.RecyclerView;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
import android.view.View;
|
||||
|
||||
public class DividerItemDecoration extends RecyclerView.ItemDecoration {
|
||||
|
@ -23,7 +23,8 @@ import android.content.res.TypedArray;
|
||||
import android.graphics.Canvas;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.graphics.drawable.NinePatchDrawable;
|
||||
import android.support.v4.view.ViewCompat;
|
||||
//import android.support.v4.view.ViewCompat;
|
||||
import androidx.core.view.ViewCompat;
|
||||
import android.util.AttributeSet;
|
||||
import android.widget.FrameLayout;
|
||||
|
||||
|
@ -1,7 +1,8 @@
|
||||
package net.i2p.android.widget;
|
||||
|
||||
import android.content.Context;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
//import android.support.v7.widget.RecyclerView;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
import android.util.AttributeSet;
|
||||
import android.view.View;
|
||||
|
||||
|
@ -19,8 +19,10 @@ package net.i2p.android.widget;
|
||||
import android.content.Context;
|
||||
import android.graphics.Typeface;
|
||||
import android.os.Build;
|
||||
import android.support.v4.view.PagerAdapter;
|
||||
import android.support.v4.view.ViewPager;
|
||||
//import android.support.v4.view.PagerAdapter;
|
||||
import androidx.viewpager.widget.PagerAdapter;
|
||||
//import android.support.v4.view.ViewPager;
|
||||
import androidx.viewpager.widget.ViewPager;
|
||||
import android.util.AttributeSet;
|
||||
import android.util.SparseArray;
|
||||
import android.util.TypedValue;
|
||||
|
@ -18,7 +18,8 @@ package net.i2p.android.wizard.model;
|
||||
|
||||
import net.i2p.android.wizard.ui.SingleChoiceFragment;
|
||||
|
||||
import android.support.v4.app.Fragment;
|
||||
//import android.support.v4.app.Fragment;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import android.text.TextUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
@ -2,7 +2,8 @@ package net.i2p.android.wizard.model;
|
||||
|
||||
import java.util.Locale;
|
||||
|
||||
import android.support.v4.app.Fragment;
|
||||
//import android.support.v4.app.Fragment;
|
||||
import androidx.fragment.app.Fragment;
|
||||
|
||||
import net.i2p.I2PAppContext;
|
||||
import net.i2p.android.wizard.ui.I2PDestinationFragment;
|
||||
|
@ -18,7 +18,8 @@ package net.i2p.android.wizard.model;
|
||||
|
||||
import net.i2p.android.wizard.ui.MultipleChoiceFragment;
|
||||
|
||||
import android.support.v4.app.Fragment;
|
||||
//import android.support.v4.app.Fragment;
|
||||
import androidx.fragment.app.Fragment;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
|
@ -18,7 +18,8 @@
|
||||
package net.i2p.android.wizard.model;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.support.v4.app.Fragment;
|
||||
//import android.support.v4.app.Fragment;
|
||||
import androidx.fragment.app.Fragment;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
@ -20,7 +20,8 @@ import java.util.ArrayList;
|
||||
|
||||
import net.i2p.android.wizard.ui.SingleBooleanFragment;
|
||||
|
||||
import android.support.v4.app.Fragment;
|
||||
//import android.support.v4.app.Fragment;
|
||||
import androidx.fragment.app.Fragment;
|
||||
|
||||
public class SingleFixedBooleanPage extends Page {
|
||||
protected String mDesc = "";
|
||||
|
@ -18,7 +18,8 @@ package net.i2p.android.wizard.model;
|
||||
|
||||
import net.i2p.android.wizard.ui.SingleChoiceFragment;
|
||||
|
||||
import android.support.v4.app.Fragment;
|
||||
//import android.support.v4.app.Fragment;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import android.text.TextUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
@ -18,7 +18,8 @@ package net.i2p.android.wizard.model;
|
||||
|
||||
import net.i2p.android.wizard.ui.SingleTextFieldFragment;
|
||||
|
||||
import android.support.v4.app.Fragment;
|
||||
//import android.support.v4.app.Fragment;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import android.text.TextUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
@ -1,12 +1,18 @@
|
||||
package net.i2p.android.wizard.ui;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.support.v4.app.DialogFragment;
|
||||
import android.support.v4.app.Fragment;
|
||||
import android.support.v4.app.FragmentActivity;
|
||||
import android.support.v4.app.FragmentManager;
|
||||
import android.support.v4.app.FragmentStatePagerAdapter;
|
||||
import android.support.v4.view.ViewPager;
|
||||
//import android.support.v4.app.DialogFragment;
|
||||
import androidx.fragment.app.DialogFragment;
|
||||
//import android.support.v4.app.Fragment;
|
||||
import androidx.fragment.app.Fragment;
|
||||
//import android.support.v4.app.FragmentActivity;
|
||||
import androidx.fragment.app.FragmentActivity;
|
||||
//import android.support.v4.app.FragmentManager;
|
||||
import androidx.fragment.app.FragmentManager;
|
||||
//import android.support.v4.app.FragmentStatePagerAdapter;
|
||||
import androidx.fragment.app.FragmentStatePagerAdapter;
|
||||
//import android.support.v4.view.ViewPager;
|
||||
import androidx.viewpager.widget.ViewPager;
|
||||
import android.util.TypedValue;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
@ -21,7 +21,8 @@ import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.support.v4.app.Fragment;
|
||||
//import android.support.v4.app.Fragment;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import android.text.Editable;
|
||||
import android.text.TextWatcher;
|
||||
import android.view.LayoutInflater;
|
||||
|
@ -20,7 +20,8 @@ package net.i2p.android.wizard.ui;
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.support.v4.app.ListFragment;
|
||||
//import android.support.v4.app.ListFragment;
|
||||
import androidx.fragment.app.ListFragment;
|
||||
import android.util.SparseBooleanArray;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
|
@ -25,7 +25,10 @@ import net.i2p.android.wizard.model.ReviewItem;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
import android.support.v4.app.ListFragment;
|
||||
//import android.support.v4.app.ListFragment;
|
||||
import androidx.fragment.app.ListFragment;
|
||||
//import android.support.v4.app.Fragment;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import android.text.TextUtils;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
|
@ -18,7 +18,8 @@ package net.i2p.android.wizard.ui;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
import android.support.v4.app.Fragment;
|
||||
//import android.support.v4.app.Fragment;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
@ -24,7 +24,8 @@ import net.i2p.android.wizard.model.SingleFixedChoicePage;
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.support.v4.app.ListFragment;
|
||||
//import android.support.v4.app.ListFragment;
|
||||
import androidx.fragment.app.ListFragment;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
@ -23,7 +23,8 @@ import net.i2p.android.wizard.model.SingleTextFieldPage;
|
||||
import android.app.Activity;
|
||||
import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
import android.support.v4.app.Fragment;
|
||||
//import android.support.v4.app.Fragment;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import android.text.Editable;
|
||||
import android.text.InputType;
|
||||
import android.text.TextWatcher;
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user