Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 16 additions & 21 deletions app/build.gradle
Original file line number Diff line number Diff line change
@@ -1,19 +1,18 @@
import org.jetbrains.kotlin.gradle.dsl.JvmTarget

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'
apply plugin: 'witness'
apply from: 'witness.gradle'
apply plugin: 'com.android.legacy-kapt'

android {
namespace "de.grobox.transportr"

defaultConfig {
versionCode 131
versionName "2.2.7"

applicationId "de.grobox.liberario"
minSdkVersion 24
compileSdk 33
compileSdk 34
targetSdkVersion 34

testInstrumentationRunner 'de.grobox.transportr.MockTestRunner'
Expand All @@ -24,12 +23,17 @@ android {
}
}

buildFeatures {
buildConfig true
viewBinding true
}

buildTypes {
release {
resValue "string", "app_name", "Transportr"
shrinkResources true
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.txt'
}

debug {
Expand All @@ -38,8 +42,8 @@ android {
resValue "string", "app_name", "Transportr Devel"
shrinkResources false
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
testProguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt', 'proguard-test.txt'
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.txt'
testProguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.txt', 'proguard-test.txt'

lintOptions {
disable 'ProtectedPermissions'
Expand All @@ -52,11 +56,6 @@ android {
sourceCompatibility JavaVersion.VERSION_1_8
}

dexOptions {
preDexLibraries !project.hasProperty('buildServer')
javaMaxHeapSize "1g"
}

sourceSets {
androidTest {
assets.srcDirs += files("$projectDir/schemas".toString())
Expand Down Expand Up @@ -87,7 +86,7 @@ android {
buildTypes.release.signingConfig = null
}

lintOptions {
lint {
checkReleaseBuilds false
disable 'MissingTranslation', // don't put too much pressure on Transifex contributors
'InvalidPackage',
Expand Down Expand Up @@ -138,12 +137,8 @@ dependencies {
implementation "com.google.dagger:dagger:$daggerVersion"
kapt "com.google.dagger:dagger-compiler:$daggerVersion"

implementation('com.google.guava:guava:29.0-android') {
exclude module: 'failureaccess'
exclude group: 'com.google.j2objc'
}
implementation('com.gitlab.opentransitmap:public-transport-enabler:09b90d37bfe452f7845f73aac256fd7eb2ae978a') {
exclude group: 'com.google.guava' // included above
implementation("org.jspecify:jspecify:1.0.0")
implementation('com.gitlab.opentransitmap:public-transport-enabler:1b2afb8f0224ed6d2461cf2c8e5a4a83f7fa20f6') {
exclude group: 'org.json', module: 'json' // provided by Android
exclude group: 'net.sf.kxml', module: 'kxml2' // provided by Android
exclude group: 'org.slf4j', module: 'slf4j-api' // v. 2.0.16 broken
Expand Down
Binary file removed app/libs/gradle-witness.jar
Binary file not shown.
2 changes: 2 additions & 0 deletions app/proguard-rules.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# todo: try to disable and test for breakages
-dontoptimize
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
Expand Down
1 change: 0 additions & 1 deletion app/src/debug/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest
package="de.grobox.transportr"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">

Expand Down
1 change: 0 additions & 1 deletion app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest
package="de.grobox.transportr"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:installLocation="auto">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,10 +25,10 @@
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.widget.Toolbar;

import javax.annotation.ParametersAreNonnullByDefault;
import org.jspecify.annotations.NullMarked;


@ParametersAreNonnullByDefault
@NullMarked
public abstract class TransportrFragment extends Fragment {

protected AppComponent getComponent() {
Expand Down
4 changes: 2 additions & 2 deletions app/src/main/java/de/grobox/transportr/ViewModelFactory.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,13 +22,13 @@

import java.util.Map;

import javax.annotation.ParametersAreNonnullByDefault;
import org.jspecify.annotations.NullMarked;
import javax.inject.Inject;
import javax.inject.Provider;
import javax.inject.Singleton;

@Singleton
@ParametersAreNonnullByDefault
@NullMarked
public class ViewModelFactory implements ViewModelProvider.Factory {
private final Map<Class<? extends ViewModel>, Provider<ViewModel>> creators;

Expand Down
14 changes: 9 additions & 5 deletions app/src/main/java/de/grobox/transportr/about/AboutActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ import androidx.fragment.app.FragmentPagerAdapter
import com.mikepenz.aboutlibraries.LibsBuilder
import de.grobox.transportr.R
import de.grobox.transportr.TransportrActivity
import kotlinx.android.synthetic.main.activity_about.*
import de.grobox.transportr.databinding.ActivityAboutBinding

class AboutActivity : TransportrActivity() {

Expand All @@ -35,13 +35,17 @@ class AboutActivity : TransportrActivity() {
val TAG : String = AboutActivity::class.java.simpleName
}

public override fun onCreate(savedInstanceState: Bundle?) {
private lateinit var binding: ActivityAboutBinding

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_about)
binding = ActivityAboutBinding.inflate(layoutInflater)
val view = binding.root
setContentView(view)
setUpCustomToolbar(false)

pager.adapter = AboutPagerAdapter(supportFragmentManager)
tabLayout.setupWithViewPager(pager)
binding.pager.adapter = AboutPagerAdapter(supportFragmentManager)
binding.tabLayout.setupWithViewPager(binding.pager)
}

private inner class AboutPagerAdapter internal constructor(fm: FragmentManager) : FragmentPagerAdapter(fm) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ import androidx.fragment.app.FragmentManager
import androidx.fragment.app.FragmentPagerAdapter
import de.grobox.transportr.R
import de.grobox.transportr.TransportrActivity
import kotlinx.android.synthetic.main.activity_about.*
import de.grobox.transportr.databinding.ActivityAboutBinding

class ContributorsActivity : TransportrActivity() {

Expand All @@ -34,13 +34,17 @@ class ContributorsActivity : TransportrActivity() {
val TAG : String = ContributorsActivity::class.java.simpleName
}

public override fun onCreate(savedInstanceState: Bundle?) {
private lateinit var binding: ActivityAboutBinding

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_about)
binding = ActivityAboutBinding.inflate(layoutInflater)
val view = binding.root
setContentView(view)
setUpCustomToolbar(false)

pager.adapter = ContributorsPagerAdapter(supportFragmentManager)
tabLayout.setupWithViewPager(pager)
binding.pager.adapter = ContributorsPagerAdapter(supportFragmentManager)
binding.tabLayout.setupWithViewPager(binding.pager)
}

private inner class ContributorsPagerAdapter internal constructor(fm: FragmentManager) : FragmentPagerAdapter(fm) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
import java.util.Date;

import de.grobox.transportr.R;
import de.grobox.transportr.databinding.ListItemDepartureBinding;
import de.schildbach.pte.dto.Departure;

class DepartureAdapter extends RecyclerView.Adapter<DepartureViewHolder> {
Expand Down Expand Up @@ -74,8 +75,8 @@ public boolean areContentsTheSame(Departure d1, Departure d2) {
@NonNull
@Override
public DepartureViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.list_item_departure, viewGroup, false);
return new DepartureViewHolder(v);
ListItemDepartureBinding binding = ListItemDepartureBinding.inflate(LayoutInflater.from(viewGroup.getContext()), viewGroup, false);
return new DepartureViewHolder(binding);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,27 +27,27 @@ import androidx.cardview.widget.CardView
import androidx.core.content.ContextCompat
import androidx.recyclerview.widget.RecyclerView
import de.grobox.transportr.R
import de.grobox.transportr.databinding.ListItemDepartureBinding
import de.grobox.transportr.ui.LineView
import de.grobox.transportr.utils.DateUtils.formatDelay
import de.grobox.transportr.utils.DateUtils.formatTime
import de.grobox.transportr.utils.DateUtils.formatRelativeTime
import de.grobox.transportr.utils.TransportrUtils.getLineColor
import de.grobox.transportr.utils.TransportrUtils.getLocationName
import de.schildbach.pte.dto.Departure
import kotlinx.android.synthetic.main.list_item_departure.view.*
import java.util.*

internal class DepartureViewHolder(v: View) : RecyclerView.ViewHolder(v) {
internal class DepartureViewHolder(binding: ListItemDepartureBinding) : RecyclerView.ViewHolder(binding.root) {

private val card: CardView = v as CardView
private val line: LineView = v.line
private val lineName: TextView = v.lineNameView
private val timeRel: TextView = v.departureTimeRel
private val timeAbs: TextView = v.departureTimeAbs
private val delay: TextView = v.delay
private val destination: TextView = v.destinationView
private val position: TextView = v.positionView
private val message: TextView = v.messageView
private val card: CardView = binding.root as CardView
private val line: LineView = binding.line
private val lineName: TextView = binding.lineNameView
private val timeRel: TextView = binding.departureTimeRel
private val timeAbs: TextView = binding.departureTimeAbs
private val delay: TextView = binding.delay
private val destination: TextView = binding.destinationView
private val position: TextView = binding.positionView
private val message: TextView = binding.messageView

fun bind(dep: Departure) {
// times and delay
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@
import java.util.Date;
import java.util.List;

import javax.annotation.ParametersAreNonnullByDefault;
import org.jspecify.annotations.NullMarked;

import de.grobox.transportr.R;
import de.grobox.transportr.TransportrActivity;
Expand All @@ -68,7 +68,7 @@
import static de.grobox.transportr.utils.TransportrUtils.getDragDistance;
import static de.schildbach.pte.dto.QueryDeparturesResult.Status.OK;

@ParametersAreNonnullByDefault
@NullMarked
public class DeparturesActivity extends TransportrActivity
implements LoaderCallbacks<QueryDeparturesResult>, TimeDateListener {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,10 +40,10 @@ import de.grobox.transportr.locations.LocationView
import de.grobox.transportr.locations.LocationsViewModel
import de.grobox.transportr.locations.WrapLocation
import de.grobox.transportr.settings.SettingsManager
import javax.annotation.ParametersAreNonnullByDefault
import org.jspecify.annotations.NullMarked
import javax.inject.Inject

@ParametersAreNonnullByDefault
@NullMarked
abstract class SpecialLocationFragment : DialogFragment(), LocationView.LocationViewListener {

@Inject
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,15 +30,15 @@
import java.util.Collection;
import java.util.List;

import javax.annotation.ParametersAreNonnullByDefault;
import org.jspecify.annotations.NullMarked;

import de.grobox.transportr.R;

import static androidx.recyclerview.widget.SortedList.INVALID_POSITION;
import static de.grobox.transportr.favorites.trips.FavoriteTripType.HOME;
import static de.grobox.transportr.favorites.trips.FavoriteTripType.WORK;

@ParametersAreNonnullByDefault
@NullMarked
class FavoriteTripAdapter extends RecyclerView.Adapter<AbstractFavoritesViewHolder> {

private final SortedList<FavoriteTripItem> items = new SortedList<>(FavoriteTripItem.class, new SortedList.Callback<FavoriteTripItem>() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,10 @@

import androidx.annotation.Nullable;

import com.google.common.base.Objects;
import org.jspecify.annotations.NullMarked;

import java.util.Date;

import javax.annotation.ParametersAreNonnullByDefault;
import java.util.Objects;

import de.grobox.transportr.data.locations.HomeLocation;
import de.grobox.transportr.data.locations.WorkLocation;
Expand All @@ -37,7 +36,7 @@
import static de.grobox.transportr.favorites.trips.FavoriteTripType.WORK;
import static de.grobox.transportr.locations.WrapLocation.WrapType.GPS;

@ParametersAreNonnullByDefault
@NullMarked
public class FavoriteTripItem extends StoredSearch implements Comparable<FavoriteTripItem> {

private final FavoriteTripType type;
Expand Down Expand Up @@ -133,13 +132,13 @@ boolean equalsAllFields(Object o) {
if (!(o instanceof FavoriteTripItem))
return false;
final FavoriteTripItem other = (FavoriteTripItem) o;
if (!Objects.equal(this.type, other.type))
if (!Objects.equals(this.type, other.type))
return false;
if (!Objects.equal(this.from, other.from))
if (!Objects.equals(this.from, other.from))
return false;
if (!Objects.equal(this.to, other.to))
if (!Objects.equals(this.to, other.to))
return false;
if (!Objects.equal(this.via, other.via))
if (!Objects.equals(this.via, other.via))
return false;
if (this.count != other.count)
return false;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,9 @@

package de.grobox.transportr.favorites.trips;

import javax.annotation.ParametersAreNonnullByDefault;
import org.jspecify.annotations.NullMarked;

@ParametersAreNonnullByDefault
@NullMarked
public interface FavoriteTripListener {

void onFavoriteClicked(FavoriteTripItem item);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@

import java.util.List;

import javax.annotation.ParametersAreNonnullByDefault;
import org.jspecify.annotations.NullMarked;
import javax.inject.Inject;

import androidx.annotation.NonNull;
Expand All @@ -51,7 +51,7 @@
import static de.grobox.transportr.favorites.trips.FavoriteTripType.WORK;
import static de.grobox.transportr.utils.IntentUtils.findDirections;

@ParametersAreNonnullByDefault
@NullMarked
public abstract class FavoriteTripsFragment<VM extends SavedSearchesViewModel> extends TransportrFragment implements FavoriteTripListener {

@Inject protected ViewModelProvider.Factory viewModelFactory;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
import de.grobox.transportr.R
import de.grobox.transportr.databinding.ListItemLineBinding
import de.grobox.transportr.ui.LineView
import de.grobox.transportr.utils.TransportrUtils
import de.schildbach.pte.dto.Line
Expand All @@ -33,8 +34,8 @@ internal class LineAdapter : RecyclerView.Adapter<LineViewHolder>() {
private var lines: List<Line> = emptyList()

override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): LineViewHolder {
val v = LayoutInflater.from(parent.context).inflate(R.layout.list_item_line, parent, false) as LineView
return LineViewHolder(v)
val binding = ListItemLineBinding.inflate(LayoutInflater.from(parent.context), parent, false)
return LineViewHolder(binding.root)
}

override fun onBindViewHolder(holder: LineViewHolder, position: Int) {
Expand Down
Loading
Loading