Merge pull request #14 from SecUSo/Backup-Integration
Backup integration
This commit is contained in:
commit
12095caecc
49 changed files with 508 additions and 234 deletions
3
.gitmodules
vendored
Normal file
3
.gitmodules
vendored
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
[submodule "libs/privacy-friendly-backup-api"]
|
||||
path = libs/privacy-friendly-backup-api
|
||||
url = https://github.com/SecUSo/privacy-friendly-backup-api.git
|
||||
|
|
@ -1,22 +1,18 @@
|
|||
apply plugin: 'com.android.application'
|
||||
apply plugin: 'kotlin-android'
|
||||
|
||||
|
||||
android {
|
||||
compileSdkVersion 28
|
||||
compileSdkVersion 33
|
||||
|
||||
defaultConfig {
|
||||
applicationId "org.secuso.aktivpause"
|
||||
minSdkVersion 21
|
||||
targetSdkVersion 28
|
||||
targetSdkVersion 33
|
||||
versionCode 9
|
||||
versionName "1.1.2"
|
||||
vectorDrawables.useSupportLibrary = true
|
||||
}
|
||||
lintOptions {
|
||||
checkReleaseBuilds false
|
||||
// Or, if you prefer, you can continue to check for errors in release builds,
|
||||
// but continue the build even when errors are found:
|
||||
abortOnError false
|
||||
}
|
||||
buildTypes {
|
||||
release {
|
||||
minifyEnabled false
|
||||
|
|
@ -24,8 +20,13 @@ android {
|
|||
}
|
||||
}
|
||||
compileOptions {
|
||||
sourceCompatibility JavaVersion.VERSION_1_7
|
||||
targetCompatibility JavaVersion.VERSION_1_7
|
||||
sourceCompatibility JavaVersion.VERSION_1_8
|
||||
targetCompatibility JavaVersion.VERSION_1_8
|
||||
}
|
||||
namespace 'org.secuso.aktivpause'
|
||||
lint {
|
||||
abortOnError false
|
||||
checkReleaseBuilds false
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -37,15 +38,33 @@ repositories {
|
|||
|
||||
dependencies {
|
||||
implementation fileTree(include: ['*.jar'], dir: 'libs')
|
||||
implementation 'com.android.support:appcompat-v7:28.0.0'
|
||||
implementation 'com.android.support:design:28.0.0'
|
||||
implementation 'androidx.appcompat:appcompat:1.4.1'
|
||||
implementation 'com.google.android.material:material:1.6.0'
|
||||
implementation 'com.github.bumptech.glide:glide:4.9.0'
|
||||
implementation 'com.android.support:support-v4:28.0.0'
|
||||
implementation 'com.android.support:support-annotations:28.0.0'
|
||||
implementation 'com.android.support:cardview-v7:28.0.0'
|
||||
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
|
||||
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
|
||||
implementation 'androidx.annotation:annotation:1.6.0'
|
||||
implementation 'androidx.cardview:cardview:1.0.0'
|
||||
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
|
||||
implementation 'com.nex3z:flow-layout:1.0.0'
|
||||
implementation 'com.readystatesoftware.sqliteasset:sqliteassethelper:2.0.1'
|
||||
testImplementation 'junit:junit:4.12'
|
||||
implementation 'com.shawnlin:number-picker:2.4.4' // https://github.com/ShawnLin013/NumberPicker
|
||||
// https://github.com/ShawnLin013/NumberPicker
|
||||
implementation 'com.shawnlin:number-picker:2.4.4'
|
||||
|
||||
// Backup
|
||||
implementation project(path: ':backup-api')
|
||||
def work_version = "2.4.0"
|
||||
implementation "androidx.work:work-runtime:$work_version"
|
||||
implementation "androidx.work:work-runtime-ktx:$work_version"
|
||||
androidTestImplementation "androidx.work:work-testing:$work_version"
|
||||
implementation 'androidx.sqlite:sqlite-ktx:2.3.1'
|
||||
|
||||
constraints {
|
||||
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.8.0") {
|
||||
because("kotlin-stdlib-jdk7 is now a part of kotlin-stdlib")
|
||||
}
|
||||
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.0") {
|
||||
because("kotlin-stdlib-jdk8 is now a part of kotlin-stdlib")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,13 +1,19 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="org.secuso.aktivpause">
|
||||
<manifest
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
|
||||
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
|
||||
<uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM" />
|
||||
<uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM" />
|
||||
<uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM" />
|
||||
<uses-permission android:name="android.permission.VIBRATE" />
|
||||
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
|
||||
<uses-permission android:name="android.permission.WAKE_LOCK" />
|
||||
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
|
||||
|
||||
<application
|
||||
android:name=".PFAktivpause"
|
||||
android:allowBackup="true"
|
||||
android:icon="@mipmap/ic_launcher"
|
||||
android:label="@string/app_name"
|
||||
|
|
@ -27,7 +33,8 @@
|
|||
<activity
|
||||
android:name="org.secuso.aktivpause.activities.SplashActivity"
|
||||
android:screenOrientation="portrait"
|
||||
android:theme="@style/SplashTheme">
|
||||
android:theme="@style/SplashTheme"
|
||||
android:exported="true">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
|
||||
|
|
@ -113,8 +120,19 @@
|
|||
android:name="org.secuso.aktivpause.service.TimerService"
|
||||
android:enabled="true"
|
||||
android:exported="false" />
|
||||
<service
|
||||
android:name=".backup.PFABackupService"
|
||||
android:enabled="true"
|
||||
android:exported="true"
|
||||
android:process=":backup"
|
||||
tools:ignore="ExportedService">
|
||||
<intent-filter>
|
||||
<action android:name="org.secuso.privacyfriendlybackup.api.pfa.PFAAuthService" />
|
||||
</intent-filter>
|
||||
</service>
|
||||
|
||||
<receiver android:name="org.secuso.aktivpause.receivers.OnBootCompletedReceiver">
|
||||
<receiver android:name="org.secuso.aktivpause.receivers.OnBootCompletedReceiver"
|
||||
android:exported="true">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.BOOT_COMPLETED" />
|
||||
</intent-filter>
|
||||
|
|
@ -122,6 +140,11 @@
|
|||
|
||||
<receiver android:name="org.secuso.aktivpause.receivers.TimerSchedulerReceiver"/>
|
||||
|
||||
<provider
|
||||
android:name="androidx.startup.InitializationProvider"
|
||||
android:authorities="${applicationId}.androidx-startup"
|
||||
tools:node="remove" />
|
||||
|
||||
</application>
|
||||
|
||||
</manifest>
|
||||
21
app/src/main/java/org/secuso/aktivpause/PFAktivpause.kt
Normal file
21
app/src/main/java/org/secuso/aktivpause/PFAktivpause.kt
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
package org.secuso.aktivpause
|
||||
|
||||
import android.app.Application
|
||||
import android.util.Log
|
||||
import androidx.work.Configuration
|
||||
import org.secuso.privacyfriendlybackup.api.pfa.BackupManager
|
||||
import org.secuso.aktivpause.backup.BackupCreator
|
||||
import org.secuso.aktivpause.backup.BackupRestorer
|
||||
|
||||
class PFAktivpause : Application(), Configuration.Provider {
|
||||
|
||||
override fun onCreate() {
|
||||
super.onCreate()
|
||||
BackupManager.backupCreator = BackupCreator()
|
||||
BackupManager.backupRestorer = BackupRestorer()
|
||||
}
|
||||
|
||||
override fun getWorkManagerConfiguration(): Configuration {
|
||||
return Configuration.Builder().setMinimumLoggingLevel(Log.INFO).build()
|
||||
}
|
||||
}
|
||||
|
|
@ -2,8 +2,8 @@ package org.secuso.aktivpause.activities;
|
|||
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.support.v7.app.ActionBar;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import androidx.appcompat.app.ActionBar;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import android.text.method.LinkMovementMethod;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
|
|
|
|||
|
|
@ -2,16 +2,16 @@ package org.secuso.aktivpause.activities;
|
|||
|
||||
import android.content.Intent;
|
||||
import android.os.PersistableBundle;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.design.chip.Chip;
|
||||
import android.support.design.chip.ChipGroup;
|
||||
import android.support.v4.content.ContextCompat;
|
||||
import android.support.v7.app.ActionBar;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import androidx.annotation.Nullable;
|
||||
import com.google.android.material.chip.Chip;
|
||||
import com.google.android.material.chip.ChipGroup;
|
||||
import androidx.core.content.ContextCompat;
|
||||
import androidx.appcompat.app.ActionBar;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import android.os.Bundle;
|
||||
import android.support.v7.widget.CardView;
|
||||
import android.support.v7.widget.GridLayoutManager;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import androidx.cardview.widget.CardView;
|
||||
import androidx.recyclerview.widget.GridLayoutManager;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.widget.TextView;
|
||||
|
|
|
|||
|
|
@ -4,15 +4,17 @@ import android.animation.Animator;
|
|||
import android.animation.AnimatorListenerAdapter;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.support.v4.content.AsyncTaskLoader;
|
||||
import android.support.v4.content.Loader;
|
||||
import android.support.v7.app.ActionBar;
|
||||
import android.support.v7.app.AlertDialog;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
|
||||
import androidx.loader.app.LoaderManager;
|
||||
import androidx.loader.content.AsyncTaskLoader;
|
||||
import androidx.loader.content.Loader;
|
||||
import androidx.appcompat.app.ActionBar;
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import android.os.Bundle;
|
||||
import android.support.v7.widget.GridLayoutManager;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.support.v7.widget.Toolbar;
|
||||
import androidx.recyclerview.widget.GridLayoutManager;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
import android.text.Editable;
|
||||
import android.text.TextUtils;
|
||||
import android.text.TextWatcher;
|
||||
|
|
@ -44,7 +46,7 @@ import static org.secuso.aktivpause.activities.adapter.ExerciseAdapter.ID_COMPAR
|
|||
* @version 2.0
|
||||
* @see ChooseExerciseActivity
|
||||
*/
|
||||
public class EditExerciseSetActivity extends AppCompatActivity implements android.support.v4.app.LoaderManager.LoaderCallbacks<ExerciseSet> {
|
||||
public class EditExerciseSetActivity extends AppCompatActivity implements LoaderManager.LoaderCallbacks<ExerciseSet> {
|
||||
|
||||
|
||||
private static final String TAG = EditExerciseSetActivity.class.getSimpleName();
|
||||
|
|
|
|||
|
|
@ -15,14 +15,15 @@ import android.os.Handler;
|
|||
import android.os.VibrationEffect;
|
||||
import android.os.Vibrator;
|
||||
import android.preference.PreferenceManager;
|
||||
import android.support.constraint.ConstraintLayout;
|
||||
import android.support.v4.app.ActivityCompat;
|
||||
import android.support.v4.content.AsyncTaskLoader;
|
||||
import android.support.v4.content.Loader;
|
||||
import android.support.v4.view.MenuItemCompat;
|
||||
import android.support.v7.app.ActionBar;
|
||||
import android.support.v7.app.AlertDialog;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import androidx.constraintlayout.widget.ConstraintLayout;
|
||||
import androidx.core.app.ActivityCompat;
|
||||
import androidx.loader.app.LoaderManager;
|
||||
import androidx.loader.content.AsyncTaskLoader;
|
||||
import androidx.loader.content.Loader;
|
||||
import androidx.core.view.MenuItemCompat;
|
||||
import androidx.appcompat.app.ActionBar;
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
|
|
@ -58,7 +59,7 @@ import static org.secuso.aktivpause.service.TimerService.ACTION_STOP_TIMER;
|
|||
* @author Christopher Beckmann
|
||||
* @version 2.0
|
||||
*/
|
||||
public class ExerciseActivity extends AppCompatActivity implements android.support.v4.app.LoaderManager.LoaderCallbacks<ExerciseSet> {
|
||||
public class ExerciseActivity extends AppCompatActivity implements LoaderManager.LoaderCallbacks<ExerciseSet> {
|
||||
|
||||
private static final String TAG = ExerciseActivity.class.getSimpleName();
|
||||
private static boolean confirmationDialogShown = false;
|
||||
|
|
|
|||
|
|
@ -8,21 +8,22 @@ import android.content.DialogInterface;
|
|||
import android.content.Intent;
|
||||
import android.content.res.ColorStateList;
|
||||
import android.graphics.drawable.ColorDrawable;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.design.widget.FloatingActionButton;
|
||||
import android.support.design.widget.TextInputEditText;
|
||||
import android.support.v4.app.ActivityCompat;
|
||||
import android.support.v4.app.DialogFragment;
|
||||
import android.support.v4.app.FragmentActivity;
|
||||
import android.support.v4.content.AsyncTaskLoader;
|
||||
import android.support.v4.content.ContextCompat;
|
||||
import android.support.v4.content.Loader;
|
||||
import android.support.v4.widget.DrawerLayout;
|
||||
import android.support.v7.app.ActionBar;
|
||||
import android.support.v7.app.AlertDialog;
|
||||
import androidx.annotation.NonNull;
|
||||
import com.google.android.material.floatingactionbutton.FloatingActionButton;
|
||||
import com.google.android.material.textfield.TextInputEditText;
|
||||
import androidx.core.app.ActivityCompat;
|
||||
import androidx.fragment.app.DialogFragment;
|
||||
import androidx.fragment.app.FragmentActivity;
|
||||
import androidx.loader.app.LoaderManager;
|
||||
import androidx.loader.content.AsyncTaskLoader;
|
||||
import androidx.core.content.ContextCompat;
|
||||
import androidx.loader.content.Loader;
|
||||
import androidx.drawerlayout.widget.DrawerLayout;
|
||||
import androidx.appcompat.app.ActionBar;
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
import android.os.Bundle;
|
||||
import android.support.v7.widget.LinearLayoutManager;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
import android.view.LayoutInflater;
|
||||
|
|
@ -54,7 +55,7 @@ import static android.view.View.VISIBLE;
|
|||
* @version 2.0
|
||||
* @see EditExerciseSetActivity
|
||||
*/
|
||||
public class ManageExerciseSetsActivity extends BaseActivity implements android.support.v4.app.LoaderManager.LoaderCallbacks<List<ExerciseSet>> {
|
||||
public class ManageExerciseSetsActivity extends BaseActivity implements LoaderManager.LoaderCallbacks<List<ExerciseSet>> {
|
||||
|
||||
private static final String TAG = ManageExerciseSetsActivity.class.getSimpleName();
|
||||
private RecyclerView exerciseSetList;
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ package org.secuso.aktivpause.activities;
|
|||
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
|
||||
import org.secuso.aktivpause.activities.tutorial.FirstLaunchManager;
|
||||
import org.secuso.aktivpause.activities.tutorial.TutorialActivity;
|
||||
|
|
|
|||
|
|
@ -12,17 +12,17 @@ import android.graphics.drawable.Drawable;
|
|||
import android.net.Uri;
|
||||
import android.os.IBinder;
|
||||
import android.preference.PreferenceManager;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.constraint.ConstraintLayout;
|
||||
import android.support.constraint.ConstraintSet;
|
||||
import android.support.v4.app.ActivityCompat;
|
||||
import android.support.v4.content.AsyncTaskLoader;
|
||||
import android.support.v4.content.Loader;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.constraintlayout.widget.ConstraintLayout;
|
||||
import androidx.constraintlayout.widget.ConstraintSet;
|
||||
import androidx.core.app.ActivityCompat;
|
||||
import androidx.loader.app.LoaderManager;
|
||||
import androidx.loader.content.AsyncTaskLoader;
|
||||
import androidx.loader.content.Loader;
|
||||
import android.os.Bundle;
|
||||
import android.support.v7.app.AlertDialog;
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
import android.transition.TransitionManager;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuInflater;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.widget.AdapterView;
|
||||
|
|
@ -58,7 +58,7 @@ import static org.secuso.aktivpause.activities.tutorial.FirstLaunchManager.PAUSE
|
|||
* @version 2.0
|
||||
* @see TimerService
|
||||
*/
|
||||
public class TimerActivity extends BaseActivity implements android.support.v4.app.LoaderManager.LoaderCallbacks<List<ExerciseSet>> {
|
||||
public class TimerActivity extends BaseActivity implements LoaderManager.LoaderCallbacks<List<ExerciseSet>> {
|
||||
private static final String TAG = TimerActivity.class.getSimpleName();
|
||||
|
||||
// UI
|
||||
|
|
|
|||
|
|
@ -2,12 +2,12 @@ package org.secuso.aktivpause.activities.adapter;
|
|||
|
||||
import android.content.Context;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.preference.PreferenceManager;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.constraint.ConstraintLayout;
|
||||
import android.support.v4.app.ActivityCompat;
|
||||
import android.support.v7.util.SortedList;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.constraintlayout.widget.ConstraintLayout;
|
||||
import androidx.core.app.ActivityCompat;
|
||||
import androidx.recyclerview.widget.SortedList;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
|
@ -20,7 +20,6 @@ import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions;
|
|||
|
||||
import org.secuso.aktivpause.R;
|
||||
import org.secuso.aktivpause.activities.helper.IExerciseTimeUpdateable;
|
||||
import org.secuso.aktivpause.activities.tutorial.FirstLaunchManager;
|
||||
import org.secuso.aktivpause.database.data.Exercise;
|
||||
import org.secuso.aktivpause.dialog.ExerciseDialog;
|
||||
|
||||
|
|
|
|||
|
|
@ -2,8 +2,8 @@ package org.secuso.aktivpause.activities.adapter;
|
|||
|
||||
import android.content.Intent;
|
||||
import android.preference.PreferenceManager;
|
||||
import android.support.v7.widget.CardView;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import androidx.cardview.widget.CardView;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
|
|
|||
|
|
@ -2,9 +2,9 @@ package org.secuso.aktivpause.activities.adapter;
|
|||
|
||||
import android.content.Context;
|
||||
import android.preference.PreferenceManager;
|
||||
import android.support.annotation.LayoutRes;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.v7.widget.CardView;
|
||||
import androidx.annotation.LayoutRes;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.cardview.widget.CardView;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
|
|
|||
|
|
@ -3,11 +3,11 @@ package org.secuso.aktivpause.activities.helper;
|
|||
import android.content.res.Configuration;
|
||||
import android.os.Bundle;
|
||||
import android.preference.PreferenceActivity;
|
||||
import android.support.annotation.LayoutRes;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.v7.app.ActionBar;
|
||||
import android.support.v7.app.AppCompatDelegate;
|
||||
import android.support.v7.widget.Toolbar;
|
||||
import androidx.annotation.LayoutRes;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.app.ActionBar;
|
||||
import androidx.appcompat.app.AppCompatDelegate;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
import android.view.MenuInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
|
|
|||
|
|
@ -5,14 +5,14 @@ import android.content.SharedPreferences;
|
|||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.preference.PreferenceManager;
|
||||
import android.support.design.widget.NavigationView;
|
||||
import android.support.design.widget.NavigationView.OnNavigationItemSelectedListener;
|
||||
import android.support.v4.app.TaskStackBuilder;
|
||||
import android.support.v4.view.GravityCompat;
|
||||
import android.support.v4.widget.DrawerLayout;
|
||||
import android.support.v7.app.ActionBarDrawerToggle;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.support.v7.widget.Toolbar;
|
||||
import com.google.android.material.navigation.NavigationView;
|
||||
import com.google.android.material.navigation.NavigationView.OnNavigationItemSelectedListener;
|
||||
import androidx.core.app.TaskStackBuilder;
|
||||
import androidx.core.view.GravityCompat;
|
||||
import androidx.drawerlayout.widget.DrawerLayout;
|
||||
import androidx.appcompat.app.ActionBarDrawerToggle;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
|
||||
|
|
|
|||
|
|
@ -5,19 +5,14 @@ import android.app.NotificationChannelGroup;
|
|||
import android.app.NotificationManager;
|
||||
import android.content.Context;
|
||||
import android.content.SharedPreferences;
|
||||
import android.database.Cursor;
|
||||
import android.os.Build;
|
||||
import android.preference.PreferenceManager;
|
||||
import android.support.annotation.RequiresApi;
|
||||
import androidx.annotation.RequiresApi;
|
||||
|
||||
import org.secuso.aktivpause.R;
|
||||
import org.secuso.aktivpause.database.SQLiteHelper;
|
||||
import org.secuso.aktivpause.database.columns.ExerciseSetColumns;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Class structure taken from tutorial at http://www.androidhive.info/2016/05/android-build-intro-slider-app/
|
||||
|
|
|
|||
|
|
@ -5,10 +5,10 @@ import android.content.Intent;
|
|||
import android.graphics.Color;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.support.v4.content.ContextCompat;
|
||||
import android.support.v4.view.PagerAdapter;
|
||||
import android.support.v4.view.ViewPager;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import androidx.core.content.ContextCompat;
|
||||
import androidx.viewpager.widget.PagerAdapter;
|
||||
import androidx.viewpager.widget.ViewPager;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import android.text.Html;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
|
|
|
|||
|
|
@ -0,0 +1,55 @@
|
|||
package org.secuso.aktivpause.backup
|
||||
|
||||
|
||||
import android.content.Context
|
||||
import android.preference.PreferenceManager
|
||||
import android.util.JsonWriter
|
||||
import android.util.Log
|
||||
import org.secuso.privacyfriendlybackup.api.backup.DatabaseUtil.getSupportSQLiteOpenHelper
|
||||
import org.secuso.privacyfriendlybackup.api.backup.DatabaseUtil.writeDatabase
|
||||
import org.secuso.privacyfriendlybackup.api.backup.PreferenceUtil.writePreferences
|
||||
import org.secuso.privacyfriendlybackup.api.pfa.IBackupCreator
|
||||
import org.secuso.aktivpause.database.SQLiteHelper
|
||||
import java.io.OutputStream
|
||||
import java.io.OutputStreamWriter
|
||||
|
||||
class BackupCreator : IBackupCreator {
|
||||
override fun writeBackup(context: Context, outputStream: OutputStream): Boolean {
|
||||
Log.d(TAG, "createBackup() started")
|
||||
val outputStreamWriter = OutputStreamWriter(outputStream, Charsets.UTF_8)
|
||||
val writer = JsonWriter(outputStreamWriter)
|
||||
writer.setIndent("")
|
||||
|
||||
try {
|
||||
writer.beginObject()
|
||||
|
||||
Log.d(TAG, "Writing database")
|
||||
writer.name("database")
|
||||
|
||||
val database = getSupportSQLiteOpenHelper(context, SQLiteHelper.DATABASE_NAME).readableDatabase
|
||||
|
||||
writeDatabase(writer, database)
|
||||
database.close()
|
||||
|
||||
Log.d(TAG, "Writing preferences")
|
||||
writer.name("preferences")
|
||||
|
||||
val pref = PreferenceManager.getDefaultSharedPreferences(context.applicationContext)
|
||||
writePreferences(writer, pref)
|
||||
|
||||
writer.endObject()
|
||||
writer.close()
|
||||
} catch (e: Exception) {
|
||||
Log.e(TAG, "Error occurred", e)
|
||||
e.printStackTrace()
|
||||
return false
|
||||
}
|
||||
|
||||
Log.d(TAG, "Backup created successfully")
|
||||
return true
|
||||
}
|
||||
|
||||
companion object {
|
||||
const val TAG = "PFABackupCreator"
|
||||
}
|
||||
}
|
||||
142
app/src/main/java/org/secuso/aktivpause/backup/BackupRestorer.kt
Normal file
142
app/src/main/java/org/secuso/aktivpause/backup/BackupRestorer.kt
Normal file
|
|
@ -0,0 +1,142 @@
|
|||
package org.secuso.aktivpause.backup
|
||||
|
||||
import android.content.Context
|
||||
import android.content.SharedPreferences
|
||||
import android.preference.PreferenceManager
|
||||
import android.util.JsonReader
|
||||
import android.util.Log
|
||||
import androidx.annotation.NonNull
|
||||
import org.secuso.privacyfriendlybackup.api.backup.DatabaseUtil
|
||||
import org.secuso.privacyfriendlybackup.api.backup.FileUtil
|
||||
import org.secuso.privacyfriendlybackup.api.pfa.IBackupRestorer
|
||||
import org.secuso.aktivpause.database.SQLiteHelper
|
||||
import java.io.IOException
|
||||
import java.io.InputStream
|
||||
import java.io.InputStreamReader
|
||||
import kotlin.system.exitProcess
|
||||
|
||||
|
||||
class BackupRestorer : IBackupRestorer {
|
||||
@Throws(IOException::class)
|
||||
private fun readDatabase(reader: JsonReader, context: Context) {
|
||||
reader.beginObject()
|
||||
val n1: String = reader.nextName()
|
||||
if (n1 != "version") {
|
||||
throw RuntimeException("Unknown value $n1")
|
||||
}
|
||||
val version: Int = reader.nextInt()
|
||||
val n2: String = reader.nextName()
|
||||
if (n2 != "content") {
|
||||
throw RuntimeException("Unknown value $n2")
|
||||
}
|
||||
|
||||
Log.d(TAG, "Restoring database...")
|
||||
val restoreDatabaseName = "restoreDatabase"
|
||||
|
||||
// delete if file already exists
|
||||
val restoreDatabaseFile = context.getDatabasePath(restoreDatabaseName)
|
||||
if (restoreDatabaseFile.exists()) {
|
||||
DatabaseUtil.deleteRoomDatabase(context, restoreDatabaseName)
|
||||
}
|
||||
|
||||
// create new restore database
|
||||
val db = DatabaseUtil.getSupportSQLiteOpenHelper(context, restoreDatabaseName, version).writableDatabase
|
||||
|
||||
db.beginTransaction()
|
||||
db.version = version
|
||||
|
||||
Log.d(TAG, "Copying database contents...")
|
||||
DatabaseUtil.readDatabaseContent(reader, db)
|
||||
Log.d(TAG, "succesfully read database")
|
||||
db.setTransactionSuccessful()
|
||||
db.endTransaction()
|
||||
db.close()
|
||||
|
||||
reader.endObject()
|
||||
|
||||
// copy file to correct location
|
||||
val actualDatabaseFile = context.getDatabasePath(SQLiteHelper.DATABASE_NAME)
|
||||
|
||||
DatabaseUtil.deleteRoomDatabase(context, SQLiteHelper.DATABASE_NAME)
|
||||
|
||||
FileUtil.copyFile(restoreDatabaseFile, actualDatabaseFile)
|
||||
Log.d(TAG, "Database Restored")
|
||||
|
||||
// delete restore database
|
||||
DatabaseUtil.deleteRoomDatabase(context, restoreDatabaseName)
|
||||
}
|
||||
|
||||
@Throws(IOException::class)
|
||||
private fun readPreferences(reader: JsonReader, preferences: SharedPreferences.Editor) {
|
||||
reader.beginObject()
|
||||
while (reader.hasNext()) {
|
||||
val name: String = reader.nextName()
|
||||
Log.d("preference", name)
|
||||
when (name) {
|
||||
"pref_schedule_exercise",
|
||||
"pref_keep_screen_on_during_exercise",
|
||||
"REPEAT_STATUS",
|
||||
"pref_hide_default_exercise_sets",
|
||||
"pref_schedule_exercise_daystrigger",
|
||||
"pref_exercise_continuous",
|
||||
"IsFirstTimeLaunch",
|
||||
"pref_schedule_random_exercise",
|
||||
"REPEAT_EXERCISES" -> preferences.putBoolean(name, reader.nextBoolean())
|
||||
"pref_exercise_time" -> preferences.putString(name, reader.nextString())
|
||||
"FirstLaunchManager.PREF_PICKER_SECONDS",
|
||||
"FirstLaunchManager.PREF_PICKER_MINUTES",
|
||||
"FirstLaunchManager.PREF_BREAK_PICKER_SECONDS",
|
||||
"FirstLaunchManager.PREF_PICKER_HOURS",
|
||||
"FirstLaunchManager.PREF_BREAK_PICKER_MINUTES" -> preferences.putInt(name, reader.nextInt())
|
||||
"pref_schedule_exercise_days" -> preferences.putStringSet(name, readPreferenceSet(reader))
|
||||
"WORK_TIME",
|
||||
"PAUSE TIME",
|
||||
"pref_schedule_exercise_time",
|
||||
"DEFAULT_EXERCISE_SET" -> preferences.putLong(name, reader.nextLong())
|
||||
else -> throw RuntimeException("Unknown preference $name")
|
||||
}
|
||||
}
|
||||
reader.endObject()
|
||||
}
|
||||
|
||||
private fun readPreferenceSet(reader: JsonReader): Set<String> {
|
||||
val preferenceSet = mutableSetOf<String>()
|
||||
|
||||
reader.beginArray()
|
||||
while (reader.hasNext()) {
|
||||
preferenceSet.add(reader.nextString());
|
||||
}
|
||||
reader.endArray()
|
||||
return preferenceSet
|
||||
}
|
||||
|
||||
override fun restoreBackup(context: Context, restoreData: InputStream): Boolean {
|
||||
return try {
|
||||
val isReader = InputStreamReader(restoreData)
|
||||
val reader = JsonReader(isReader)
|
||||
val preferences = PreferenceManager.getDefaultSharedPreferences(context).edit()
|
||||
|
||||
// START
|
||||
reader.beginObject()
|
||||
while (reader.hasNext()) {
|
||||
val type: String = reader.nextName()
|
||||
when (type) {
|
||||
"database" -> readDatabase(reader, context)
|
||||
"preferences" -> readPreferences(reader, preferences)
|
||||
else -> throw RuntimeException("Can not parse type $type")
|
||||
}
|
||||
}
|
||||
reader.endObject()
|
||||
preferences.commit()
|
||||
|
||||
exitProcess(0)
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
false
|
||||
}
|
||||
}
|
||||
|
||||
companion object {
|
||||
const val TAG = "PFABackupRestorer"
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
package org.secuso.aktivpause.backup
|
||||
|
||||
import org.secuso.privacyfriendlybackup.api.pfa.PFAAuthService
|
||||
|
||||
class PFABackupService : PFAAuthService()
|
||||
|
|
@ -5,7 +5,7 @@ import android.content.ContentValues;
|
|||
import android.content.Context;
|
||||
import android.database.Cursor;
|
||||
import android.database.sqlite.SQLiteDatabase;
|
||||
import android.support.annotation.NonNull;
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import com.readystatesoftware.sqliteasset.SQLiteAssetHelper;
|
||||
|
||||
|
|
@ -27,7 +27,7 @@ public class SQLiteHelper extends SQLiteAssetHelper {
|
|||
|
||||
private static final String TAG = SQLiteHelper.class.getSimpleName();
|
||||
|
||||
private static final String DATABASE_NAME = "exercises.sqlite";
|
||||
public static final String DATABASE_NAME = "exercises.sqlite";
|
||||
private static final int DATABASE_VERSION = 1;
|
||||
|
||||
private static final String[] deleteQueryList = {
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ package org.secuso.aktivpause.database.data;
|
|||
|
||||
|
||||
import android.content.Context;
|
||||
import android.support.annotation.DrawableRes;
|
||||
import androidx.annotation.DrawableRes;
|
||||
|
||||
import org.secuso.aktivpause.exercises.ExerciseSections;
|
||||
|
||||
|
|
|
|||
|
|
@ -2,9 +2,9 @@ package org.secuso.aktivpause.dialog;
|
|||
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.v4.app.FragmentActivity;
|
||||
import android.support.v7.app.AlertDialog;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.fragment.app.FragmentActivity;
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.widget.ImageView;
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
package org.secuso.aktivpause.exercises;
|
||||
|
||||
import android.content.Context;
|
||||
import android.support.annotation.StringRes;
|
||||
import androidx.annotation.StringRes;
|
||||
|
||||
import org.secuso.aktivpause.R;
|
||||
|
||||
|
|
|
|||
|
|
@ -10,8 +10,8 @@ import android.content.SharedPreferences;
|
|||
import android.os.Build;
|
||||
import android.os.IBinder;
|
||||
import android.preference.PreferenceManager;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.v4.content.WakefulBroadcastReceiver;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.legacy.content.WakefulBroadcastReceiver;
|
||||
|
||||
import org.secuso.aktivpause.service.TimerService;
|
||||
|
||||
|
|
|
|||
|
|
@ -14,8 +14,8 @@ import android.os.CountDownTimer;
|
|||
import android.os.IBinder;
|
||||
import android.preference.PreferenceManager;
|
||||
import android.provider.Settings;
|
||||
import android.support.v4.app.NotificationCompat;
|
||||
import android.support.v4.content.ContextCompat;
|
||||
import androidx.core.app.NotificationCompat;
|
||||
import androidx.core.content.ContextCompat;
|
||||
|
||||
import org.secuso.aktivpause.R;
|
||||
import org.secuso.aktivpause.activities.ExerciseActivity;
|
||||
|
|
@ -105,8 +105,8 @@ public class TimerService extends Service {
|
|||
Intent exerciseIntent = new Intent(this, ExerciseActivity.class);
|
||||
exerciseIntent.putExtra("SCHEDULED", scheduled);
|
||||
|
||||
PendingIntent startExercises = PendingIntent.getActivity(this, 0, exerciseIntent, FLAG_CANCEL_CURRENT);
|
||||
PendingIntent snoozeExercise = PendingIntent.getService(this, 0, snoozeIntent, FLAG_UPDATE_CURRENT);
|
||||
PendingIntent startExercises = PendingIntent.getActivity(this, 0, exerciseIntent, FLAG_CANCEL_CURRENT | PendingIntent.FLAG_IMMUTABLE);
|
||||
PendingIntent snoozeExercise = PendingIntent.getService(this, 0, snoozeIntent, FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE);
|
||||
|
||||
NotificationCompat.Builder builder = new NotificationCompat.Builder(this, "timer_done");
|
||||
builder.setContentTitle(getString(R.string.app_name))
|
||||
|
|
@ -122,11 +122,11 @@ public class TimerService extends Service {
|
|||
.setVibrate(new long[] { 0, 1000, 1000, 1000, 1000, 1000, 1000 })
|
||||
.setSound(Settings.System.DEFAULT_NOTIFICATION_URI)
|
||||
.setOnlyAlertOnce(false)
|
||||
.setDeleteIntent(PendingIntent.getBroadcast(getApplicationContext(), 0, new Intent(ACTION_NOTIFICATION_DELETED), FLAG_UPDATE_CURRENT));
|
||||
.setDeleteIntent(PendingIntent.getBroadcast(getApplicationContext(), 0, new Intent(ACTION_NOTIFICATION_DELETED), FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE));
|
||||
|
||||
SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(this);
|
||||
if(pref.getBoolean(PREF_EXERCISE_CONTINUOUS, false)) {
|
||||
builder.addAction(0, getString(R.string.dismiss_and_dont_repeat), PendingIntent.getBroadcast(getApplicationContext(), 0, new Intent(ACTION_NOTIFICATION_CANCELED), FLAG_UPDATE_CURRENT));
|
||||
builder.addAction(0, getString(R.string.dismiss_and_dont_repeat), PendingIntent.getBroadcast(getApplicationContext(), 0, new Intent(ACTION_NOTIFICATION_CANCELED), FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE));
|
||||
}
|
||||
|
||||
builder.addAction(R.drawable.ic_replay_black_48dp, getString(R.string.snooze), snoozeExercise);
|
||||
|
|
@ -327,7 +327,7 @@ public class TimerService extends Service {
|
|||
|
||||
Intent exerciseIntent = new Intent(this, ExerciseActivity.class);
|
||||
exerciseIntent.putExtra("SCHEDULED", scheduled);
|
||||
PendingIntent startExercises = PendingIntent.getActivity(this, 0, exerciseIntent, FLAG_CANCEL_CURRENT);
|
||||
PendingIntent startExercises = PendingIntent.getActivity(this, 0, exerciseIntent, FLAG_CANCEL_CURRENT | PendingIntent.FLAG_IMMUTABLE);
|
||||
|
||||
builder.setContentText(time);
|
||||
builder.setColor(ContextCompat.getColor(this, R.color.colorAccent));
|
||||
|
|
@ -341,21 +341,21 @@ public class TimerService extends Service {
|
|||
|
||||
Intent intent = new Intent(this, TimerActivity.class);
|
||||
intent.addFlags(FLAG_ACTIVITY_CLEAR_TOP);
|
||||
builder.setContentIntent(PendingIntent.getActivity(this, 0, intent, FLAG_UPDATE_CURRENT));
|
||||
builder.setContentIntent(PendingIntent.getActivity(this, 0, intent, FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE));
|
||||
|
||||
builder.addAction(R.drawable.ic_play_arrow_black, getString(R.string.start_break), startExercises);
|
||||
|
||||
Intent stopIntent = new Intent(this, TimerService.class);
|
||||
stopIntent.setAction(ACTION_STOP_TIMER);
|
||||
builder.addAction(R.drawable.ic_replay_black_48dp, getString(R.string.stop), PendingIntent.getService(this, 0, stopIntent, FLAG_UPDATE_CURRENT));
|
||||
builder.addAction(R.drawable.ic_replay_black_48dp, getString(R.string.stop), PendingIntent.getService(this, 0, stopIntent, FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE));
|
||||
|
||||
Intent pauseIntent = new Intent(this, TimerService.class);
|
||||
if(!isPaused()) {
|
||||
pauseIntent.setAction(ACTION_PAUSE_TIMER);
|
||||
builder.addAction(R.drawable.ic_pause_black_48dp, getString(R.string.pause), PendingIntent.getService(this, 0, pauseIntent, FLAG_UPDATE_CURRENT));
|
||||
builder.addAction(R.drawable.ic_pause_black_48dp, getString(R.string.pause), PendingIntent.getService(this, 0, pauseIntent, FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE));
|
||||
} else {
|
||||
pauseIntent.setAction(ACTION_RESUME_TIMER);
|
||||
builder.addAction(R.drawable.ic_play_arrow_black, getString(R.string.resume), PendingIntent.getService(this, 0, pauseIntent, FLAG_UPDATE_CURRENT));
|
||||
builder.addAction(R.drawable.ic_play_arrow_black, getString(R.string.resume), PendingIntent.getService(this, 0, pauseIntent, FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE));
|
||||
}
|
||||
|
||||
return builder.build();
|
||||
|
|
|
|||
|
|
@ -5,5 +5,5 @@
|
|||
android:viewportWidth="24.0">
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M12 4V1L8 5l4 4V6c3.31 0 6 2.69 6 6 0 1.01,-.25 1.97,-.7 2.8l1.46 1.46C19.54 15.03 20 13.57 20 12c0,-4.42,-3.58,-8,-8,-8zm0 14c-3.31 0,-6,-2.69,-6,-6 0,-1.01.25,-1.97.7,-2.8L5.24 7.74C4.46 8.97 4 10.43 4 12c0 4.42 3.58 8 8 8v3l4,-4,-4,-4v3z" />
|
||||
android:pathData="M12 4V1L8 5l4 4V6c3.31 0 6 2.69 6 6 0 1.01,-0.25 1.97,-0.7 2.8l1.46 1.46C19.54 15.03 20 13.57 20 12c0,-4.42,-3.58,-8,-8,-8zm0 14c-3.31 0,-6,-2.69,-6,-6 0,-1.01 0.25,-1.97 0.7,-2.8L5.24 7.74C4.46 8.97 4 10.43 4 12c0 4.42 3.58 8 8 8v3l4,-4,-4,-4v3z" />
|
||||
</vector>
|
||||
|
|
@ -5,5 +5,5 @@
|
|||
android:viewportWidth="24.0">
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M12 4V1L8 5l4 4V6c3.31 0 6 2.69 6 6 0 1.01,-.25 1.97,-.7 2.8l1.46 1.46C19.54 15.03 20 13.57 20 12c0,-4.42,-3.58,-8,-8,-8zm0 14c-3.31 0,-6,-2.69,-6,-6 0,-1.01.25,-1.97.7,-2.8L5.24 7.74C4.46 8.97 4 10.43 4 12c0 4.42 3.58 8 8 8v3l4,-4,-4,-4v3z" />
|
||||
android:pathData="M12 4V1L8 5l4 4V6c3.31 0 6 2.69 6 6 0 1.01,-0.25 1.97,-0.7 2.8l1.46 1.46C19.54 15.03 20 13.57 20 12c0,-4.42,-3.58,-8,-8,-8zm0 14c-3.31 0,-6,-2.69,-6,-6 0,-1.01 0.25,-1.97 0.7,-2.8L5.24 7.74C4.46 8.97 4 10.43 4 12c0 4.42 3.58 8 8 8v3l4,-4,-4,-4v3z" />
|
||||
</vector>
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
<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"
|
||||
|
|
@ -18,7 +18,7 @@
|
|||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent">
|
||||
|
||||
<android.support.design.chip.ChipGroup
|
||||
<com.google.android.material.chip.ChipGroup
|
||||
android:id="@+id/layout_filter_buttons"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="wrap_content"
|
||||
|
|
@ -46,7 +46,7 @@
|
|||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/h_scroll_filter_buttons" />
|
||||
|
||||
<android.support.v7.widget.RecyclerView
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/exercise_list"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
|
|
@ -61,4 +61,4 @@
|
|||
app:layout_constraintVertical_bias="0.0"
|
||||
tools:listitem="@layout/layout_exercise_grid_item" />
|
||||
|
||||
</android.support.constraint.ConstraintLayout>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
|
|
|||
|
|
@ -1,28 +1,28 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
<androidx.coordinatorlayout.widget.CoordinatorLayout 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"
|
||||
android:fitsSystemWindows="true">
|
||||
|
||||
<android.support.design.widget.CoordinatorLayout
|
||||
<androidx.coordinatorlayout.widget.CoordinatorLayout
|
||||
android:fitsSystemWindows="true"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<android.support.design.widget.AppBarLayout
|
||||
<com.google.android.material.appbar.AppBarLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:theme="@style/AppTheme.ActionBar">
|
||||
|
||||
<android.support.v7.widget.Toolbar
|
||||
<androidx.appcompat.widget.Toolbar
|
||||
android:id="@+id/toolbar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="?attr/actionBarSize"
|
||||
android:background="@color/colorPrimary"/>
|
||||
|
||||
<android.support.constraint.ConstraintLayout
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
|
|
@ -63,17 +63,17 @@
|
|||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
</android.support.constraint.ConstraintLayout>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
</android.support.design.widget.AppBarLayout>
|
||||
</com.google.android.material.appbar.AppBarLayout>
|
||||
|
||||
<android.support.constraint.ConstraintLayout
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/constraintLayout2"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
app:layout_behavior="@string/appbar_scrolling_view_behavior">
|
||||
|
||||
<android.support.v7.widget.RecyclerView
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/exercise_list"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
|
|
@ -85,7 +85,7 @@
|
|||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintVertical_bias="0.0">
|
||||
|
||||
</android.support.v7.widget.RecyclerView>
|
||||
</androidx.recyclerview.widget.RecyclerView>
|
||||
|
||||
<ProgressBar
|
||||
android:id="@+id/loading_spinner"
|
||||
|
|
@ -98,9 +98,9 @@
|
|||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
</android.support.constraint.ConstraintLayout>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<android.support.design.widget.FloatingActionButton
|
||||
<com.google.android.material.floatingactionbutton.FloatingActionButton
|
||||
android:id="@+id/add_button"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
|
|
@ -113,6 +113,6 @@
|
|||
android:layout_gravity="bottom|end"
|
||||
app:srcCompat="@drawable/ic_edit_white_24dp" />
|
||||
|
||||
</android.support.design.widget.CoordinatorLayout>
|
||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
||||
|
||||
</android.support.design.widget.CoordinatorLayout>
|
||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
<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:id="@+id/main_content"
|
||||
|
|
@ -20,11 +20,11 @@
|
|||
android:hapticFeedbackEnabled="true"
|
||||
android:onClick="onClick"
|
||||
android:scaleType="fitXY"
|
||||
android:tint="@color/colorPrimary"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintLeft_toLeftOf="parent"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:srcCompat="@drawable/ic_play_arrow_black" />
|
||||
app:srcCompat="@drawable/ic_play_arrow_black"
|
||||
app:tint="@color/colorPrimary" />
|
||||
|
||||
<ImageButton
|
||||
android:id="@+id/button_next"
|
||||
|
|
@ -39,12 +39,12 @@
|
|||
android:hapticFeedbackEnabled="true"
|
||||
android:onClick="onClick"
|
||||
android:scaleType="fitXY"
|
||||
android:tint="@color/colorPrimary"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintLeft_toLeftOf="parent"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:srcCompat="@drawable/ic_skip_next_black_48dp"
|
||||
app:layout_constraintHorizontal_bias="0.6666" />
|
||||
app:layout_constraintHorizontal_bias="0.6666"
|
||||
app:tint="@color/colorPrimary" />
|
||||
|
||||
<ImageButton
|
||||
android:id="@+id/button_prev"
|
||||
|
|
@ -59,12 +59,12 @@
|
|||
android:hapticFeedbackEnabled="true"
|
||||
android:onClick="onClick"
|
||||
android:scaleType="fitXY"
|
||||
android:tint="@color/colorPrimary"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintLeft_toLeftOf="parent"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:srcCompat="@drawable/ic_skip_previous_black_48dp"
|
||||
app:layout_constraintHorizontal_bias="0.3333" />
|
||||
app:layout_constraintHorizontal_bias="0.3333"
|
||||
app:tint="@color/colorPrimary" />
|
||||
|
||||
<ImageButton
|
||||
android:id="@+id/button_repeat"
|
||||
|
|
@ -80,12 +80,12 @@
|
|||
android:hapticFeedbackEnabled="true"
|
||||
android:onClick="onClick"
|
||||
android:scaleType="fitXY"
|
||||
android:tint="@color/middlegrey"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintHorizontal_bias="0.8333"
|
||||
app:layout_constraintLeft_toLeftOf="parent"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:srcCompat="@drawable/ic_repeat_black_48dp" />
|
||||
app:srcCompat="@drawable/ic_repeat_black_48dp"
|
||||
app:tint="@color/middlegrey" />
|
||||
|
||||
<ImageButton
|
||||
android:id="@+id/button_continuous"
|
||||
|
|
@ -101,14 +101,14 @@
|
|||
android:hapticFeedbackEnabled="true"
|
||||
android:onClick="onClick"
|
||||
android:scaleType="fitXY"
|
||||
android:tint="@color/middlegrey"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintHorizontal_bias="0.1666"
|
||||
app:layout_constraintLeft_toLeftOf="parent"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:srcCompat="@drawable/ic_update_black_40dp" />
|
||||
app:srcCompat="@drawable/ic_update_black_40dp"
|
||||
app:tint="@color/middlegrey" />
|
||||
|
||||
<android.support.constraint.ConstraintLayout
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/exercise_layout"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
|
|
@ -157,7 +157,7 @@
|
|||
|
||||
</RelativeLayout>
|
||||
|
||||
<android.support.constraint.ConstraintLayout
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/exercise_image_container"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
|
|
@ -199,9 +199,9 @@
|
|||
app:layout_constraintRight_toRightOf="@+id/exercise_image"
|
||||
app:layout_constraintTop_toTopOf="@+id/exercise_image"
|
||||
app:srcCompat="@drawable/ic_about"
|
||||
android:tint="@color/black"/>
|
||||
app:tint="@color/black" />
|
||||
|
||||
</android.support.constraint.ConstraintLayout>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/execution_title"
|
||||
|
|
@ -241,7 +241,7 @@
|
|||
app:layout_constraintLeft_toLeftOf="@+id/description_title"
|
||||
app:layout_constraintTop_toBottomOf="@+id/description_title" />
|
||||
|
||||
<android.support.v7.widget.CardView
|
||||
<androidx.cardview.widget.CardView
|
||||
android:id="@+id/section_card"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
|
|
@ -264,7 +264,7 @@
|
|||
android:gravity="center"
|
||||
android:text="Neck, Arms"
|
||||
android:textColor="@color/white" />
|
||||
</android.support.v7.widget.CardView>
|
||||
</androidx.cardview.widget.CardView>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/exercise_name"
|
||||
|
|
@ -284,9 +284,9 @@
|
|||
app:layout_constraintTop_toBottomOf="@+id/section_card" />
|
||||
|
||||
|
||||
</android.support.constraint.ConstraintLayout>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<android.support.constraint.ConstraintLayout
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/bigProgressBarLayout"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
|
|
@ -339,6 +339,6 @@
|
|||
app:layout_constraintLeft_toLeftOf="@+id/progressBarBig"
|
||||
app:layout_constraintRight_toRightOf="@+id/progressBarBig"
|
||||
app:layout_constraintTop_toTopOf="@+id/progressBarBig" />
|
||||
</android.support.constraint.ConstraintLayout>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
</android.support.constraint.ConstraintLayout>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<android.support.v4.widget.DrawerLayout
|
||||
<androidx.drawerlayout.widget.DrawerLayout
|
||||
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"
|
||||
|
|
@ -9,7 +9,7 @@
|
|||
android:layout_height="match_parent"
|
||||
tools:openDrawer="start">
|
||||
|
||||
<android.support.design.widget.CoordinatorLayout
|
||||
<androidx.coordinatorlayout.widget.CoordinatorLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:fitsSystemWindows="true"
|
||||
|
|
@ -37,9 +37,9 @@
|
|||
|
||||
</LinearLayout>
|
||||
|
||||
</android.support.design.widget.CoordinatorLayout>
|
||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
||||
|
||||
<android.support.design.widget.NavigationView
|
||||
<com.google.android.material.navigation.NavigationView
|
||||
android:id="@+id/nav_view"
|
||||
tools:visibility="gone"
|
||||
android:layout_width="wrap_content"
|
||||
|
|
@ -49,4 +49,4 @@
|
|||
app:headerLayout="@layout/nav_header"
|
||||
app:menu="@menu/nav_drawer" />
|
||||
|
||||
</android.support.v4.widget.DrawerLayout>
|
||||
</androidx.drawerlayout.widget.DrawerLayout>
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
<androidx.drawerlayout.widget.DrawerLayout 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:id="@+id/drawer_layout"
|
||||
|
|
@ -8,7 +8,7 @@
|
|||
android:fitsSystemWindows="true"
|
||||
tools:openDrawer="start">
|
||||
|
||||
<android.support.design.widget.CoordinatorLayout
|
||||
<androidx.coordinatorlayout.widget.CoordinatorLayout
|
||||
android:id="@+id/coordinator_layout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
|
|
@ -16,7 +16,7 @@
|
|||
|
||||
<include layout="@layout/layout_toolbar"/>
|
||||
|
||||
<android.support.constraint.ConstraintLayout
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
app:layout_behavior="@string/appbar_scrolling_view_behavior"
|
||||
android:id="@+id/main_content"
|
||||
|
|
@ -46,7 +46,7 @@
|
|||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<android.support.v7.widget.RecyclerView
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/exercise_set_list"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
|
|
@ -59,11 +59,11 @@
|
|||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintVertical_bias="0.0">
|
||||
|
||||
</android.support.v7.widget.RecyclerView>
|
||||
</androidx.recyclerview.widget.RecyclerView>
|
||||
|
||||
</android.support.constraint.ConstraintLayout>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<android.support.design.widget.FloatingActionButton
|
||||
<com.google.android.material.floatingactionbutton.FloatingActionButton
|
||||
android:id="@+id/add_button"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
|
|
@ -76,9 +76,9 @@
|
|||
app:fabSize="normal"
|
||||
app:srcCompat="@drawable/ic_add_white_24dp" />
|
||||
|
||||
</android.support.design.widget.CoordinatorLayout>
|
||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
||||
|
||||
<android.support.design.widget.NavigationView
|
||||
<com.google.android.material.navigation.NavigationView
|
||||
android:id="@+id/nav_view"
|
||||
tools:visibility="gone"
|
||||
android:layout_width="wrap_content"
|
||||
|
|
@ -88,4 +88,4 @@
|
|||
app:headerLayout="@layout/nav_header"
|
||||
app:menu="@menu/nav_drawer" />
|
||||
|
||||
</android.support.v4.widget.DrawerLayout>
|
||||
</androidx.drawerlayout.widget.DrawerLayout>
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
<androidx.drawerlayout.widget.DrawerLayout 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:id="@+id/drawer_layout"
|
||||
|
|
@ -8,14 +8,14 @@
|
|||
android:fitsSystemWindows="true"
|
||||
tools:openDrawer="start">
|
||||
|
||||
<android.support.design.widget.CoordinatorLayout
|
||||
<androidx.coordinatorlayout.widget.CoordinatorLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
tools:context="org.secuso.aktivpause.activities.EditExerciseSetActivity">
|
||||
|
||||
<include layout="@layout/layout_toolbar"/>
|
||||
|
||||
<android.support.constraint.ConstraintLayout
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
app:layout_behavior="@string/appbar_scrolling_view_behavior"
|
||||
android:id="@+id/main_content"
|
||||
|
|
@ -64,11 +64,11 @@
|
|||
</LinearLayout>
|
||||
|
||||
|
||||
</android.support.constraint.ConstraintLayout>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
</android.support.design.widget.CoordinatorLayout>
|
||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
||||
|
||||
<android.support.design.widget.NavigationView
|
||||
<com.google.android.material.navigation.NavigationView
|
||||
android:id="@+id/nav_view"
|
||||
tools:visibility="gone"
|
||||
android:layout_width="wrap_content"
|
||||
|
|
@ -78,4 +78,4 @@
|
|||
app:headerLayout="@layout/nav_header"
|
||||
app:menu="@menu/nav_drawer" />
|
||||
|
||||
</android.support.v4.widget.DrawerLayout>
|
||||
</androidx.drawerlayout.widget.DrawerLayout>
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
<androidx.drawerlayout.widget.DrawerLayout 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:id="@+id/drawer_layout"
|
||||
|
|
@ -8,7 +8,7 @@
|
|||
android:fitsSystemWindows="true"
|
||||
tools:openDrawer="start">
|
||||
|
||||
<android.support.design.widget.CoordinatorLayout
|
||||
<androidx.coordinatorlayout.widget.CoordinatorLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:fitsSystemWindows="true"
|
||||
|
|
@ -16,7 +16,7 @@
|
|||
|
||||
<include layout="@layout/layout_toolbar"/>
|
||||
|
||||
<android.support.constraint.ConstraintLayout
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/main_content"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
|
|
@ -25,7 +25,7 @@
|
|||
app:layout_behavior="@string/appbar_scrolling_view_behavior"
|
||||
tools:context="org.secuso.aktivpause.activities.TimerActivity">
|
||||
|
||||
<android.support.v7.widget.AppCompatSpinner
|
||||
<androidx.appcompat.widget.AppCompatSpinner
|
||||
android:id="@+id/spinner_choose_exercise_set"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
|
|
@ -288,11 +288,11 @@
|
|||
android:background="?android:selectableItemBackgroundBorderless"
|
||||
android:hapticFeedbackEnabled="true"
|
||||
android:onClick="onClick"
|
||||
android:tint="@color/darkblue"
|
||||
android:visibility="invisible"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintHorizontal_bias="0.5"
|
||||
app:srcCompat="@drawable/ic_replay_black_48dp" />
|
||||
app:srcCompat="@drawable/ic_replay_black_48dp"
|
||||
app:tint="@color/darkblue" />
|
||||
|
||||
<ImageButton
|
||||
android:id="@+id/button_playPause"
|
||||
|
|
@ -305,18 +305,18 @@
|
|||
android:hapticFeedbackEnabled="true"
|
||||
android:onClick="onClick"
|
||||
android:scaleType="fitXY"
|
||||
android:tint="@color/darkblue"
|
||||
app:layout_constraintHorizontal_bias="0.5"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintLeft_toLeftOf="parent"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:srcCompat="@drawable/ic_play_arrow_black" />
|
||||
app:srcCompat="@drawable/ic_play_arrow_black"
|
||||
app:tint="@color/darkblue" />
|
||||
|
||||
</android.support.constraint.ConstraintLayout>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
</android.support.design.widget.CoordinatorLayout>
|
||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
||||
|
||||
<android.support.design.widget.NavigationView
|
||||
<com.google.android.material.navigation.NavigationView
|
||||
android:id="@+id/nav_view"
|
||||
tools:visibility="gone"
|
||||
android:layout_width="wrap_content"
|
||||
|
|
@ -326,4 +326,4 @@
|
|||
app:headerLayout="@layout/nav_header"
|
||||
app:menu="@menu/nav_drawer" />
|
||||
|
||||
</android.support.v4.widget.DrawerLayout>
|
||||
</androidx.drawerlayout.widget.DrawerLayout>
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
android:layout_height="match_parent"
|
||||
tools:showIn="@layout/activity_tutorial">
|
||||
|
||||
<android.support.v4.view.ViewPager
|
||||
<androidx.viewpager.widget.ViewPager
|
||||
android:id="@+id/view_pager"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent" />
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<android.support.constraint.ConstraintLayout
|
||||
<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"
|
||||
|
|
@ -7,7 +7,7 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<android.support.design.widget.TextInputLayout
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="8dp"
|
||||
|
|
@ -19,12 +19,12 @@
|
|||
app:layout_constraintTop_toTopOf="parent"
|
||||
android:layout_marginTop="8dp">
|
||||
|
||||
<android.support.design.widget.TextInputEditText
|
||||
<com.google.android.material.textfield.TextInputEditText
|
||||
android:id="@+id/dialog_add_exercise_set_name"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:hint="@string/dialog_add_exercise_set_name"/>
|
||||
|
||||
</android.support.design.widget.TextInputLayout>
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
|
||||
</android.support.constraint.ConstraintLayout>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
<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"
|
||||
|
|
@ -84,7 +84,7 @@
|
|||
app:layout_constraintTop_toBottomOf="@+id/description_title"
|
||||
app:layout_constraintVertical_bias="0.0" />
|
||||
|
||||
<android.support.v7.widget.CardView
|
||||
<androidx.cardview.widget.CardView
|
||||
android:id="@+id/section_card"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
|
|
@ -109,6 +109,6 @@
|
|||
android:gravity="center"
|
||||
android:text="Neck, Arms"
|
||||
android:textColor="@color/white" />
|
||||
</android.support.v7.widget.CardView>
|
||||
</androidx.cardview.widget.CardView>
|
||||
|
||||
</android.support.constraint.ConstraintLayout>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:id="@+id/exercise_layout"
|
||||
android:layout_width="match_parent"
|
||||
|
|
@ -35,7 +35,7 @@
|
|||
app:layout_constraintRight_toRightOf="@+id/exercise_image"
|
||||
app:layout_constraintTop_toTopOf="@+id/exercise_image"
|
||||
app:srcCompat="@drawable/ic_about"
|
||||
android:tint="@color/black"/>
|
||||
app:tint="@color/black" />
|
||||
|
||||
<CheckBox
|
||||
android:id="@+id/exercise_checkbox"
|
||||
|
|
@ -48,4 +48,4 @@
|
|||
app:layout_constraintBottom_toBottomOf="@+id/exercise_image"
|
||||
app:layout_constraintRight_toRightOf="@+id/exercise_image" />
|
||||
|
||||
</android.support.constraint.ConstraintLayout>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
<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"
|
||||
|
|
@ -7,7 +7,7 @@
|
|||
android:layout_margin="0dp"
|
||||
android:padding="0dp">
|
||||
|
||||
<android.support.v7.widget.CardView
|
||||
<androidx.cardview.widget.CardView
|
||||
android:id="@+id/exercise_set_card"
|
||||
android:longClickable="true"
|
||||
android:clickable="true"
|
||||
|
|
@ -25,7 +25,7 @@
|
|||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent">
|
||||
|
||||
<android.support.constraint.ConstraintLayout
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
|
|
@ -50,11 +50,11 @@
|
|||
android:layout_marginTop="8dp"
|
||||
android:background="?android:selectableItemBackgroundBorderless"
|
||||
android:hapticFeedbackEnabled="true"
|
||||
android:tint="@color/colorAccent"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:srcCompat="@drawable/ic_mode_edit_black_24dp" />
|
||||
app:srcCompat="@drawable/ic_mode_edit_black_24dp"
|
||||
app:tint="@color/colorAccent" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/exercise_set_time_short"
|
||||
|
|
@ -117,7 +117,7 @@
|
|||
|
||||
</LinearLayout>
|
||||
|
||||
</android.support.constraint.ConstraintLayout>
|
||||
</android.support.v7.widget.CardView>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
</androidx.cardview.widget.CardView>
|
||||
|
||||
</android.support.constraint.ConstraintLayout>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<android.support.design.chip.Chip
|
||||
<com.google.android.material.chip.Chip
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:id="@+id/button"
|
||||
|
|
|
|||
|
|
@ -1,14 +1,14 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<android.support.design.widget.AppBarLayout
|
||||
<com.google.android.material.appbar.AppBarLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:theme="@style/AppTheme.ActionBar">
|
||||
<android.support.v7.widget.Toolbar
|
||||
<androidx.appcompat.widget.Toolbar
|
||||
android:id="@+id/toolbar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="?attr/actionBarSize"
|
||||
android:background="@color/colorPrimary" />
|
||||
|
||||
</android.support.design.widget.AppBarLayout>
|
||||
</com.google.android.material.appbar.AppBarLayout>
|
||||
|
|
@ -9,8 +9,11 @@ buildscript {
|
|||
}
|
||||
google()
|
||||
}
|
||||
|
||||
ext.kotlin_version = "1.7.20"
|
||||
dependencies {
|
||||
classpath 'com.android.tools.build:gradle:3.5.1'
|
||||
classpath 'com.android.tools.build:gradle:7.4.2'
|
||||
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
||||
|
||||
// NOTE: Do not place your application dependencies here; they belong
|
||||
// in the individual module build.gradle files
|
||||
|
|
|
|||
|
|
@ -15,4 +15,6 @@
|
|||
# When configured, Gradle will run in incubating parallel mode.
|
||||
# This option should only be used with decoupled projects. More details, visit
|
||||
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
|
||||
# org.gradle.parallel=true
|
||||
# org.gradle.parallel=true
|
||||
android.enableJetifier=true
|
||||
android.useAndroidX=true
|
||||
4
gradle/wrapper/gradle-wrapper.properties
vendored
4
gradle/wrapper/gradle-wrapper.properties
vendored
|
|
@ -1,6 +1,6 @@
|
|||
#Sat Sep 28 18:54:52 CEST 2019
|
||||
#Wed May 24 23:28:16 CEST 2023
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-bin.zip
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip
|
||||
|
|
|
|||
0
gradlew
vendored
Normal file → Executable file
0
gradlew
vendored
Normal file → Executable file
1
libs/privacy-friendly-backup-api
Submodule
1
libs/privacy-friendly-backup-api
Submodule
|
|
@ -0,0 +1 @@
|
|||
Subproject commit d267b0d5e899fe12f41a6b7aac2081b8d4ea71af
|
||||
|
|
@ -1 +1,3 @@
|
|||
include ':app'
|
||||
include ':backup-api'
|
||||
project(':backup-api').projectDir = new File('libs/privacy-friendly-backup-api/BackupAPI')
|
||||
Loading…
Add table
Add a link
Reference in a new issue