Compare commits
73 Commits
2.3.0-tran
...
i2p-androi
Author | SHA1 | Date | |
---|---|---|---|
bf2dea5e0a | |||
2d784dbef2 | |||
554a65987b | |||
846795dea6 | |||
7a22ce4bee | |||
0e25d89bd8 | |||
61010b2c93 | |||
5fac82a915 | |||
c8c36540eb | |||
59b1da6950 | |||
40894d8d04 | |||
d0f38397cd | |||
17b86fffdd | |||
a06b449bfb | |||
128f1df0ac | |||
ed085194e6 | |||
52a4c2f430 | |||
784918d220 | |||
f129773255 | |||
b304771eca | |||
f87e8d036b | |||
16c1277935 | |||
a6aa76f9dd | |||
a0ced4133d | |||
e024950567 | |||
ea68f116e1 | |||
3cb746594c | |||
27adae63eb | |||
85890d3b68 | |||
96b045eb2a | |||
8d00c5fa31 | |||
fc93a71552 | |||
18e4aef4ca | |||
5315e35adc | |||
9ad9bc07ff | |||
bde92be29d | |||
849150ffa6 | |||
52dad19c7a | |||
e84a51097d | |||
5289f5068a | |||
09c7d9cfd8 | |||
14d293fe6f | |||
7cd08cfd4c | |||
aa22d83a44 | |||
a1fd8d41b2 | |||
9d24e68b57 | |||
d5e2804ea4 | |||
1edabd7252 | |||
52c1901eba | |||
a6f5221975 | |||
caa57bbc3a | |||
b28e5d741e | |||
0f3a61390c | |||
30a1f1d800 | |||
22d5d126f6 | |||
70e4ea810f | |||
b5c6e1489a | |||
333a1a49b1 | |||
2ea93f106e | |||
d99ed0e5da | |||
3881966ddb | |||
9de9f46489 | |||
149881522e | |||
df26d89310 | |||
707dcbbc78 | |||
812aea9873 | |||
aeb7614b62 | |||
9bf9d27c5a | |||
f2cfe4cee5 | |||
45865ff5b9 | |||
96f9905952 | |||
41ca3fe527 | |||
c5468e4829 |
73
.github/workflows/ant.yml
vendored
Normal file
73
.github/workflows/ant.yml
vendored
Normal file
@ -0,0 +1,73 @@
|
||||
# Mostly copied from https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-java-with-ant
|
||||
# zlatinb
|
||||
|
||||
name: Java CI
|
||||
|
||||
on: [push]
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
pages: write
|
||||
id-token: write
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: GetText
|
||||
run: sudo apt install gettext git
|
||||
- uses: actions/checkout@v4
|
||||
- name: Set up JDK 11
|
||||
uses: actions/setup-java@v4
|
||||
with:
|
||||
java-version: '11'
|
||||
distribution: 'temurin'
|
||||
- name : Generate override.properties
|
||||
run: |
|
||||
rm -f override.properties
|
||||
echo "build.built-by=GitHub Actions" >> override.properties
|
||||
echo "noExe=true" >> override.properties
|
||||
- name: build with Gradle
|
||||
run: |
|
||||
echo "i2psrc=$HOME/i2p.i2p" > routerjars/local.properties
|
||||
git clone -b i2p-2.4.0 https://github.com/i2p/i2p.i2p "$HOME/i2p.i2p"
|
||||
./gradlew assembleDebug
|
||||
find . -name '*.apk'
|
||||
- name: Upload i2p-debug-${{ github.sha }}.apk
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: i2p-debug.apk
|
||||
path: ./app/build/outputs/apk/free/debug/app-free-debug.apk
|
||||
|
||||
trunk:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: GetText
|
||||
run: sudo apt install gettext git
|
||||
- uses: actions/checkout@v4
|
||||
- name: Set up JDK 11
|
||||
uses: actions/setup-java@v4
|
||||
with:
|
||||
java-version: '11'
|
||||
distribution: 'temurin'
|
||||
- name : Generate override.properties
|
||||
run: |
|
||||
rm -f override.properties
|
||||
echo "build.built-by=GitHub Actions" >> override.properties
|
||||
echo "noExe=true" >> override.properties
|
||||
grep -v I2P_ gradle.properties > gradle.properties.update
|
||||
echo "I2P_VERSION=2.5.0-1" >> gradle.properties.update
|
||||
echo "I2P_ANDROID_VERSION=2.5.0-1" >> gradle.properties.update
|
||||
cp -v gradle.properties.update gradle.properties
|
||||
- name: build with Gradle
|
||||
run: |
|
||||
echo "i2psrc=$HOME/i2p.i2p" > routerjars/local.properties
|
||||
git clone -b master https://github.com/i2p/i2p.i2p "$HOME/i2p.i2p"
|
||||
bash -c "cd $HOME/i2p.i2p && ./installer/resources/maven-dev-release.sh 1"
|
||||
./gradlew assembleDebug
|
||||
find . -name '*.apk'
|
||||
- name: Upload i2p-debug-${{ github.sha }}.apk
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: i2p-debug-trunk-${{ github.sha }}.apk
|
||||
path: ./app/build/outputs/apk/free/debug/app-free-debug.apk
|
22
.github/workflows/github-sync.yml
vendored
Normal file
22
.github/workflows/github-sync.yml
vendored
Normal file
@ -0,0 +1,22 @@
|
||||
# File: .github/workflows/github-sync.yml for i2p-hackers/i2p.android.base
|
||||
on:
|
||||
schedule:
|
||||
- cron: "*/5 * * * *"
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
repo-sync:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
persist-credentials: false
|
||||
- name: repo-sync
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
uses: repo-sync/github-sync@v2
|
||||
with:
|
||||
source_repo: "https://i2pgit.org/i2p-hackers/i2p.android.base"
|
||||
source_branch: "master"
|
||||
destination_branch: "master"
|
||||
github_token: ${{ secrets.PAT }}
|
62
.github/workflows/release.yml
vendored
Normal file
62
.github/workflows/release.yml
vendored
Normal file
@ -0,0 +1,62 @@
|
||||
name: Release
|
||||
|
||||
#on: [push]
|
||||
|
||||
on:
|
||||
push:
|
||||
# Sequence of patterns matched against refs/tags
|
||||
tags:
|
||||
- 'i2p-android-*.*.*' # Release i2p-firefox-1.2.3
|
||||
- 'i2p-android-*.*.*-*' # Release i2p-firefox-1.2.3
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: write
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
sparse-checkout: |
|
||||
CHANGELOG.md
|
||||
sparse-checkout-cone-mode: false
|
||||
- name: sleep 6 minutes
|
||||
run: |
|
||||
echo "sleeping 6 minutes to wait for artifacts"
|
||||
sleep 1m
|
||||
echo "sleeping 5 minutes to wait for artifacts"
|
||||
sleep 1m
|
||||
echo "sleeping 4 minutes to wait for artifacts"
|
||||
sleep 1m
|
||||
echo "sleeping 3 minutes to wait for artifacts"
|
||||
sleep 1m
|
||||
echo "sleeping 2 minutes to wait for artifacts"
|
||||
sleep 1m
|
||||
echo "sleeping 1 minutes to wait for artifacts"
|
||||
sleep 1m
|
||||
- name: Download artifacts
|
||||
id: download-artifact
|
||||
uses: dawidd6/action-download-artifact@v3
|
||||
with:
|
||||
skip_unpack: true
|
||||
workflow: ant.yml
|
||||
if_no_artifact_found: fail
|
||||
# remove .zip file extension
|
||||
#- run: for f in *.zip; do unzip "$f"; rm "$f"; done
|
||||
- run: unzip i2p-debug.apk.zip
|
||||
- run: echo "" | tee -a RELEASE.md
|
||||
- run: echo "## Checksums" | tee -a RELEASE.md
|
||||
- run: echo "" | tee -a RELEASE.md
|
||||
- run: echo '```' | tee -a RELEASE.md
|
||||
- run: sha256sum * | tee -a RELEASE.md
|
||||
- run: echo '```' | tee -a RELEASE.md
|
||||
- run: echo "" | tee -a RELEASE.md
|
||||
- run: echo '```' | tee -a RELEASE.md
|
||||
- run: file * | tee -a RELEASE.md
|
||||
- run: echo '```' | tee -a RELEASE.md
|
||||
- run: echo "" | tee -a RELEASE.md
|
||||
- name: Upload artifacts
|
||||
uses: ncipollo/release-action@v1
|
||||
with:
|
||||
artifacts: "*"
|
||||
bodyFile: "RELEASE.md"
|
95
.github/workflows/sign.yml
vendored
Normal file
95
.github/workflows/sign.yml
vendored
Normal file
@ -0,0 +1,95 @@
|
||||
# Mostly copied from https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-java-with-ant
|
||||
# zlatinb
|
||||
|
||||
name: Java Signed CI
|
||||
|
||||
on: [push]
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
pages: write
|
||||
id-token: write
|
||||
|
||||
jobs:
|
||||
build-signed:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: GetText
|
||||
run: sudo apt install gettext git
|
||||
- uses: actions/checkout@v4
|
||||
- name: Set up JDK 11
|
||||
uses: actions/setup-java@v4
|
||||
with:
|
||||
java-version: '11'
|
||||
distribution: 'temurin'
|
||||
- name: Generate override.properties
|
||||
env:
|
||||
DEV_SIGNING_KEY: ${{ secrets.DEV_SIGNING_KEY }}
|
||||
DEV_PASSWORD: ${{ secrets.DEV_PASSWORD }}
|
||||
run: |
|
||||
rm -f override.properties
|
||||
mv etc/github.gradle.properties gradle.properties
|
||||
mv etc/github.signing.properties signing.properties
|
||||
mkdir -p $HOME/keystores/
|
||||
echo $DEV_SIGNING_KEY | base64 --decode > $HOME/keystores/android-release.keystore
|
||||
echo "KEY_ALIAS=mykey" >> signing.properties
|
||||
echo "KEY_PASSWORD=$DEV_PASSWORD" >> signing.properties
|
||||
echo "build.built-by=GitHub Actions" >> override.properties
|
||||
echo "noExe=true" >> override.properties
|
||||
- name: build with Gradle
|
||||
run: |
|
||||
echo "i2psrc=$HOME/i2p.i2p" > routerjars/local.properties
|
||||
git clone -b i2p-2.4.0 https://github.com/i2p/i2p.i2p "$HOME/i2p.i2p"
|
||||
./gradlew assembleRelease
|
||||
find . -name '*.apk'
|
||||
ls -lah $HOME/keystores/android-release.keystore
|
||||
ls -d $HOME
|
||||
- name: Upload i2p-debug-${{ github.sha }}.apk
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: i2p-debug.apk
|
||||
path: ./app/build/outputs/apk/free/debug/app-free-debug.apk
|
||||
|
||||
trunk-signed:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: GetText
|
||||
run: sudo apt install gettext git
|
||||
- uses: actions/checkout@v4
|
||||
- name: Set up JDK 11
|
||||
uses: actions/setup-java@v4
|
||||
with:
|
||||
java-version: '11'
|
||||
distribution: 'temurin'
|
||||
- name: Generate override.properties
|
||||
env:
|
||||
DEV_SIGNING_KEY: ${{ secrets.DEV_SIGNING_KEY }}
|
||||
DEV_PASSWORD: ${{ secrets.DEV_PASSWORD }}
|
||||
run: |
|
||||
rm -f override.properties
|
||||
echo "build.built-by=GitHub Actions" >> override.properties
|
||||
echo "noExe=true" >> override.properties
|
||||
mv etc/github.gradle.properties gradle.properties
|
||||
mv etc/github.signing.properties signing.properties
|
||||
mkdir -p $HOME/keystores/
|
||||
echo $DEV_SIGNING_KEY | base64 --decode > $HOME/keystores/android-release.keystore
|
||||
echo "KEY_ALIAS=mykey" >> signing.properties
|
||||
echo "KEY_PASSWORD=$DEV_PASSWORD" >> signing.properties
|
||||
grep -v I2P_ gradle.properties > gradle.properties.update
|
||||
echo "I2P_VERSION=2.5.0-1" >> gradle.properties.update
|
||||
echo "I2P_ANDROID_VERSION=2.5.0-1" >> gradle.properties.update
|
||||
cp -v gradle.properties.update gradle.properties
|
||||
- name: build with Gradle
|
||||
run: |
|
||||
echo "i2psrc=$HOME/i2p.i2p" > routerjars/local.properties
|
||||
git clone -b master https://github.com/i2p/i2p.i2p "$HOME/i2p.i2p"
|
||||
bash -c "cd $HOME/i2p.i2p && ./installer/resources/maven-dev-release.sh 1"
|
||||
./gradlew assembleRelease
|
||||
find . -name '*.apk'
|
||||
ls -lah $HOME/keystores/android-release.keystore
|
||||
ls -d $HOME
|
||||
- name: Upload i2p-debug-${{ github.sha }}.apk
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: i2p-debug-trunk-${{ github.sha }}.apk
|
||||
path: ./app/build/outputs/apk/free/debug/app-free-debug.apk
|
24
.tx/config
24
.tx/config
@ -1,18 +1,18 @@
|
||||
[main]
|
||||
host = https://www.transifex.com
|
||||
lang_map = he: iw, id: in, pt_BR: pt-rBR, ru_RU: ru, sv_SE: sv, tr_TR: tr, uk_UA: uk, yi: ji, zh_CN: zh, zh_TW: zh-rTW
|
||||
host = https://www.transifex.com
|
||||
lang_map = pt_BR: pt-rBR, yi: ji, zh_CN: zh, zh_TW: zh-rTW, id: in, ru_RU: ru, sv_SE: sv, tr_TR: tr, uk_UA: uk, he: iw, es_AR: es-rAR
|
||||
|
||||
[I2P.android]
|
||||
file_filter = app/src/main/res/values-<lang>/strings.xml
|
||||
[o:otf:p:I2P:r:android]
|
||||
file_filter = app/src/main/res/values-<lang>/strings.xml
|
||||
source_file = app/src/main/res/values/strings.xml
|
||||
source_lang = en
|
||||
type = ANDROID
|
||||
minimum_perc = 22
|
||||
source_file = app/src/main/res/values/strings.xml
|
||||
source_lang = en
|
||||
type = ANDROID
|
||||
|
||||
[I2P.android_lib_helper]
|
||||
file_filter = lib/helper/src/main/res/values-<lang>/strings.xml
|
||||
[o:otf:p:I2P:r:android_lib_helper]
|
||||
file_filter = lib/helper/src/main/res/values-<lang>/strings.xml
|
||||
source_file = lib/helper/src/main/res/values/strings.xml
|
||||
source_lang = en
|
||||
type = ANDROID
|
||||
minimum_perc = 50
|
||||
source_file = lib/helper/src/main/res/values/strings.xml
|
||||
source_lang = en
|
||||
type = ANDROID
|
||||
|
||||
|
@ -1,3 +1,9 @@
|
||||
2.4.0
|
||||
* Update I2P Library
|
||||
|
||||
2.3.0
|
||||
* Update I2P Library
|
||||
|
||||
2.2.0
|
||||
* Add blocklist feed support
|
||||
* Fix translations on stats page
|
||||
|
@ -33,7 +33,7 @@ translation.
|
||||
5. Ensure you have the Mockito framework and accompanying documentation in your $JAVA_HOME
|
||||
6. Ensure to have updated the changelog with the changes done.
|
||||
7. Ensure that you are configured to build i2p.i2p with Java 8. On Debian it is easiest to set with
|
||||
`update-java-alternatives --set java-8-openjdk-amd64` and picking Java 8. **TODO:** add instructions for non-Debian-based
|
||||
`update-java-alternatives --set java-1.8.0-openjdk-amd64` and picking Java 8. **TODO:** add instructions for non-Debian-based
|
||||
systems.
|
||||
8. Ensure that you have a Java 1.7 bootclasspath available. (See **Maven Central** step 2A.)
|
||||
|
||||
@ -76,8 +76,8 @@ app. After doing the Maven release, follow these steps in the i2p.android.base r
|
||||
the `docker run` step described in `DOCKER.md`
|
||||
|
||||
1. Edit `routerjars/local.properties` to use the clean i2p.i2p copy.
|
||||
2. Pull the latest translations with `tx pull -a -f` and commit them. (If you don't have the `tx` command,
|
||||
do `pip install transifex-client` )
|
||||
2. Pull the latest translations with `tx pull --use-git-timestamps` and commit them. (If you don't have the `tx` command,
|
||||
do `pip install transifex-client` ). If there are broken translations, exclude them and only them.
|
||||
- If there are any new translations, `mtn add` them, and add them to `app/src/main/res/values/arrays.xml`
|
||||
(two places, alphabetical order please)
|
||||
3. Ensure that `signing.properties` contains the details of the release key. If you are using Docker, see
|
||||
|
@ -1,14 +1,16 @@
|
||||
apply plugin: 'com.android.application'
|
||||
|
||||
repositories {
|
||||
mavenLocal()
|
||||
mavenCentral()
|
||||
jcenter()
|
||||
maven { url 'https://jitpack.io' }
|
||||
}
|
||||
|
||||
android {
|
||||
namespace 'net.i2p.android.router'
|
||||
compileSdkVersion Integer.parseInt(project.ANDROID_BUILD_TARGET_SDK_VERSION as String)
|
||||
defaultConfig {
|
||||
versionCode 4745279
|
||||
versionCode Integer.parseInt(project.I2P_ANDROID_VERSION_CODE as String)
|
||||
versionName "$I2P_ANDROID_VERSION"
|
||||
minSdkVersion 21
|
||||
targetSdkVersion Integer.parseInt(project.ANDROID_BUILD_TARGET_SDK_VERSION as String)
|
||||
@ -64,28 +66,34 @@ 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.4.1'
|
||||
implementation 'com.androidplot:androidplot-core:1.5.11'
|
||||
implementation 'com.eowise:recyclerview-stickyheaders:0.5.2@aar'
|
||||
implementation 'com.inkapplications.viewpageindicator:library:2.4.4'
|
||||
//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"
|
||||
implementation "net.i2p.client:mstreaming:$I2P_VERSION"
|
||||
implementation "net.i2p.client:streaming:$I2P_VERSION"
|
||||
implementation 'net.i2p.android.ext:floatingactionbutton:1.10.1'
|
||||
implementation 'org.sufficientlysecure:html-textview:3.1'
|
||||
implementation 'com.github.SufficientlySecure:html-textview:v3.6'
|
||||
// Testing-only dependencies
|
||||
androidTestImplementation('com.android.support.test.espresso:espresso-core:3.0.2') {
|
||||
exclude group: 'com.android.support', module: 'support-annotations'
|
||||
@ -93,9 +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')
|
||||
|
@ -1,39 +1,43 @@
|
||||
package net.i2p.android;
|
||||
|
||||
import android.test.ActivityInstrumentationTestCase2;
|
||||
import androidx.test.core.app.ActivityScenario;
|
||||
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
||||
|
||||
import net.i2p.android.router.R;
|
||||
|
||||
import static android.support.test.espresso.Espresso.closeSoftKeyboard;
|
||||
import static android.support.test.espresso.Espresso.onView;
|
||||
import static android.support.test.espresso.Espresso.openActionBarOverflowOrOptionsMenu;
|
||||
import static android.support.test.espresso.Espresso.pressBack;
|
||||
import static android.support.test.espresso.action.ViewActions.click;
|
||||
import static android.support.test.espresso.action.ViewActions.swipeLeft;
|
||||
import static android.support.test.espresso.assertion.ViewAssertions.doesNotExist;
|
||||
import static android.support.test.espresso.assertion.ViewAssertions.matches;
|
||||
import static android.support.test.espresso.matcher.ViewMatchers.hasSibling;
|
||||
import static android.support.test.espresso.matcher.ViewMatchers.isDescendantOfA;
|
||||
import static android.support.test.espresso.matcher.ViewMatchers.isDisplayed;
|
||||
import static android.support.test.espresso.matcher.ViewMatchers.withId;
|
||||
import static android.support.test.espresso.matcher.ViewMatchers.withParent;
|
||||
import static android.support.test.espresso.matcher.ViewMatchers.withText;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
|
||||
import static androidx.test.espresso.Espresso.closeSoftKeyboard;
|
||||
import static androidx.test.espresso.Espresso.onView;
|
||||
import static androidx.test.espresso.Espresso.openActionBarOverflowOrOptionsMenu;
|
||||
import static androidx.test.espresso.Espresso.pressBack;
|
||||
import static androidx.test.espresso.action.ViewActions.click;
|
||||
import static androidx.test.espresso.action.ViewActions.swipeLeft;
|
||||
import static androidx.test.espresso.assertion.ViewAssertions.doesNotExist;
|
||||
import static androidx.test.espresso.assertion.ViewAssertions.matches;
|
||||
import static androidx.test.espresso.matcher.ViewMatchers.hasSibling;
|
||||
import static androidx.test.espresso.matcher.ViewMatchers.isDescendantOfA;
|
||||
import static androidx.test.espresso.matcher.ViewMatchers.isDisplayed;
|
||||
import static androidx.test.espresso.matcher.ViewMatchers.withId;
|
||||
import static androidx.test.espresso.matcher.ViewMatchers.withParent;
|
||||
import static androidx.test.espresso.matcher.ViewMatchers.withText;
|
||||
import static androidx.test.platform.app.InstrumentationRegistry.getInstrumentation;
|
||||
import static org.hamcrest.Matchers.allOf;
|
||||
import static org.hamcrest.Matchers.not;
|
||||
|
||||
public class I2PActivityTest extends ActivityInstrumentationTestCase2<I2PActivity> {
|
||||
public I2PActivityTest() {
|
||||
super(I2PActivity.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void setUp() throws Exception {
|
||||
super.setUp();
|
||||
// For each test method invocation, the Activity will not actually be created
|
||||
// until the first time this method is called.
|
||||
getActivity();
|
||||
@RunWith(AndroidJUnit4.class)
|
||||
public class I2PActivityTest {
|
||||
|
||||
private ActivityScenario<I2PActivity> scenario;
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
scenario = ActivityScenario.launch(I2PActivity.class);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testMainTabs() {
|
||||
onView(withId(R.id.router_onoff_button)).check(matches(isDisplayed()));
|
||||
|
||||
@ -55,6 +59,7 @@ public class I2PActivityTest extends ActivityInstrumentationTestCase2<I2PActivit
|
||||
onView(withId(R.id.router_onoff_button)).check(matches(isDisplayed()));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testMainSwipe() {
|
||||
onView(withId(R.id.router_onoff_button)).check(matches(isDisplayed()));
|
||||
|
||||
@ -70,9 +75,10 @@ public class I2PActivityTest extends ActivityInstrumentationTestCase2<I2PActivit
|
||||
// TODO: test addressbook ViewPager
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSettingsNavigation() {
|
||||
// Open settings menu
|
||||
openActionBarOverflowOrOptionsMenu(getActivity());
|
||||
openActionBarOverflowOrOptionsMenu(getInstrumentation().getTargetContext());
|
||||
onView(withText(R.string.menu_settings)).perform(click());
|
||||
|
||||
// Open bandwidth page
|
||||
@ -106,4 +112,4 @@ public class I2PActivityTest extends ActivityInstrumentationTestCase2<I2PActivit
|
||||
pressBack();
|
||||
onView(withText(R.string.settings_label_advanced)).check(doesNotExist());
|
||||
}
|
||||
}
|
||||
}
|
@ -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;
|
||||
|
@ -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,23 @@
|
||||
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.view.LayoutInflater;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuInflater;
|
||||
@ -19,7 +27,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 +70,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 +99,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 +120,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) {
|
||||
@ -311,4 +334,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 android.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;
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user