@@ -86,6 +86,8 @@ dependencies { | |||
implementation "com.google.code.gson:gson:$gsonVersion" | |||
implementation "com.squareup.retrofit2:retrofit:$retrofitVersion" | |||
implementation "com.squareup.retrofit2:converter-gson:$converterGsonVersion" | |||
implementation 'androidx.appcompat:appcompat:1.1.0' | |||
implementation 'androidx.constraintlayout:constraintlayout:1.1.3' | |||
} | |||
tasks.withType(JavaCompile) { | |||
@@ -35,39 +35,40 @@ | |||
android:roundIcon="@mipmap/ic_launcher_round" | |||
android:supportsRtl="true" | |||
android:theme="@style/AppTheme"> | |||
<activity android:name=".activity.MainActivity"> | |||
<intent-filter> | |||
<action android:name="android.intent.action.MAIN" /> | |||
<category android:name="android.intent.category.LAUNCHER" /> | |||
</intent-filter> | |||
</activity> | |||
<activity android:name=".activity.LoginActivity" /> | |||
<activity | |||
android:name=".activity.TunnelToggleActivity" | |||
android:theme="@style/NoBackgroundTheme" /> | |||
<activity android:name=".activity.MainActivity"> | |||
<activity android:name=".activity.MainWireGuardActivity"> | |||
<intent-filter> | |||
<action android:name="android.intent.action.MAIN" /> | |||
<category android:name="android.intent.category.LAUNCHER" /> | |||
<category android:name="android.intent.category.LEANBACK_LAUNCHER" /> | |||
</intent-filter> | |||
<intent-filter> | |||
<action android:name="android.service.quicksettings.action.QS_TILE_PREFERENCES" /> | |||
</intent-filter> | |||
</activity> | |||
<activity | |||
android:name=".activity.SettingsActivity" | |||
android:label="@string/settings" | |||
android:parentActivityName=".activity.MainActivity" /> | |||
android:parentActivityName=".activity.MainWireGuardActivity" /> | |||
<activity | |||
android:name=".activity.TunnelCreatorActivity" | |||
android:label="@string/create_activity_title" | |||
android:parentActivityName=".activity.MainActivity" /> | |||
android:parentActivityName=".activity.MainWireGuardActivity" /> | |||
<activity | |||
android:name="com.journeyapps.barcodescanner.CaptureActivity" | |||
android:screenOrientation="fullSensor" | |||
tools:replace="screenOrientation" /> | |||
<activity | |||
android:name=".activity.LogViewerActivity" | |||
android:label="@string/log_viewer_title"> | |||
@@ -88,7 +89,6 @@ | |||
<action android:name="android.intent.action.BOOT_COMPLETED" /> | |||
</intent-filter> | |||
</receiver> | |||
<receiver | |||
android:name=".model.TunnelManager$IntentReceiver" | |||
android:permission="${applicationId}.permission.CONTROL_TUNNELS"> | |||
@@ -103,7 +103,6 @@ | |||
android:name=".QuickTileService" | |||
android:icon="@drawable/ic_tile" | |||
android:permission="android.permission.BIND_QUICK_SETTINGS_TILE"> | |||
<intent-filter> | |||
<action android:name="android.service.quicksettings.action.QS_TILE" /> | |||
</intent-filter> | |||
@@ -113,4 +112,5 @@ | |||
android:value="false" /> | |||
</service> | |||
</application> | |||
</manifest> | |||
</manifest> |
@@ -16,7 +16,7 @@ import android.util.Log | |||
import androidx.annotation.RequiresApi | |||
import androidx.databinding.Observable | |||
import androidx.databinding.Observable.OnPropertyChangedCallback | |||
import com.wireguard.android.activity.MainActivity | |||
import com.wireguard.android.activity.MainWireGuardActivity | |||
import com.wireguard.android.activity.TunnelToggleActivity | |||
import com.wireguard.android.backend.Tunnel | |||
import com.wireguard.android.model.ObservableTunnel | |||
@@ -65,7 +65,7 @@ class QuickTileService : TileService() { | |||
} | |||
} | |||
} else { | |||
val intent = Intent(this, MainActivity::class.java) | |||
val intent = Intent(this, MainWireGuardActivity::class.java) | |||
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) | |||
startActivityAndCollapse(intent) | |||
} | |||
@@ -0,0 +1,14 @@ | |||
package com.wireguard.android.activity; | |||
import androidx.appcompat.app.AppCompatActivity; | |||
import android.os.Bundle; | |||
import com.wireguard.android.R; | |||
public class LoginActivity extends AppCompatActivity { | |||
@Override | |||
protected void onCreate(Bundle savedInstanceState) { | |||
super.onCreate(savedInstanceState); | |||
setContentView(R.layout.activity_login); | |||
} | |||
} |
@@ -0,0 +1,16 @@ | |||
package com.wireguard.android.activity; | |||
import androidx.appcompat.app.AppCompatActivity; | |||
import android.os.Bundle; | |||
import com.wireguard.android.R; | |||
public class MainActivity extends AppCompatActivity { | |||
@Override | |||
protected void onCreate(Bundle savedInstanceState) { | |||
super.onCreate(savedInstanceState); | |||
setContentView(R.layout.activity_main); | |||
} | |||
} |
@@ -23,7 +23,7 @@ import com.wireguard.android.model.ObservableTunnel | |||
* WireGuard application, and contains several fragments for listing, viewing details of, and | |||
* editing the configuration and interface state of WireGuard tunnels. | |||
*/ | |||
class MainActivity : BaseActivity(), FragmentManager.OnBackStackChangedListener { | |||
class MainWireGuardActivity : BaseActivity(), FragmentManager.OnBackStackChangedListener { | |||
private var actionBar: ActionBar? = null | |||
private var isTwoPaneLayout = false | |||
@@ -3,7 +3,7 @@ | |||
xmlns:tools="http://schemas.android.com/tools" | |||
android:layout_width="match_parent" | |||
android:layout_height="match_parent" | |||
tools:context=".activity.MainActivity"> | |||
tools:context=".activity.MainWireGuardActivity"> | |||
<LinearLayout | |||
android:id="@+id/master_detail_wrapper" | |||
@@ -0,0 +1,115 @@ | |||
<?xml version="1.0" encoding="utf-8"?> | |||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" | |||
xmlns:app="http://schemas.android.com/apk/res-auto" | |||
xmlns:tools="http://schemas.android.com/tools" | |||
android:layout_width="match_parent" | |||
android:layout_height="match_parent" | |||
tools:context="com.wireguard.android.activity.LoginActivity"> | |||
<TextView | |||
android:id="@+id/textView" | |||
android:layout_width="wrap_content" | |||
android:layout_height="wrap_content" | |||
android:text="@string/bubble_name" | |||
app:layout_constraintBottom_toBottomOf="parent" | |||
app:layout_constraintEnd_toEndOf="parent" | |||
app:layout_constraintStart_toStartOf="parent" | |||
app:layout_constraintTop_toTopOf="parent" | |||
app:layout_constraintVertical_bias="0.119" /> | |||
<EditText | |||
android:id="@+id/bubble_name" | |||
android:layout_width="88dp" | |||
android:layout_height="30dp" | |||
android:textSize="18sp" | |||
app:layout_constraintBottom_toBottomOf="parent" | |||
app:layout_constraintEnd_toEndOf="parent" | |||
app:layout_constraintHorizontal_bias="0.504" | |||
app:layout_constraintStart_toStartOf="parent" | |||
app:layout_constraintTop_toTopOf="parent" | |||
app:layout_constraintVertical_bias="0.159" /> | |||
<TextView | |||
android:layout_width="wrap_content" | |||
android:layout_height="wrap_content" | |||
android:layout_marginTop="160dp" | |||
android:text="@string/user_name" | |||
app:layout_constraintEnd_toEndOf="parent" | |||
app:layout_constraintHorizontal_bias="0.482" | |||
app:layout_constraintStart_toStartOf="parent" | |||
app:layout_constraintTop_toTopOf="parent" /> | |||
<EditText | |||
android:id="@+id/user_name" | |||
android:layout_width="88dp" | |||
android:layout_height="30dp" | |||
android:textSize="18sp" | |||
app:layout_constraintBottom_toBottomOf="parent" | |||
app:layout_constraintEnd_toEndOf="parent" | |||
app:layout_constraintHorizontal_bias="0.504" | |||
app:layout_constraintStart_toStartOf="parent" | |||
app:layout_constraintTop_toTopOf="parent" | |||
app:layout_constraintVertical_bias="0.276" /> | |||
<TextView | |||
android:layout_width="wrap_content" | |||
android:layout_height="wrap_content" | |||
android:text="@string/password" | |||
app:layout_constraintBottom_toBottomOf="parent" | |||
app:layout_constraintEnd_toEndOf="parent" | |||
app:layout_constraintHorizontal_bias="0.472" | |||
app:layout_constraintStart_toStartOf="parent" | |||
app:layout_constraintTop_toTopOf="parent" | |||
app:layout_constraintVertical_bias="0.334" /> | |||
<EditText | |||
android:id="@+id/password" | |||
android:layout_width="88dp" | |||
android:layout_height="30dp" | |||
android:inputType="textPassword" | |||
android:textSize="18sp" | |||
app:layout_constraintBottom_toBottomOf="parent" | |||
app:layout_constraintEnd_toEndOf="parent" | |||
app:layout_constraintHorizontal_bias="0.504" | |||
app:layout_constraintStart_toStartOf="parent" | |||
app:layout_constraintTop_toTopOf="parent" | |||
app:layout_constraintVertical_bias="0.389" /> | |||
<Button | |||
android:background="@color/secondary_color" | |||
android:id="@+id/signIn_button" | |||
android:layout_width="95dp" | |||
android:layout_height="49dp" | |||
android:layout_marginBottom="356dp" | |||
android:text="@string/sign_in" | |||
android:textSize="15sp" | |||
app:layout_constraintBottom_toBottomOf="parent" | |||
app:layout_constraintEnd_toEndOf="parent" | |||
app:layout_constraintHorizontal_bias="0.515" | |||
app:layout_constraintStart_toStartOf="parent" /> | |||
<TextView | |||
android:layout_width="wrap_content" | |||
android:layout_height="wrap_content" | |||
android:text="@string/don_t_have_a_bubble" | |||
app:layout_constraintBottom_toBottomOf="parent" | |||
app:layout_constraintEnd_toEndOf="parent" | |||
app:layout_constraintHorizontal_bias="0.582" | |||
app:layout_constraintStart_toStartOf="parent" | |||
app:layout_constraintTop_toTopOf="parent" | |||
app:layout_constraintVertical_bias="0.571" /> | |||
<Button | |||
android:id="@+id/start_new_bubble_button" | |||
android:layout_width="wrap_content" | |||
android:layout_height="wrap_content" | |||
android:text="@string/start_new_bubble" | |||
app:layout_constraintBottom_toBottomOf="parent" | |||
app:layout_constraintEnd_toEndOf="parent" | |||
app:layout_constraintHorizontal_bias="0.504" | |||
app:layout_constraintStart_toStartOf="parent" | |||
app:layout_constraintTop_toTopOf="parent" | |||
app:layout_constraintVertical_bias="0.658" /> | |||
</androidx.constraintlayout.widget.ConstraintLayout> |
@@ -0,0 +1,94 @@ | |||
<?xml version="1.0" encoding="utf-8"?> | |||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" | |||
xmlns:app="http://schemas.android.com/apk/res-auto" | |||
xmlns:tools="http://schemas.android.com/tools" | |||
android:layout_width="match_parent" | |||
android:layout_height="match_parent" | |||
tools:context="com.wireguard.android.activity.MainActivity"> | |||
<TextView | |||
android:layout_width="wrap_content" | |||
android:layout_height="wrap_content" | |||
android:text="@string/my_bubble" | |||
android:textSize="20sp" | |||
app:layout_constraintBottom_toBottomOf="parent" | |||
app:layout_constraintEnd_toEndOf="parent" | |||
app:layout_constraintHorizontal_bias="0.498" | |||
app:layout_constraintStart_toStartOf="parent" | |||
app:layout_constraintTop_toTopOf="parent" | |||
app:layout_constraintVertical_bias="0.085" /> | |||
<TextView | |||
android:id="@+id/textView2" | |||
android:layout_width="wrap_content" | |||
android:layout_height="wrap_content" | |||
android:text="@string/bubble_status" | |||
android:textSize="20sp" | |||
app:layout_constraintBottom_toBottomOf="parent" | |||
app:layout_constraintEnd_toEndOf="parent" | |||
app:layout_constraintHorizontal_bias="0.112" | |||
app:layout_constraintStart_toStartOf="parent" | |||
app:layout_constraintTop_toTopOf="parent" | |||
app:layout_constraintVertical_bias="0.183" /> | |||
<TextView | |||
android:id="@+id/bubble_status" | |||
android:layout_width="wrap_content" | |||
android:layout_height="wrap_content" | |||
android:text="@string/running" | |||
android:textSize="20sp" | |||
app:layout_constraintBottom_toBottomOf="parent" | |||
app:layout_constraintEnd_toEndOf="parent" | |||
app:layout_constraintHorizontal_bias="0.565" | |||
app:layout_constraintStart_toStartOf="parent" | |||
app:layout_constraintTop_toTopOf="parent" | |||
app:layout_constraintVertical_bias="0.183" /> | |||
<TextView | |||
android:layout_width="wrap_content" | |||
android:layout_height="wrap_content" | |||
android:text="@string/this_device_status" | |||
android:textSize="20sp" | |||
app:layout_constraintBottom_toBottomOf="parent" | |||
app:layout_constraintEnd_toEndOf="parent" | |||
app:layout_constraintHorizontal_bias="0.133" | |||
app:layout_constraintStart_toStartOf="parent" | |||
app:layout_constraintTop_toTopOf="parent" | |||
app:layout_constraintVertical_bias="0.255" /> | |||
<TextView | |||
android:id="@+id/device_status" | |||
android:layout_width="wrap_content" | |||
android:layout_height="wrap_content" | |||
android:text="@string/not_connected" | |||
android:textSize="20sp" | |||
app:layout_constraintBottom_toBottomOf="parent" | |||
app:layout_constraintEnd_toEndOf="parent" | |||
app:layout_constraintHorizontal_bias="0.811" | |||
app:layout_constraintStart_toStartOf="parent" | |||
app:layout_constraintTop_toTopOf="parent" | |||
app:layout_constraintVertical_bias="0.254" /> | |||
<Button | |||
android:id="@+id/connect_button" | |||
android:layout_width="wrap_content" | |||
android:layout_height="wrap_content" | |||
android:layout_marginTop="264dp" | |||
android:text="@string/connect" | |||
app:layout_constraintEnd_toEndOf="parent" | |||
app:layout_constraintHorizontal_bias="0.492" | |||
app:layout_constraintStart_toStartOf="parent" | |||
app:layout_constraintTop_toTopOf="parent" /> | |||
<Button | |||
android:id="@+id/disable_apps_button" | |||
android:layout_width="wrap_content" | |||
android:layout_height="wrap_content" | |||
android:layout_marginTop="328dp" | |||
android:text="@string/disable_apps" | |||
app:layout_constraintEnd_toEndOf="parent" | |||
app:layout_constraintStart_toStartOf="parent" | |||
app:layout_constraintTop_toTopOf="parent" /> | |||
</androidx.constraintlayout.widget.ConstraintLayout> |
@@ -5,7 +5,7 @@ | |||
android:layout_width="match_parent" | |||
android:layout_height="match_parent" | |||
android:fitsSystemWindows="true" | |||
tools:context=".activity.MainActivity"> | |||
tools:context=".activity.MainWireGuardActivity"> | |||
<androidx.fragment.app.FragmentContainerView | |||
android:id="@+id/detail_container" | |||
@@ -226,4 +226,17 @@ | |||
<string name="biometric_prompt_private_key_title">Authenticate to view private key</string> | |||
<string name="biometric_auth_error">Authentication failure</string> | |||
<string name="biometric_auth_error_reason">Authentication failure: %s</string> | |||
<string name="bubble_name">Bubble Name</string> | |||
<string name="user_name">User Name:</string> | |||
<string name="password">Password:</string> | |||
<string name="sign_in">SIGN IN</string> | |||
<string name="don_t_have_a_bubble">Don\'t have a Bubble?</string> | |||
<string name="start_new_bubble">Start New Bubble</string> | |||
<string name="my_bubble">My Bubble</string> | |||
<string name="bubble_status">Bubble Status:</string> | |||
<string name="running">Running</string> | |||
<string name="this_device_status">This Device Status:</string> | |||
<string name="not_connected">Not Connected</string> | |||
<string name="connect">Connect</string> | |||
<string name="disable_apps">Disable Apps</string> | |||
</resources> |