Organize imports.

This commit is contained in:
Andreas Schildbach 2021-01-21 20:03:46 +01:00
parent 3151671439
commit 4a6b23d2f8
72 changed files with 855 additions and 1029 deletions

View file

@ -17,24 +17,6 @@
package de.schildbach.oeffi; package de.schildbach.oeffi;
import java.io.File;
import java.io.FilenameFilter;
import java.lang.reflect.Method;
import java.util.concurrent.TimeUnit;
import org.osmdroid.config.Configuration;
import org.osmdroid.config.IConfigurationProvider;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.google.common.base.Stopwatch;
import de.schildbach.oeffi.directions.QueryHistoryProvider;
import de.schildbach.oeffi.stations.FavoriteStationsProvider;
import de.schildbach.oeffi.stations.NearestFavoriteStationWidgetService;
import de.schildbach.oeffi.util.ErrorReporter;
import de.schildbach.pte.NetworkId;
import android.app.NotificationChannel; import android.app.NotificationChannel;
import android.app.NotificationManager; import android.app.NotificationManager;
import android.content.Context; import android.content.Context;
@ -50,8 +32,23 @@ import ch.qos.logback.classic.encoder.PatternLayoutEncoder;
import ch.qos.logback.classic.spi.ILoggingEvent; import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.core.rolling.RollingFileAppender; import ch.qos.logback.core.rolling.RollingFileAppender;
import ch.qos.logback.core.rolling.TimeBasedRollingPolicy; import ch.qos.logback.core.rolling.TimeBasedRollingPolicy;
import com.google.common.base.Stopwatch;
import de.schildbach.oeffi.directions.QueryHistoryProvider;
import de.schildbach.oeffi.stations.FavoriteStationsProvider;
import de.schildbach.oeffi.stations.NearestFavoriteStationWidgetService;
import de.schildbach.oeffi.util.ErrorReporter;
import de.schildbach.pte.NetworkId;
import okhttp3.OkHttpClient; import okhttp3.OkHttpClient;
import okhttp3.logging.HttpLoggingInterceptor; import okhttp3.logging.HttpLoggingInterceptor;
import org.osmdroid.config.Configuration;
import org.osmdroid.config.IConfigurationProvider;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.File;
import java.io.FilenameFilter;
import java.lang.reflect.Method;
import java.util.concurrent.TimeUnit;
public class Application extends android.app.Application { public class Application extends android.app.Application {
private PackageInfo packageInfo; private PackageInfo packageInfo;

View file

@ -17,13 +17,13 @@
package de.schildbach.oeffi; package de.schildbach.oeffi;
import java.util.Locale;
import android.app.AlertDialog; import android.app.AlertDialog;
import android.os.Build; import android.os.Build;
import android.text.format.DateUtils; import android.text.format.DateUtils;
import okhttp3.HttpUrl; import okhttp3.HttpUrl;
import java.util.Locale;
public class Constants { public class Constants {
public static final HttpUrl OEFFI_BASE_URL = HttpUrl.parse("https://oeffi.schildbach.de/"); public static final HttpUrl OEFFI_BASE_URL = HttpUrl.parse("https://oeffi.schildbach.de/");
public static final HttpUrl PLANS_BASE_URL = OEFFI_BASE_URL.newBuilder().addPathSegment("plans").build(); public static final HttpUrl PLANS_BASE_URL = OEFFI_BASE_URL.newBuilder().addPathSegment("plans").build();

View file

@ -17,9 +17,6 @@
package de.schildbach.oeffi; package de.schildbach.oeffi;
import de.schildbach.oeffi.util.CheatSheet;
import de.schildbach.oeffi.util.ToggleImageButton;
import android.content.Context; import android.content.Context;
import android.content.res.Resources; import android.content.res.Resources;
import android.os.Handler; import android.os.Handler;
@ -36,6 +33,8 @@ import android.widget.ImageView.ScaleType;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import android.widget.PopupMenu; import android.widget.PopupMenu;
import android.widget.TextView; import android.widget.TextView;
import de.schildbach.oeffi.util.CheatSheet;
import de.schildbach.oeffi.util.ToggleImageButton;
public class MyActionBar extends LinearLayout { public class MyActionBar extends LinearLayout {
private final Context context; private final Context context;

View file

@ -17,14 +17,6 @@
package de.schildbach.oeffi; package de.schildbach.oeffi;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import de.schildbach.oeffi.network.NetworkResources;
import de.schildbach.oeffi.util.ErrorReporter;
import de.schildbach.pte.NetworkId;
import de.schildbach.pte.dto.ResultHeader;
import android.annotation.TargetApi; import android.annotation.TargetApi;
import android.app.Activity; import android.app.Activity;
import android.app.ActivityManager.TaskDescription; import android.app.ActivityManager.TaskDescription;
@ -39,6 +31,12 @@ import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import android.widget.TextView; import android.widget.TextView;
import de.schildbach.oeffi.network.NetworkResources;
import de.schildbach.oeffi.util.ErrorReporter;
import de.schildbach.pte.NetworkId;
import de.schildbach.pte.dto.ResultHeader;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public abstract class OeffiActivity extends Activity { public abstract class OeffiActivity extends Activity {
protected Application application; protected Application application;

View file

@ -17,49 +17,6 @@
package de.schildbach.oeffi; package de.schildbach.oeffi;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import de.schildbach.oeffi.preference.AboutFragment;
import de.schildbach.oeffi.preference.DonateFragment;
import de.schildbach.oeffi.preference.PreferenceActivity;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.google.common.base.Charsets;
import com.google.common.base.Splitter;
import com.google.common.base.Strings;
import com.google.common.util.concurrent.FutureCallback;
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
import de.schildbach.oeffi.directions.DirectionsActivity;
import de.schildbach.oeffi.network.NetworkPickerActivity;
import de.schildbach.oeffi.network.NetworkResources;
import de.schildbach.oeffi.plans.PlansPickerActivity;
import de.schildbach.oeffi.stations.StationsActivity;
import de.schildbach.oeffi.util.ChangelogDialogBuilder;
import de.schildbach.oeffi.util.DialogBuilder;
import de.schildbach.oeffi.util.DividerItemDecoration;
import de.schildbach.oeffi.util.Downloader;
import de.schildbach.oeffi.util.ErrorReporter;
import de.schildbach.oeffi.util.Installer;
import de.schildbach.oeffi.util.NavigationMenuAdapter;
import de.schildbach.oeffi.util.UiThreadExecutor;
import de.schildbach.pte.NetworkId;
import android.animation.AnimatorInflater; import android.animation.AnimatorInflater;
import android.animation.AnimatorSet; import android.animation.AnimatorSet;
import android.app.Dialog; import android.app.Dialog;
@ -79,16 +36,55 @@ import android.view.KeyEvent;
import android.view.Menu; import android.view.Menu;
import android.view.MenuItem; import android.view.MenuItem;
import android.view.View; import android.view.View;
import android.view.View.OnClickListener;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.drawerlayout.widget.DrawerLayout; import androidx.drawerlayout.widget.DrawerLayout;
import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
import com.google.common.base.Charsets;
import com.google.common.base.Splitter;
import com.google.common.base.Strings;
import com.google.common.util.concurrent.FutureCallback;
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
import de.schildbach.oeffi.directions.DirectionsActivity;
import de.schildbach.oeffi.network.NetworkPickerActivity;
import de.schildbach.oeffi.network.NetworkResources;
import de.schildbach.oeffi.plans.PlansPickerActivity;
import de.schildbach.oeffi.preference.AboutFragment;
import de.schildbach.oeffi.preference.DonateFragment;
import de.schildbach.oeffi.preference.PreferenceActivity;
import de.schildbach.oeffi.stations.StationsActivity;
import de.schildbach.oeffi.util.ChangelogDialogBuilder;
import de.schildbach.oeffi.util.DialogBuilder;
import de.schildbach.oeffi.util.DividerItemDecoration;
import de.schildbach.oeffi.util.Downloader;
import de.schildbach.oeffi.util.ErrorReporter;
import de.schildbach.oeffi.util.Installer;
import de.schildbach.oeffi.util.NavigationMenuAdapter;
import de.schildbach.oeffi.util.UiThreadExecutor;
import de.schildbach.pte.NetworkId;
import okhttp3.Call; import okhttp3.Call;
import okhttp3.Callback; import okhttp3.Callback;
import okhttp3.HttpUrl; import okhttp3.HttpUrl;
import okhttp3.Request; import okhttp3.Request;
import okhttp3.Response; import okhttp3.Response;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public abstract class OeffiMainActivity extends OeffiActivity { public abstract class OeffiMainActivity extends OeffiActivity {
protected NetworkId network; protected NetworkId network;

View file

@ -17,28 +17,6 @@
package de.schildbach.oeffi; package de.schildbach.oeffi;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;
import org.osmdroid.api.IGeoPoint;
import org.osmdroid.util.BoundingBox;
import org.osmdroid.util.GeoPoint;
import org.osmdroid.views.MapView;
import org.osmdroid.views.Projection;
import org.osmdroid.views.overlay.Overlay;
import de.schildbach.oeffi.stations.LineView;
import de.schildbach.oeffi.stations.Station;
import de.schildbach.oeffi.util.ZoomControls;
import de.schildbach.pte.dto.Location;
import de.schildbach.pte.dto.Point;
import de.schildbach.pte.dto.Product;
import de.schildbach.pte.dto.Trip;
import de.schildbach.pte.dto.Trip.Leg;
import de.schildbach.pte.dto.Trip.Public;
import android.content.Context; import android.content.Context;
import android.content.res.Resources; import android.content.res.Resources;
import android.graphics.Canvas; import android.graphics.Canvas;
@ -52,10 +30,29 @@ import android.util.AttributeSet;
import android.util.TypedValue; import android.util.TypedValue;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.MotionEvent; import android.view.MotionEvent;
import android.view.View;
import android.view.animation.Animation; import android.view.animation.Animation;
import android.view.animation.AnimationUtils; import android.view.animation.AnimationUtils;
import android.widget.TextView; import android.widget.TextView;
import de.schildbach.oeffi.stations.LineView;
import de.schildbach.oeffi.stations.Station;
import de.schildbach.oeffi.util.ZoomControls;
import de.schildbach.pte.dto.Location;
import de.schildbach.pte.dto.Point;
import de.schildbach.pte.dto.Product;
import de.schildbach.pte.dto.Trip;
import de.schildbach.pte.dto.Trip.Leg;
import de.schildbach.pte.dto.Trip.Public;
import org.osmdroid.api.IGeoPoint;
import org.osmdroid.util.BoundingBox;
import org.osmdroid.util.GeoPoint;
import org.osmdroid.views.MapView;
import org.osmdroid.views.Projection;
import org.osmdroid.views.overlay.Overlay;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;
public class OeffiMapView extends MapView { public class OeffiMapView extends MapView {
private ZoomControls zoomControls = null; private ZoomControls zoomControls = null;

View file

@ -17,10 +17,10 @@
package de.schildbach.oeffi; package de.schildbach.oeffi;
import java.util.List;
import de.schildbach.oeffi.stations.Station; import de.schildbach.oeffi.stations.Station;
import java.util.List;
public interface StationsAware { public interface StationsAware {
List<Station> getStations(); List<Station> getStations();

View file

@ -17,33 +17,56 @@
package de.schildbach.oeffi.directions; package de.schildbach.oeffi.directions;
import java.io.ByteArrayInputStream; import android.Manifest;
import java.io.IOException; import android.animation.LayoutTransition;
import java.io.InvalidClassException; import android.app.Activity;
import java.io.ObjectInputStream; import android.app.DatePickerDialog;
import java.io.StreamCorruptedException; import android.app.Dialog;
import java.util.ArrayList; import android.app.ProgressDialog;
import java.util.Calendar; import android.app.TimePickerDialog;
import java.util.Collection; import android.content.BroadcastReceiver;
import java.util.EnumSet; import android.content.Context;
import java.util.GregorianCalendar; import android.content.Intent;
import java.util.HashSet; import android.content.IntentFilter;
import java.util.LinkedList; import android.content.pm.PackageManager;
import java.util.List; import android.content.res.Configuration;
import java.util.Set; import android.database.Cursor;
import android.graphics.Canvas;
import javax.net.ssl.SSLException; import android.location.Address;
import android.location.LocationManager;
import org.osmdroid.api.IGeoPoint; import android.net.ConnectivityManager;
import org.osmdroid.api.IMapController; import android.net.Uri;
import org.osmdroid.views.MapView; import android.os.Bundle;
import org.osmdroid.views.overlay.Overlay; import android.os.Handler;
import org.slf4j.Logger; import android.os.HandlerThread;
import org.slf4j.LoggerFactory; import android.os.Process;
import android.provider.ContactsContract.CommonDataKinds;
import android.text.format.DateFormat;
import android.text.format.DateUtils;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnLongClickListener;
import android.view.ViewGroup;
import android.view.inputmethod.EditorInfo;
import android.widget.ArrayAdapter;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.Filter;
import android.widget.Filterable;
import android.widget.PopupMenu;
import android.widget.TextView;
import androidx.annotation.Nullable;
import androidx.coordinatorlayout.widget.CoordinatorLayout;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import androidx.core.view.ViewCompat;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.google.common.base.Throwables; import com.google.common.base.Throwables;
import com.google.common.primitives.Floats; import com.google.common.primitives.Floats;
import de.schildbach.oeffi.Constants; import de.schildbach.oeffi.Constants;
import de.schildbach.oeffi.FromViaToAware; import de.schildbach.oeffi.FromViaToAware;
import de.schildbach.oeffi.MyActionBar; import de.schildbach.oeffi.MyActionBar;
@ -69,7 +92,6 @@ import de.schildbach.oeffi.util.GeocoderThread;
import de.schildbach.oeffi.util.LocationUriParser; import de.schildbach.oeffi.util.LocationUriParser;
import de.schildbach.oeffi.util.Toast; import de.schildbach.oeffi.util.Toast;
import de.schildbach.oeffi.util.ToggleImageButton; import de.schildbach.oeffi.util.ToggleImageButton;
import de.schildbach.oeffi.util.ToggleImageButton.OnCheckedChangeListener;
import de.schildbach.oeffi.util.ZoomControls; import de.schildbach.oeffi.util.ZoomControls;
import de.schildbach.pte.NetworkId; import de.schildbach.pte.NetworkId;
import de.schildbach.pte.NetworkProvider; import de.schildbach.pte.NetworkProvider;
@ -86,63 +108,29 @@ import de.schildbach.pte.dto.QueryTripsResult;
import de.schildbach.pte.dto.SuggestLocationsResult; import de.schildbach.pte.dto.SuggestLocationsResult;
import de.schildbach.pte.dto.Trip; import de.schildbach.pte.dto.Trip;
import de.schildbach.pte.dto.TripOptions; import de.schildbach.pte.dto.TripOptions;
import android.Manifest;
import android.animation.LayoutTransition;
import android.app.Activity;
import android.app.DatePickerDialog;
import android.app.DatePickerDialog.OnDateSetListener;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.app.TimePickerDialog;
import android.app.TimePickerDialog.OnTimeSetListener;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnCancelListener;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.pm.PackageManager;
import android.content.res.Configuration;
import android.database.Cursor;
import android.graphics.Canvas;
import android.location.Address;
import android.location.LocationManager;
import android.net.ConnectivityManager;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.os.HandlerThread;
import android.os.Process;
import android.provider.ContactsContract.CommonDataKinds;
import android.text.format.DateFormat;
import android.text.format.DateUtils;
import android.view.KeyEvent;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnLongClickListener;
import android.view.ViewGroup;
import android.view.inputmethod.EditorInfo;
import android.widget.ArrayAdapter;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.DatePicker;
import android.widget.Filter;
import android.widget.Filterable;
import android.widget.PopupMenu;
import android.widget.TextView;
import android.widget.TimePicker;
import androidx.annotation.Nullable;
import androidx.coordinatorlayout.widget.CoordinatorLayout;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import androidx.core.view.ViewCompat;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import okhttp3.HttpUrl; import okhttp3.HttpUrl;
import org.osmdroid.api.IGeoPoint;
import org.osmdroid.api.IMapController;
import org.osmdroid.views.MapView;
import org.osmdroid.views.overlay.Overlay;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.net.ssl.SSLException;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InvalidClassException;
import java.io.ObjectInputStream;
import java.io.StreamCorruptedException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collection;
import java.util.EnumSet;
import java.util.GregorianCalendar;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Set;
public class DirectionsActivity extends OeffiMainActivity implements ActivityCompat.OnRequestPermissionsResultCallback, public class DirectionsActivity extends OeffiMainActivity implements ActivityCompat.OnRequestPermissionsResultCallback,
QueryHistoryClickListener, QueryHistoryContextMenuItemListener { QueryHistoryClickListener, QueryHistoryContextMenuItemListener {

View file

@ -17,15 +17,22 @@
package de.schildbach.oeffi.directions; package de.schildbach.oeffi.directions;
import java.util.Set; import android.Manifest;
import android.app.ProgressDialog;
import javax.net.ssl.SSLException; import android.content.Context;
import android.content.Intent;
import org.slf4j.Logger; import android.content.pm.PackageManager;
import org.slf4j.LoggerFactory; import android.location.Address;
import android.location.Criteria;
import android.location.LocationManager;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.os.HandlerThread;
import android.os.Process;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import com.google.common.base.Throwables; import com.google.common.base.Throwables;
import de.schildbach.oeffi.Constants; import de.schildbach.oeffi.Constants;
import de.schildbach.oeffi.OeffiActivity; import de.schildbach.oeffi.OeffiActivity;
import de.schildbach.oeffi.R; import de.schildbach.oeffi.R;
@ -44,26 +51,12 @@ import de.schildbach.pte.dto.Point;
import de.schildbach.pte.dto.Product; import de.schildbach.pte.dto.Product;
import de.schildbach.pte.dto.QueryTripsResult; import de.schildbach.pte.dto.QueryTripsResult;
import de.schildbach.pte.dto.TripOptions; import de.schildbach.pte.dto.TripOptions;
import android.Manifest;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnCancelListener;
import android.content.DialogInterface.OnClickListener;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.location.Address;
import android.location.Criteria;
import android.location.LocationManager;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.os.HandlerThread;
import android.os.Process;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import okhttp3.HttpUrl; import okhttp3.HttpUrl;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.net.ssl.SSLException;
import java.util.Set;
public class DirectionsShortcutActivity extends OeffiActivity public class DirectionsShortcutActivity extends OeffiActivity
implements ActivityCompat.OnRequestPermissionsResultCallback, LocationHelper.Callback { implements ActivityCompat.OnRequestPermissionsResultCallback, LocationHelper.Callback {

View file

@ -17,15 +17,14 @@
package de.schildbach.oeffi.directions; package de.schildbach.oeffi.directions;
import java.util.Locale;
import de.schildbach.oeffi.R;
import de.schildbach.pte.dto.Location;
import android.content.Context; import android.content.Context;
import android.text.Html; import android.text.Html;
import android.util.AttributeSet; import android.util.AttributeSet;
import android.widget.TextView; import android.widget.TextView;
import de.schildbach.oeffi.R;
import de.schildbach.pte.dto.Location;
import java.util.Locale;
public class LocationTextView extends TextView { public class LocationTextView extends TextView {
private String label = null; private String label = null;

View file

@ -17,20 +17,6 @@
package de.schildbach.oeffi.directions; package de.schildbach.oeffi.directions;
import java.util.Locale;
import com.google.common.base.Strings;
import de.schildbach.oeffi.Constants;
import de.schildbach.oeffi.R;
import de.schildbach.oeffi.util.GeocoderThread;
import de.schildbach.oeffi.util.LocationHelper;
import de.schildbach.oeffi.util.MultiDrawable;
import de.schildbach.oeffi.util.PopupHelper;
import de.schildbach.pte.dto.Location;
import de.schildbach.pte.dto.LocationType;
import de.schildbach.pte.dto.Point;
import android.content.Context; import android.content.Context;
import android.content.res.Resources; import android.content.res.Resources;
import android.content.res.TypedArray; import android.content.res.TypedArray;
@ -49,8 +35,6 @@ import android.util.TypedValue;
import android.view.Gravity; import android.view.Gravity;
import android.view.View; import android.view.View;
import android.view.inputmethod.EditorInfo; import android.view.inputmethod.EditorInfo;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AutoCompleteTextView; import android.widget.AutoCompleteTextView;
import android.widget.Filterable; import android.widget.Filterable;
import android.widget.FrameLayout; import android.widget.FrameLayout;
@ -58,6 +42,18 @@ import android.widget.ListAdapter;
import android.widget.PopupMenu; import android.widget.PopupMenu;
import android.widget.TextView.OnEditorActionListener; import android.widget.TextView.OnEditorActionListener;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import com.google.common.base.Strings;
import de.schildbach.oeffi.Constants;
import de.schildbach.oeffi.R;
import de.schildbach.oeffi.util.GeocoderThread;
import de.schildbach.oeffi.util.LocationHelper;
import de.schildbach.oeffi.util.MultiDrawable;
import de.schildbach.oeffi.util.PopupHelper;
import de.schildbach.pte.dto.Location;
import de.schildbach.pte.dto.LocationType;
import de.schildbach.pte.dto.Point;
import java.util.Locale;
public class LocationView extends FrameLayout implements LocationHelper.Callback { public class LocationView extends FrameLayout implements LocationHelper.Callback {
public static interface Listener { public static interface Listener {

View file

@ -17,9 +17,6 @@
package de.schildbach.oeffi.directions; package de.schildbach.oeffi.directions;
import de.schildbach.oeffi.R;
import de.schildbach.pte.dto.Style;
import android.content.Context; import android.content.Context;
import android.content.res.Resources; import android.content.res.Resources;
import android.graphics.Canvas; import android.graphics.Canvas;
@ -28,6 +25,8 @@ import android.graphics.Paint;
import android.graphics.Paint.FontMetrics; import android.graphics.Paint.FontMetrics;
import android.util.AttributeSet; import android.util.AttributeSet;
import android.view.View; import android.view.View;
import de.schildbach.oeffi.R;
import de.schildbach.pte.dto.Style;
public class PearlView extends View { public class PearlView extends View {
private Type type = null; private Type type = null;

View file

@ -17,15 +17,6 @@
package de.schildbach.oeffi.directions; package de.schildbach.oeffi.directions;
import java.util.ArrayList;
import java.util.List;
import de.schildbach.oeffi.Application;
import de.schildbach.oeffi.Constants;
import de.schildbach.pte.NetworkId;
import de.schildbach.pte.dto.Location;
import de.schildbach.pte.dto.LocationType;
import android.content.ContentProvider; import android.content.ContentProvider;
import android.content.ContentResolver; import android.content.ContentResolver;
import android.content.ContentValues; import android.content.ContentValues;
@ -35,6 +26,14 @@ import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper; import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteQueryBuilder; import android.database.sqlite.SQLiteQueryBuilder;
import android.net.Uri; import android.net.Uri;
import de.schildbach.oeffi.Application;
import de.schildbach.oeffi.Constants;
import de.schildbach.pte.NetworkId;
import de.schildbach.pte.dto.Location;
import de.schildbach.pte.dto.LocationType;
import java.util.ArrayList;
import java.util.List;
public class QueryHistoryProvider extends ContentProvider { public class QueryHistoryProvider extends ContentProvider {
private static final String DATABASE_TABLE = "query_history"; private static final String DATABASE_TABLE = "query_history";

View file

@ -17,21 +17,13 @@
package de.schildbach.oeffi.directions; package de.schildbach.oeffi.directions;
import java.io.IOException; import android.app.ProgressDialog;
import java.net.SocketException; import android.content.res.Resources;
import java.net.SocketTimeoutException; import android.graphics.Typeface;
import java.net.UnknownHostException; import android.os.Handler;
import java.util.Date; import android.text.SpannableStringBuilder;
import java.util.concurrent.TimeUnit; import android.text.style.StyleSpan;
import java.util.concurrent.atomic.AtomicBoolean;
import javax.net.ssl.SSLException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.google.common.util.concurrent.Uninterruptibles; import com.google.common.util.concurrent.Uninterruptibles;
import de.schildbach.oeffi.Constants; import de.schildbach.oeffi.Constants;
import de.schildbach.oeffi.R; import de.schildbach.oeffi.R;
import de.schildbach.pte.NetworkProvider; import de.schildbach.pte.NetworkProvider;
@ -44,14 +36,18 @@ import de.schildbach.pte.exception.BlockedException;
import de.schildbach.pte.exception.InternalErrorException; import de.schildbach.pte.exception.InternalErrorException;
import de.schildbach.pte.exception.NotFoundException; import de.schildbach.pte.exception.NotFoundException;
import de.schildbach.pte.exception.UnexpectedRedirectException; import de.schildbach.pte.exception.UnexpectedRedirectException;
import android.app.ProgressDialog;
import android.content.res.Resources;
import android.graphics.Typeface;
import android.os.Handler;
import android.text.SpannableStringBuilder;
import android.text.style.StyleSpan;
import okhttp3.HttpUrl; import okhttp3.HttpUrl;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.net.ssl.SSLException;
import java.io.IOException;
import java.net.SocketException;
import java.net.SocketTimeoutException;
import java.net.UnknownHostException;
import java.util.Date;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean;
public abstract class QueryTripsRunnable implements Runnable { public abstract class QueryTripsRunnable implements Runnable {
private final Resources res; private final Resources res;

View file

@ -17,11 +17,11 @@
package de.schildbach.oeffi.directions; package de.schildbach.oeffi.directions;
import android.text.format.DateUtils;
import java.io.Serializable; import java.io.Serializable;
import java.util.Locale; import java.util.Locale;
import android.text.format.DateUtils;
public abstract class TimeSpec implements Serializable { public abstract class TimeSpec implements Serializable {
public enum DepArr { public enum DepArr {
DEPART, ARRIVE DEPART, ARRIVE

View file

@ -17,51 +17,6 @@
package de.schildbach.oeffi.directions; package de.schildbach.oeffi.directions;
import static com.google.common.base.Preconditions.checkNotNull;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.google.common.base.MoreObjects;
import de.schildbach.oeffi.Constants;
import de.schildbach.oeffi.LocationAware;
import de.schildbach.oeffi.MyActionBar;
import de.schildbach.oeffi.OeffiActivity;
import de.schildbach.oeffi.OeffiMapView;
import de.schildbach.oeffi.R;
import de.schildbach.oeffi.TripAware;
import de.schildbach.oeffi.directions.TimeSpec.DepArr;
import de.schildbach.oeffi.stations.LineView;
import de.schildbach.oeffi.stations.StationContextMenu;
import de.schildbach.oeffi.stations.StationDetailsActivity;
import de.schildbach.oeffi.util.Formats;
import de.schildbach.oeffi.util.LocationHelper;
import de.schildbach.oeffi.util.Toast;
import de.schildbach.oeffi.util.ToggleImageButton;
import de.schildbach.oeffi.util.ToggleImageButton.OnCheckedChangeListener;
import de.schildbach.pte.NetworkId;
import de.schildbach.pte.dto.Fare;
import de.schildbach.pte.dto.Line;
import de.schildbach.pte.dto.Location;
import de.schildbach.pte.dto.Point;
import de.schildbach.pte.dto.Position;
import de.schildbach.pte.dto.Stop;
import de.schildbach.pte.dto.Style;
import de.schildbach.pte.dto.Trip;
import de.schildbach.pte.dto.Trip.Individual;
import de.schildbach.pte.dto.Trip.Leg;
import de.schildbach.pte.dto.Trip.Public;
import android.Manifest; import android.Manifest;
import android.content.BroadcastReceiver; import android.content.BroadcastReceiver;
import android.content.Context; import android.content.Context;
@ -87,9 +42,7 @@ import android.text.format.DateUtils;
import android.text.style.RelativeSizeSpan; import android.text.style.RelativeSizeSpan;
import android.util.DisplayMetrics; import android.util.DisplayMetrics;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View; import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.view.WindowManager; import android.view.WindowManager;
import android.widget.ImageButton; import android.widget.ImageButton;
@ -98,6 +51,47 @@ import android.widget.PopupMenu;
import android.widget.TableLayout; import android.widget.TableLayout;
import android.widget.TextView; import android.widget.TextView;
import androidx.core.content.ContextCompat; import androidx.core.content.ContextCompat;
import com.google.common.base.MoreObjects;
import de.schildbach.oeffi.Constants;
import de.schildbach.oeffi.LocationAware;
import de.schildbach.oeffi.MyActionBar;
import de.schildbach.oeffi.OeffiActivity;
import de.schildbach.oeffi.OeffiMapView;
import de.schildbach.oeffi.R;
import de.schildbach.oeffi.TripAware;
import de.schildbach.oeffi.directions.TimeSpec.DepArr;
import de.schildbach.oeffi.stations.LineView;
import de.schildbach.oeffi.stations.StationContextMenu;
import de.schildbach.oeffi.stations.StationDetailsActivity;
import de.schildbach.oeffi.util.Formats;
import de.schildbach.oeffi.util.LocationHelper;
import de.schildbach.oeffi.util.Toast;
import de.schildbach.oeffi.util.ToggleImageButton;
import de.schildbach.pte.NetworkId;
import de.schildbach.pte.dto.Fare;
import de.schildbach.pte.dto.Line;
import de.schildbach.pte.dto.Location;
import de.schildbach.pte.dto.Point;
import de.schildbach.pte.dto.Position;
import de.schildbach.pte.dto.Stop;
import de.schildbach.pte.dto.Style;
import de.schildbach.pte.dto.Trip;
import de.schildbach.pte.dto.Trip.Individual;
import de.schildbach.pte.dto.Trip.Leg;
import de.schildbach.pte.dto.Trip.Public;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import static com.google.common.base.Preconditions.checkNotNull;
public class TripDetailsActivity extends OeffiActivity implements LocationListener, LocationAware { public class TripDetailsActivity extends OeffiActivity implements LocationListener, LocationAware {
private static final String INTENT_EXTRA_NETWORK = TripDetailsActivity.class.getName() + ".network"; private static final String INTENT_EXTRA_NETWORK = TripDetailsActivity.class.getName() + ".network";

View file

@ -17,17 +17,6 @@
package de.schildbach.oeffi.directions; package de.schildbach.oeffi.directions;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;
import com.google.common.math.LongMath;
import de.schildbach.oeffi.R;
import de.schildbach.oeffi.util.Formats;
import de.schildbach.pte.dto.Trip;
import android.content.Context; import android.content.Context;
import android.content.res.Resources; import android.content.res.Resources;
import android.graphics.Canvas; import android.graphics.Canvas;
@ -44,6 +33,15 @@ import android.text.format.DateUtils;
import android.util.AttributeSet; import android.util.AttributeSet;
import android.view.View; import android.view.View;
import android.widget.Gallery; import android.widget.Gallery;
import com.google.common.math.LongMath;
import de.schildbach.oeffi.R;
import de.schildbach.oeffi.util.Formats;
import de.schildbach.pte.dto.Trip;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;
public class TripsGallery extends Gallery { public class TripsGallery extends Gallery {
private OnScrollListener onScrollListener; private OnScrollListener onScrollListener;

View file

@ -17,24 +17,6 @@
package de.schildbach.oeffi.directions; package de.schildbach.oeffi.directions;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import com.google.common.base.Preconditions;
import de.schildbach.oeffi.R;
import de.schildbach.pte.dto.Line;
import de.schildbach.pte.dto.Stop;
import de.schildbach.pte.dto.Style;
import de.schildbach.pte.dto.Style.Shape;
import de.schildbach.pte.dto.Trip;
import de.schildbach.pte.dto.Trip.Individual;
import de.schildbach.pte.dto.Trip.Leg;
import de.schildbach.pte.dto.Trip.Public;
import android.content.Context; import android.content.Context;
import android.content.res.Resources; import android.content.res.Resources;
import android.content.res.TypedArray; import android.content.res.TypedArray;
@ -58,6 +40,22 @@ import android.view.ViewGroup;
import android.widget.Adapter; import android.widget.Adapter;
import android.widget.BaseAdapter; import android.widget.BaseAdapter;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import com.google.common.base.Preconditions;
import de.schildbach.oeffi.R;
import de.schildbach.pte.dto.Line;
import de.schildbach.pte.dto.Stop;
import de.schildbach.pte.dto.Style;
import de.schildbach.pte.dto.Style.Shape;
import de.schildbach.pte.dto.Trip;
import de.schildbach.pte.dto.Trip.Individual;
import de.schildbach.pte.dto.Trip.Leg;
import de.schildbach.pte.dto.Trip.Public;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public final class TripsGalleryAdapter extends BaseAdapter { public final class TripsGalleryAdapter extends BaseAdapter {
private List<Trip> trips = Collections.emptyList(); private List<Trip> trips = Collections.emptyList();

View file

@ -17,49 +17,6 @@
package de.schildbach.oeffi.directions; package de.schildbach.oeffi.directions;
import static com.google.common.base.Preconditions.checkNotNull;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.net.SocketException;
import java.net.SocketTimeoutException;
import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.Date;
import java.util.Iterator;
import java.util.NavigableSet;
import java.util.TreeSet;
import java.util.concurrent.TimeUnit;
import javax.net.ssl.SSLException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.google.common.collect.ComparisonChain;
import com.google.common.collect.Ordering;
import com.google.common.util.concurrent.Uninterruptibles;
import de.schildbach.oeffi.Constants;
import de.schildbach.oeffi.MyActionBar;
import de.schildbach.oeffi.OeffiActivity;
import de.schildbach.oeffi.R;
import de.schildbach.oeffi.directions.TripsGallery.OnScrollListener;
import de.schildbach.oeffi.network.NetworkProviderFactory;
import de.schildbach.oeffi.util.Toast;
import de.schildbach.pte.NetworkId;
import de.schildbach.pte.NetworkProvider;
import de.schildbach.pte.dto.Location;
import de.schildbach.pte.dto.QueryTripsContext;
import de.schildbach.pte.dto.QueryTripsResult;
import de.schildbach.pte.dto.Trip;
import de.schildbach.pte.exception.InternalErrorException;
import de.schildbach.pte.exception.InvalidDataException;
import de.schildbach.pte.exception.NotFoundException;
import de.schildbach.pte.exception.SessionExpiredException;
import android.content.BroadcastReceiver; import android.content.BroadcastReceiver;
import android.content.ContentValues; import android.content.ContentValues;
import android.content.Context; import android.content.Context;
@ -72,11 +29,46 @@ import android.os.HandlerThread;
import android.os.Process; import android.os.Process;
import android.text.format.DateUtils; import android.text.format.DateUtils;
import android.view.View; import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView; import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.TextView; import android.widget.TextView;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import com.google.common.collect.ComparisonChain;
import com.google.common.collect.Ordering;
import com.google.common.util.concurrent.Uninterruptibles;
import de.schildbach.oeffi.Constants;
import de.schildbach.oeffi.MyActionBar;
import de.schildbach.oeffi.OeffiActivity;
import de.schildbach.oeffi.R;
import de.schildbach.oeffi.network.NetworkProviderFactory;
import de.schildbach.oeffi.util.Toast;
import de.schildbach.pte.NetworkId;
import de.schildbach.pte.NetworkProvider;
import de.schildbach.pte.dto.Location;
import de.schildbach.pte.dto.QueryTripsContext;
import de.schildbach.pte.dto.QueryTripsResult;
import de.schildbach.pte.dto.Trip;
import de.schildbach.pte.exception.InternalErrorException;
import de.schildbach.pte.exception.InvalidDataException;
import de.schildbach.pte.exception.NotFoundException;
import de.schildbach.pte.exception.SessionExpiredException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.net.ssl.SSLException;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.net.SocketException;
import java.net.SocketTimeoutException;
import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.NavigableSet;
import java.util.TreeSet;
import java.util.concurrent.TimeUnit;
import static com.google.common.base.Preconditions.checkNotNull;
public class TripsOverviewActivity extends OeffiActivity { public class TripsOverviewActivity extends OeffiActivity {
private static final String INTENT_EXTRA_NETWORK = TripsOverviewActivity.class.getName() + ".network"; private static final String INTENT_EXTRA_NETWORK = TripsOverviewActivity.class.getName() + ".network";

View file

@ -17,14 +17,6 @@
package de.schildbach.oeffi.directions.list; package de.schildbach.oeffi.directions.list;
import de.schildbach.oeffi.R;
import de.schildbach.oeffi.directions.QueryHistoryProvider;
import de.schildbach.oeffi.stations.FavoriteStationsProvider;
import de.schildbach.pte.NetworkId;
import de.schildbach.pte.dto.Location;
import de.schildbach.pte.dto.LocationType;
import de.schildbach.pte.dto.Point;
import android.content.ContentResolver; import android.content.ContentResolver;
import android.content.ContentValues; import android.content.ContentValues;
import android.content.Context; import android.content.Context;
@ -36,6 +28,13 @@ import android.provider.BaseColumns;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.ViewGroup; import android.view.ViewGroup;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
import de.schildbach.oeffi.R;
import de.schildbach.oeffi.directions.QueryHistoryProvider;
import de.schildbach.oeffi.stations.FavoriteStationsProvider;
import de.schildbach.pte.NetworkId;
import de.schildbach.pte.dto.Location;
import de.schildbach.pte.dto.LocationType;
import de.schildbach.pte.dto.Point;
public class QueryHistoryAdapter extends RecyclerView.Adapter<QueryHistoryViewHolder> { public class QueryHistoryAdapter extends RecyclerView.Adapter<QueryHistoryViewHolder> {
private final Context context; private final Context context;

View file

@ -17,9 +17,8 @@
package de.schildbach.oeffi.directions.list; package de.schildbach.oeffi.directions.list;
import de.schildbach.pte.dto.Location;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import de.schildbach.pte.dto.Location;
public interface QueryHistoryContextMenuItemListener { public interface QueryHistoryContextMenuItemListener {
boolean onQueryHistoryContextMenuItemClick(int adapterPosition, Location from, Location to, boolean onQueryHistoryContextMenuItemClick(int adapterPosition, Location from, Location to,

View file

@ -17,6 +17,15 @@
package de.schildbach.oeffi.directions.list; package de.schildbach.oeffi.directions.list;
import android.content.Context;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.SubMenu;
import android.view.View;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.PopupMenu;
import androidx.recyclerview.widget.RecyclerView;
import de.schildbach.oeffi.R; import de.schildbach.oeffi.R;
import de.schildbach.oeffi.directions.LocationTextView; import de.schildbach.oeffi.directions.LocationTextView;
import de.schildbach.oeffi.stations.FavoriteStationsProvider; import de.schildbach.oeffi.stations.FavoriteStationsProvider;
@ -26,18 +35,6 @@ import de.schildbach.pte.NetworkId;
import de.schildbach.pte.dto.Location; import de.schildbach.pte.dto.Location;
import de.schildbach.pte.dto.LocationType; import de.schildbach.pte.dto.LocationType;
import android.content.Context;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.SubMenu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.PopupMenu;
import androidx.recyclerview.widget.RecyclerView;
public class QueryHistoryViewHolder extends RecyclerView.ViewHolder { public class QueryHistoryViewHolder extends RecyclerView.ViewHolder {
private final Context context; private final Context context;
private final NetworkId network; private final NetworkId network;

View file

@ -17,6 +17,16 @@
package de.schildbach.oeffi.network; package de.schildbach.oeffi.network;
import android.os.Handler;
import com.google.common.util.concurrent.Uninterruptibles;
import de.schildbach.oeffi.Constants;
import de.schildbach.pte.NetworkProvider;
import de.schildbach.pte.dto.Point;
import de.schildbach.pte.exception.NotFoundException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.net.ssl.SSLException;
import java.io.IOException; import java.io.IOException;
import java.net.SocketException; import java.net.SocketException;
import java.net.SocketTimeoutException; import java.net.SocketTimeoutException;
@ -24,20 +34,6 @@ import java.net.UnknownHostException;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicBoolean;
import javax.net.ssl.SSLException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.google.common.util.concurrent.Uninterruptibles;
import de.schildbach.oeffi.Constants;
import de.schildbach.pte.NetworkProvider;
import de.schildbach.pte.dto.Point;
import de.schildbach.pte.exception.NotFoundException;
import android.os.Handler;
public abstract class GetAreaRunnable implements Runnable { public abstract class GetAreaRunnable implements Runnable {
private final NetworkProvider networkProvider; private final NetworkProvider networkProvider;
private final Handler handler; private final Handler handler;

View file

@ -17,38 +17,6 @@
package de.schildbach.oeffi.network; package de.schildbach.oeffi.network;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import de.schildbach.oeffi.AreaAware;
import de.schildbach.oeffi.Constants;
import de.schildbach.oeffi.LocationAware;
import de.schildbach.oeffi.MyActionBar;
import de.schildbach.oeffi.OeffiMapView;
import de.schildbach.oeffi.R;
import de.schildbach.oeffi.network.list.NetworkClickListener;
import de.schildbach.oeffi.network.list.NetworkContextMenuItemListener;
import de.schildbach.oeffi.network.list.NetworkListEntry;
import de.schildbach.oeffi.network.list.NetworksAdapter;
import de.schildbach.oeffi.util.DividerItemDecoration;
import de.schildbach.oeffi.util.GeocoderThread;
import de.schildbach.oeffi.util.LocationHelper;
import de.schildbach.pte.AbstractNavitiaProvider;
import de.schildbach.pte.NetworkId;
import de.schildbach.pte.NetworkProvider;
import de.schildbach.pte.dto.Location;
import de.schildbach.pte.dto.Point;
import android.Manifest; import android.Manifest;
import android.annotation.TargetApi; import android.annotation.TargetApi;
import android.app.Activity; import android.app.Activity;
@ -70,13 +38,42 @@ import android.os.Process;
import android.preference.PreferenceManager; import android.preference.PreferenceManager;
import android.view.KeyEvent; import android.view.KeyEvent;
import android.view.View; import android.view.View;
import android.widget.FrameLayout;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import android.widget.TextView; import android.widget.TextView;
import androidx.core.app.ActivityCompat; import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat; import androidx.core.content.ContextCompat;
import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
import de.schildbach.oeffi.AreaAware;
import de.schildbach.oeffi.Constants;
import de.schildbach.oeffi.LocationAware;
import de.schildbach.oeffi.MyActionBar;
import de.schildbach.oeffi.OeffiMapView;
import de.schildbach.oeffi.R;
import de.schildbach.oeffi.network.list.NetworkClickListener;
import de.schildbach.oeffi.network.list.NetworkContextMenuItemListener;
import de.schildbach.oeffi.network.list.NetworkListEntry;
import de.schildbach.oeffi.network.list.NetworksAdapter;
import de.schildbach.oeffi.util.DividerItemDecoration;
import de.schildbach.oeffi.util.GeocoderThread;
import de.schildbach.oeffi.util.LocationHelper;
import de.schildbach.pte.AbstractNavitiaProvider;
import de.schildbach.pte.NetworkId;
import de.schildbach.pte.NetworkProvider;
import de.schildbach.pte.dto.Location;
import de.schildbach.pte.dto.Point;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Locale;
import java.util.Map;
public class NetworkPickerActivity extends Activity implements ActivityCompat.OnRequestPermissionsResultCallback, public class NetworkPickerActivity extends Activity implements ActivityCompat.OnRequestPermissionsResultCallback,
LocationHelper.Callback, NetworkClickListener, NetworkContextMenuItemListener { LocationHelper.Callback, NetworkClickListener, NetworkContextMenuItemListener {

View file

@ -17,11 +17,8 @@
package de.schildbach.oeffi.network; package de.schildbach.oeffi.network;
import java.util.HashMap; import android.os.Build;
import java.util.Map;
import com.google.common.base.Charsets; import com.google.common.base.Charsets;
import de.schildbach.pte.AbstractNetworkProvider; import de.schildbach.pte.AbstractNetworkProvider;
import de.schildbach.pte.AvvAachenProvider; import de.schildbach.pte.AvvAachenProvider;
import de.schildbach.pte.AvvProvider; import de.schildbach.pte.AvvProvider;
@ -82,10 +79,11 @@ import de.schildbach.pte.VvsProvider;
import de.schildbach.pte.VvvProvider; import de.schildbach.pte.VvvProvider;
import de.schildbach.pte.WienProvider; import de.schildbach.pte.WienProvider;
import de.schildbach.pte.ZvvProvider; import de.schildbach.pte.ZvvProvider;
import android.os.Build;
import okhttp3.HttpUrl; import okhttp3.HttpUrl;
import java.util.HashMap;
import java.util.Map;
public final class NetworkProviderFactory { public final class NetworkProviderFactory {
private static Map<NetworkId, NetworkProvider> providerCache = new HashMap<>(); private static Map<NetworkId, NetworkProvider> providerCache = new HashMap<>();

View file

@ -17,15 +17,15 @@
package de.schildbach.oeffi.network; package de.schildbach.oeffi.network;
import static com.google.common.base.Preconditions.checkNotNull;
import java.util.Locale;
import android.content.Context; import android.content.Context;
import android.content.res.Resources; import android.content.res.Resources;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import java.util.Locale;
import static com.google.common.base.Preconditions.checkNotNull;
public class NetworkResources { public class NetworkResources {
public final @Nullable Drawable icon; public final @Nullable Drawable icon;
public final boolean isLogo; public final boolean isLogo;

View file

@ -17,12 +17,8 @@
package de.schildbach.oeffi.network.list; package de.schildbach.oeffi.network.list;
import de.schildbach.oeffi.R;
import de.schildbach.oeffi.network.NetworkResources;
import android.content.Context; import android.content.Context;
import android.content.res.Resources; import android.content.res.Resources;
import android.view.MenuItem;
import android.view.View; import android.view.View;
import android.widget.ImageButton; import android.widget.ImageButton;
import android.widget.ImageView; import android.widget.ImageView;
@ -30,6 +26,8 @@ import android.widget.PopupMenu;
import android.widget.TextView; import android.widget.TextView;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
import de.schildbach.oeffi.R;
import de.schildbach.oeffi.network.NetworkResources;
public class NetworkViewHolder extends RecyclerView.ViewHolder { public class NetworkViewHolder extends RecyclerView.ViewHolder {
private final Context context; private final Context context;

View file

@ -17,15 +17,14 @@
package de.schildbach.oeffi.network.list; package de.schildbach.oeffi.network.list;
import java.util.LinkedList;
import java.util.List;
import de.schildbach.oeffi.R;
import android.content.Context; import android.content.Context;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.ViewGroup; import android.view.ViewGroup;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
import de.schildbach.oeffi.R;
import java.util.LinkedList;
import java.util.List;
public class NetworksAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { public class NetworksAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private final Context context; private final Context context;

View file

@ -17,30 +17,35 @@
package de.schildbach.oeffi.plans; package de.schildbach.oeffi.plans;
import static com.google.common.base.Preconditions.checkNotNull; import android.app.Activity;
import android.app.SearchManager;
import java.io.File; import android.content.Context;
import java.io.IOException; import android.content.Intent;
import java.net.HttpURLConnection; import android.database.Cursor;
import java.util.LinkedList; import android.graphics.Bitmap;
import java.util.List; import android.graphics.BitmapFactory;
import java.util.Locale; import android.net.Uri;
import java.util.Set; import android.os.Bundle;
import java.util.TreeSet; import android.os.Handler;
import android.os.HandlerThread;
import org.slf4j.Logger; import android.os.Process;
import org.slf4j.LoggerFactory; import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.PopupMenu;
import android.widget.TextView;
import android.widget.ViewAnimator;
import androidx.annotation.Nullable;
import com.google.common.util.concurrent.FutureCallback; import com.google.common.util.concurrent.FutureCallback;
import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture; import com.google.common.util.concurrent.ListenableFuture;
import de.schildbach.oeffi.Application; import de.schildbach.oeffi.Application;
import de.schildbach.oeffi.Constants; import de.schildbach.oeffi.Constants;
import de.schildbach.oeffi.R; import de.schildbach.oeffi.R;
import de.schildbach.oeffi.StationsAware; import de.schildbach.oeffi.StationsAware;
import de.schildbach.oeffi.network.NetworkProviderFactory; import de.schildbach.oeffi.network.NetworkProviderFactory;
import de.schildbach.oeffi.plans.ScrollImageView.OnMoveListener;
import de.schildbach.oeffi.stations.LineView; import de.schildbach.oeffi.stations.LineView;
import de.schildbach.oeffi.stations.QueryDeparturesRunnable; import de.schildbach.oeffi.stations.QueryDeparturesRunnable;
import de.schildbach.oeffi.stations.Station; import de.schildbach.oeffi.stations.Station;
@ -60,31 +65,20 @@ import de.schildbach.pte.dto.LocationType;
import de.schildbach.pte.dto.Point; import de.schildbach.pte.dto.Point;
import de.schildbach.pte.dto.QueryDeparturesResult; import de.schildbach.pte.dto.QueryDeparturesResult;
import de.schildbach.pte.dto.StationDepartures; import de.schildbach.pte.dto.StationDepartures;
import android.app.Activity;
import android.app.SearchManager;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.os.HandlerThread;
import android.os.Process;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.view.WindowManager;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.PopupMenu;
import android.widget.TextView;
import android.widget.ViewAnimator;
import androidx.annotation.Nullable;
import okhttp3.HttpUrl; import okhttp3.HttpUrl;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.File;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.util.LinkedList;
import java.util.List;
import java.util.Locale;
import java.util.Set;
import java.util.TreeSet;
import static com.google.common.base.Preconditions.checkNotNull;
public class PlanActivity extends Activity { public class PlanActivity extends Activity {
public static final String INTENT_EXTRA_PLAN_ID = "plan_id"; // Used in launcher shortcuts public static final String INTENT_EXTRA_PLAN_ID = "plan_id"; // Used in launcher shortcuts

View file

@ -17,7 +17,30 @@
package de.schildbach.oeffi.plans; package de.schildbach.oeffi.plans;
import static com.google.common.base.Preconditions.checkNotNull; import android.app.SearchManager;
import android.content.ContentProvider;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.CursorWrapper;
import android.database.MatrixCursor;
import android.net.Uri;
import android.provider.BaseColumns;
import androidx.annotation.Nullable;
import com.google.common.base.Objects;
import com.google.common.base.Splitter;
import com.google.common.base.Strings;
import com.google.common.util.concurrent.FutureCallback;
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
import com.google.common.util.concurrent.MoreExecutors;
import de.schildbach.oeffi.Application;
import de.schildbach.oeffi.Constants;
import de.schildbach.oeffi.util.Downloader;
import de.schildbach.pte.NetworkId;
import de.schildbach.pte.dto.Point;
import okhttp3.HttpUrl;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.BufferedReader; import java.io.BufferedReader;
import java.io.File; import java.io.File;
@ -37,33 +60,7 @@ import java.util.LinkedList;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
import org.slf4j.Logger; import static com.google.common.base.Preconditions.checkNotNull;
import org.slf4j.LoggerFactory;
import com.google.common.base.Objects;
import com.google.common.base.Splitter;
import com.google.common.base.Strings;
import com.google.common.util.concurrent.FutureCallback;
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
import com.google.common.util.concurrent.MoreExecutors;
import de.schildbach.oeffi.Application;
import de.schildbach.oeffi.Constants;
import de.schildbach.oeffi.util.Downloader;
import de.schildbach.pte.NetworkId;
import de.schildbach.pte.dto.Point;
import android.app.SearchManager;
import android.content.ContentProvider;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.CursorWrapper;
import android.database.MatrixCursor;
import android.net.Uri;
import android.provider.BaseColumns;
import androidx.annotation.Nullable;
import okhttp3.HttpUrl;
public class PlanContentProvider extends ContentProvider { public class PlanContentProvider extends ContentProvider {
public static final Uri CONTENT_URI = Uri.parse("content://de.schildbach.oeffi.plans"); public static final Uri CONTENT_URI = Uri.parse("content://de.schildbach.oeffi.plans");

View file

@ -17,31 +17,6 @@
package de.schildbach.oeffi.plans; package de.schildbach.oeffi.plans;
import java.io.File;
import java.net.HttpURLConnection;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.google.common.util.concurrent.FutureCallback;
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
import de.schildbach.oeffi.Constants;
import de.schildbach.oeffi.MyActionBar;
import de.schildbach.oeffi.OeffiMainActivity;
import de.schildbach.oeffi.R;
import de.schildbach.oeffi.plans.list.PlanClickListener;
import de.schildbach.oeffi.plans.list.PlanContextMenuItemListener;
import de.schildbach.oeffi.plans.list.PlansAdapter;
import de.schildbach.oeffi.util.ConnectivityBroadcastReceiver;
import de.schildbach.oeffi.util.DividerItemDecoration;
import de.schildbach.oeffi.util.Downloader;
import de.schildbach.oeffi.util.LocationHelper;
import de.schildbach.oeffi.util.Toast;
import de.schildbach.oeffi.util.UiThreadExecutor;
import de.schildbach.pte.dto.Point;
import android.Manifest; import android.Manifest;
import android.app.SearchManager; import android.app.SearchManager;
import android.content.BroadcastReceiver; import android.content.BroadcastReceiver;
@ -57,7 +32,6 @@ import android.net.ConnectivityManager;
import android.net.Uri; import android.net.Uri;
import android.os.Bundle; import android.os.Bundle;
import android.view.View; import android.view.View;
import android.view.View.OnClickListener;
import android.widget.TextView; import android.widget.TextView;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.core.app.ActivityCompat; import androidx.core.app.ActivityCompat;
@ -67,8 +41,30 @@ import androidx.core.content.pm.ShortcutManagerCompat;
import androidx.core.graphics.drawable.IconCompat; import androidx.core.graphics.drawable.IconCompat;
import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
import com.google.common.util.concurrent.FutureCallback;
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
import de.schildbach.oeffi.Constants;
import de.schildbach.oeffi.MyActionBar;
import de.schildbach.oeffi.OeffiMainActivity;
import de.schildbach.oeffi.R;
import de.schildbach.oeffi.plans.list.PlanClickListener;
import de.schildbach.oeffi.plans.list.PlanContextMenuItemListener;
import de.schildbach.oeffi.plans.list.PlansAdapter;
import de.schildbach.oeffi.util.ConnectivityBroadcastReceiver;
import de.schildbach.oeffi.util.DividerItemDecoration;
import de.schildbach.oeffi.util.Downloader;
import de.schildbach.oeffi.util.LocationHelper;
import de.schildbach.oeffi.util.Toast;
import de.schildbach.oeffi.util.UiThreadExecutor;
import de.schildbach.pte.dto.Point;
import okhttp3.Cache; import okhttp3.Cache;
import okhttp3.HttpUrl; import okhttp3.HttpUrl;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.File;
import java.net.HttpURLConnection;
public class PlansPickerActivity extends OeffiMainActivity implements ActivityCompat.OnRequestPermissionsResultCallback, public class PlansPickerActivity extends OeffiMainActivity implements ActivityCompat.OnRequestPermissionsResultCallback,
LocationHelper.Callback, PlanClickListener, PlanContextMenuItemListener { LocationHelper.Callback, PlanClickListener, PlanContextMenuItemListener {

View file

@ -17,12 +17,6 @@
package de.schildbach.oeffi.plans; package de.schildbach.oeffi.plans;
import java.util.List;
import de.schildbach.oeffi.StationsAware;
import de.schildbach.oeffi.stations.Station;
import de.schildbach.oeffi.util.UpGestureDetector;
import android.content.Context; import android.content.Context;
import android.graphics.Matrix; import android.graphics.Matrix;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
@ -35,6 +29,11 @@ import android.view.ScaleGestureDetector;
import android.view.animation.DecelerateInterpolator; import android.view.animation.DecelerateInterpolator;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.Scroller; import android.widget.Scroller;
import de.schildbach.oeffi.StationsAware;
import de.schildbach.oeffi.stations.Station;
import de.schildbach.oeffi.util.UpGestureDetector;
import java.util.List;
public class ScrollImageView extends ImageView implements Runnable { public class ScrollImageView extends ImageView implements Runnable {
private OnMoveListener onMoveListener; private OnMoveListener onMoveListener;

View file

@ -17,15 +17,9 @@
package de.schildbach.oeffi.plans.list; package de.schildbach.oeffi.plans.list;
import java.util.Date;
import de.schildbach.oeffi.R;
import de.schildbach.oeffi.network.NetworkResources;
import android.content.Context; import android.content.Context;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
import android.text.format.DateFormat; import android.text.format.DateFormat;
import android.view.MenuItem;
import android.view.View; import android.view.View;
import android.view.animation.Animation; import android.view.animation.Animation;
import android.view.animation.Animation.AnimationListener; import android.view.animation.Animation.AnimationListener;
@ -37,8 +31,12 @@ import android.widget.ProgressBar;
import android.widget.TextView; import android.widget.TextView;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
import de.schildbach.oeffi.R;
import de.schildbach.oeffi.network.NetworkResources;
import okhttp3.Call; import okhttp3.Call;
import java.util.Date;
public class PlanViewHolder extends RecyclerView.ViewHolder { public class PlanViewHolder extends RecyclerView.ViewHolder {
private final Context context; private final Context context;
private final java.text.DateFormat dateFormat; private final java.text.DateFormat dateFormat;

View file

@ -17,18 +17,6 @@
package de.schildbach.oeffi.plans.list; package de.schildbach.oeffi.plans.list;
import static com.google.common.base.Preconditions.checkNotNull;
import java.io.File;
import java.io.IOException;
import java.util.Date;
import java.util.List;
import de.schildbach.oeffi.Application;
import de.schildbach.oeffi.Constants;
import de.schildbach.oeffi.R;
import de.schildbach.oeffi.plans.PlanContentProvider;
import android.content.Context; import android.content.Context;
import android.content.res.Resources; import android.content.res.Resources;
import android.database.Cursor; import android.database.Cursor;
@ -40,6 +28,9 @@ import android.view.LayoutInflater;
import android.view.ViewGroup; import android.view.ViewGroup;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
import de.schildbach.oeffi.Constants;
import de.schildbach.oeffi.R;
import de.schildbach.oeffi.plans.PlanContentProvider;
import okhttp3.Cache; import okhttp3.Cache;
import okhttp3.Call; import okhttp3.Call;
import okhttp3.Callback; import okhttp3.Callback;
@ -48,6 +39,13 @@ import okhttp3.OkHttpClient;
import okhttp3.Request; import okhttp3.Request;
import okhttp3.Response; import okhttp3.Response;
import java.io.File;
import java.io.IOException;
import java.util.Date;
import java.util.List;
import static com.google.common.base.Preconditions.checkNotNull;
public class PlansAdapter extends RecyclerView.Adapter<PlanViewHolder> { public class PlansAdapter extends RecyclerView.Adapter<PlanViewHolder> {
private final Context context; private final Context context;
private final Resources res; private final Resources res;

View file

@ -21,7 +21,6 @@ import android.app.Activity;
import android.content.Intent; import android.content.Intent;
import android.net.Uri; import android.net.Uri;
import android.os.Bundle; import android.os.Bundle;
import android.preference.Preference;
import android.preference.PreferenceFragment; import android.preference.PreferenceFragment;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import de.schildbach.oeffi.Application; import de.schildbach.oeffi.Application;

View file

@ -17,14 +17,11 @@
package de.schildbach.oeffi.preference; package de.schildbach.oeffi.preference;
import android.content.Intent;
import android.os.Build; import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.preference.PreferenceFragment; import android.preference.PreferenceFragment;
import android.provider.Settings;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import de.schildbach.oeffi.R; import de.schildbach.oeffi.R;
import de.schildbach.oeffi.network.NetworkPickerActivity;
public class CommonFragment extends PreferenceFragment { public class CommonFragment extends PreferenceFragment {
private static final String KEY_BATTERY_OPTIMIZATIONS = "battery_optimizations"; private static final String KEY_BATTERY_OPTIMIZATIONS = "battery_optimizations";

View file

@ -18,7 +18,6 @@
package de.schildbach.oeffi.preference; package de.schildbach.oeffi.preference;
import android.os.Bundle; import android.os.Bundle;
import android.preference.Preference;
import android.preference.PreferenceFragment; import android.preference.PreferenceFragment;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import de.schildbach.oeffi.Constants; import de.schildbach.oeffi.Constants;

View file

@ -17,8 +17,6 @@
package de.schildbach.oeffi.stations; package de.schildbach.oeffi.stations;
import static com.google.common.base.Preconditions.checkArgument;
import android.content.Context; import android.content.Context;
import android.graphics.Canvas; import android.graphics.Canvas;
import android.graphics.Color; import android.graphics.Color;
@ -28,6 +26,8 @@ import android.util.AttributeSet;
import android.view.Surface; import android.view.Surface;
import android.view.View; import android.view.View;
import static com.google.common.base.Preconditions.checkArgument;
public final class CompassNeedleView extends View { public final class CompassNeedleView extends View {
public interface Callback { public interface Callback {
Float getDeviceBearing(); Float getDeviceBearing();

View file

@ -17,31 +17,27 @@
package de.schildbach.oeffi.stations; package de.schildbach.oeffi.stations;
import java.io.IOException; import android.app.Activity;
import java.util.regex.Matcher; import android.app.ProgressDialog;
import java.util.regex.Pattern; import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import de.schildbach.oeffi.Application; import de.schildbach.oeffi.Application;
import de.schildbach.oeffi.R; import de.schildbach.oeffi.R;
import de.schildbach.oeffi.util.DialogBuilder; import de.schildbach.oeffi.util.DialogBuilder;
import de.schildbach.pte.NetworkId; import de.schildbach.pte.NetworkId;
import de.schildbach.pte.dto.Location; import de.schildbach.pte.dto.Location;
import de.schildbach.pte.dto.LocationType; import de.schildbach.pte.dto.LocationType;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnCancelListener;
import android.content.DialogInterface.OnClickListener;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import okhttp3.Call; import okhttp3.Call;
import okhttp3.Callback; import okhttp3.Callback;
import okhttp3.HttpUrl; import okhttp3.HttpUrl;
import okhttp3.Request; import okhttp3.Request;
import okhttp3.Response; import okhttp3.Response;
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class DecodeForeignActivity extends Activity { public class DecodeForeignActivity extends Activity {
private static final Pattern PATTERN_META_REFRESH = Pattern private static final Pattern PATTERN_META_REFRESH = Pattern
.compile("<meta\\s+http-equiv=\"refresh\"\\s+content=\"0;\\s+URL=([^\"]*)\""); .compile("<meta\\s+http-equiv=\"refresh\"\\s+content=\"0;\\s+URL=([^\"]*)\"");

View file

@ -17,10 +17,15 @@
package de.schildbach.oeffi.stations; package de.schildbach.oeffi.stations;
import static com.google.common.base.Preconditions.checkNotNull; import android.app.Activity;
import android.content.Context;
import java.util.List; import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.widget.ViewAnimator;
import androidx.annotation.Nullable;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import de.schildbach.oeffi.MyActionBar; import de.schildbach.oeffi.MyActionBar;
import de.schildbach.oeffi.OeffiActivity; import de.schildbach.oeffi.OeffiActivity;
import de.schildbach.oeffi.R; import de.schildbach.oeffi.R;
@ -32,17 +37,9 @@ import de.schildbach.pte.NetworkId;
import de.schildbach.pte.dto.Departure; import de.schildbach.pte.dto.Departure;
import de.schildbach.pte.dto.Location; import de.schildbach.pte.dto.Location;
import android.app.Activity; import java.util.List;
import android.content.Context;
import android.content.Intent; import static com.google.common.base.Preconditions.checkNotNull;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ViewAnimator;
import androidx.annotation.Nullable;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
public class FavoriteStationsActivity extends OeffiActivity public class FavoriteStationsActivity extends OeffiActivity
implements StationClickListener, StationContextMenuItemListener { implements StationClickListener, StationContextMenuItemListener {

View file

@ -17,16 +17,6 @@
package de.schildbach.oeffi.stations; package de.schildbach.oeffi.stations;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import de.schildbach.oeffi.Application;
import de.schildbach.pte.NetworkId;
import de.schildbach.pte.dto.Location;
import de.schildbach.pte.dto.LocationType;
import de.schildbach.pte.dto.Point;
import android.content.ContentProvider; import android.content.ContentProvider;
import android.content.ContentResolver; import android.content.ContentResolver;
import android.content.ContentUris; import android.content.ContentUris;
@ -37,6 +27,15 @@ import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper; import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteQueryBuilder; import android.database.sqlite.SQLiteQueryBuilder;
import android.net.Uri; import android.net.Uri;
import de.schildbach.oeffi.Application;
import de.schildbach.pte.NetworkId;
import de.schildbach.pte.dto.Location;
import de.schildbach.pte.dto.LocationType;
import de.schildbach.pte.dto.Point;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class FavoriteStationsProvider extends ContentProvider { public class FavoriteStationsProvider extends ContentProvider {
private static final String DATABASE_TABLE = "favorites"; private static final String DATABASE_TABLE = "favorites";

View file

@ -17,12 +17,6 @@
package de.schildbach.oeffi.stations; package de.schildbach.oeffi.stations;
import java.util.HashMap;
import java.util.Map;
import de.schildbach.pte.NetworkId;
import de.schildbach.pte.dto.Location;
import android.appwidget.AppWidgetManager; import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProviderInfo; import android.appwidget.AppWidgetProviderInfo;
import android.content.ContentResolver; import android.content.ContentResolver;
@ -31,6 +25,11 @@ import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.database.Cursor; import android.database.Cursor;
import android.net.Uri; import android.net.Uri;
import de.schildbach.pte.NetworkId;
import de.schildbach.pte.dto.Location;
import java.util.HashMap;
import java.util.Map;
public class FavoriteUtils { public class FavoriteUtils {
public static Uri persist(final ContentResolver contentResolver, final int type, final NetworkId networkId, public static Uri persist(final ContentResolver contentResolver, final int type, final NetworkId networkId,

View file

@ -17,29 +17,6 @@
package de.schildbach.oeffi.stations; package de.schildbach.oeffi.stations;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import com.google.common.base.Joiner;
import com.google.common.base.Strings;
import de.schildbach.oeffi.R;
import de.schildbach.oeffi.util.CheatSheet;
import de.schildbach.pte.Standard;
import de.schildbach.pte.dto.Line;
import de.schildbach.pte.dto.Line.Attr;
import de.schildbach.pte.dto.Product;
import de.schildbach.pte.dto.Style;
import de.schildbach.pte.dto.Style.Shape;
import android.content.Context; import android.content.Context;
import android.content.res.Resources; import android.content.res.Resources;
import android.graphics.Canvas; import android.graphics.Canvas;
@ -56,6 +33,26 @@ import android.text.SpannableStringBuilder;
import android.text.style.ReplacementSpan; import android.text.style.ReplacementSpan;
import android.util.AttributeSet; import android.util.AttributeSet;
import android.widget.TextView; import android.widget.TextView;
import com.google.common.base.Joiner;
import com.google.common.base.Strings;
import de.schildbach.oeffi.R;
import de.schildbach.oeffi.util.CheatSheet;
import de.schildbach.pte.Standard;
import de.schildbach.pte.dto.Line;
import de.schildbach.pte.dto.Line.Attr;
import de.schildbach.pte.dto.Product;
import de.schildbach.pte.dto.Style;
import de.schildbach.pte.dto.Style.Shape;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
public class LineView extends TextView { public class LineView extends TextView {
private Collection<Line> lines = null; private Collection<Line> lines = null;

View file

@ -17,18 +17,6 @@
package de.schildbach.oeffi.stations; package de.schildbach.oeffi.stations;
import java.util.Date;
import java.util.List;
import java.util.Locale;
import de.schildbach.oeffi.Constants;
import de.schildbach.oeffi.R;
import de.schildbach.oeffi.util.Objects;
import de.schildbach.pte.dto.Departure;
import de.schildbach.pte.dto.Line;
import de.schildbach.pte.dto.Position;
import de.schildbach.pte.dto.Style;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.graphics.Typeface; import android.graphics.Typeface;
@ -40,6 +28,17 @@ import android.text.style.StyleSpan;
import android.view.View; import android.view.View;
import android.widget.RemoteViews; import android.widget.RemoteViews;
import android.widget.RemoteViewsService; import android.widget.RemoteViewsService;
import de.schildbach.oeffi.Constants;
import de.schildbach.oeffi.R;
import de.schildbach.oeffi.util.Objects;
import de.schildbach.pte.dto.Departure;
import de.schildbach.pte.dto.Line;
import de.schildbach.pte.dto.Position;
import de.schildbach.pte.dto.Style;
import java.util.Date;
import java.util.List;
import java.util.Locale;
public class NearestFavoriteStationWidgetListService extends RemoteViewsService { public class NearestFavoriteStationWidgetListService extends RemoteViewsService {
public static final String INTENT_EXTRA_DEPARTURES = RemoteViewsFactory.class.getName() + ".departures"; public static final String INTENT_EXTRA_DEPARTURES = RemoteViewsFactory.class.getName() + ".departures";

View file

@ -17,37 +17,6 @@
package de.schildbach.oeffi.stations; package de.schildbach.oeffi.stations;
import java.net.ConnectException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
import javax.net.ssl.SSLException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.google.common.base.Throwables;
import com.google.common.util.concurrent.SettableFuture;
import de.schildbach.oeffi.Constants;
import de.schildbach.oeffi.R;
import de.schildbach.oeffi.network.NetworkProviderFactory;
import de.schildbach.oeffi.util.Formats;
import de.schildbach.oeffi.util.Objects;
import de.schildbach.pte.NetworkId;
import de.schildbach.pte.NetworkProvider;
import de.schildbach.pte.dto.Departure;
import de.schildbach.pte.dto.Point;
import de.schildbach.pte.dto.QueryDeparturesResult;
import de.schildbach.pte.dto.StationDepartures;
import de.schildbach.pte.exception.BlockedException;
import android.Manifest; import android.Manifest;
import android.app.PendingIntent; import android.app.PendingIntent;
import android.appwidget.AppWidgetManager; import android.appwidget.AppWidgetManager;
@ -74,6 +43,33 @@ import android.widget.RemoteViews;
import androidx.core.app.JobIntentService; import androidx.core.app.JobIntentService;
import androidx.core.app.NotificationCompat; import androidx.core.app.NotificationCompat;
import androidx.core.content.ContextCompat; import androidx.core.content.ContextCompat;
import com.google.common.base.Throwables;
import com.google.common.util.concurrent.SettableFuture;
import de.schildbach.oeffi.Constants;
import de.schildbach.oeffi.R;
import de.schildbach.oeffi.network.NetworkProviderFactory;
import de.schildbach.oeffi.util.Formats;
import de.schildbach.oeffi.util.Objects;
import de.schildbach.pte.NetworkId;
import de.schildbach.pte.NetworkProvider;
import de.schildbach.pte.dto.Departure;
import de.schildbach.pte.dto.Point;
import de.schildbach.pte.dto.QueryDeparturesResult;
import de.schildbach.pte.dto.StationDepartures;
import de.schildbach.pte.exception.BlockedException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.net.ssl.SSLException;
import java.net.ConnectException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
public class NearestFavoriteStationWidgetService extends JobIntentService { public class NearestFavoriteStationWidgetService extends JobIntentService {
private AppWidgetManager appWidgetManager; private AppWidgetManager appWidgetManager;

View file

@ -17,20 +17,8 @@
package de.schildbach.oeffi.stations; package de.schildbach.oeffi.stations;
import java.io.IOException; import android.os.Handler;
import java.net.SocketException;
import java.net.SocketTimeoutException;
import java.net.UnknownHostException;
import java.util.Date;
import java.util.concurrent.TimeUnit;
import javax.net.ssl.SSLException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.google.common.util.concurrent.Uninterruptibles; import com.google.common.util.concurrent.Uninterruptibles;
import de.schildbach.oeffi.Constants; import de.schildbach.oeffi.Constants;
import de.schildbach.oeffi.R; import de.schildbach.oeffi.R;
import de.schildbach.pte.NetworkProvider; import de.schildbach.pte.NetworkProvider;
@ -40,9 +28,17 @@ import de.schildbach.pte.exception.InternalErrorException;
import de.schildbach.pte.exception.NotFoundException; import de.schildbach.pte.exception.NotFoundException;
import de.schildbach.pte.exception.ParserException; import de.schildbach.pte.exception.ParserException;
import de.schildbach.pte.exception.UnexpectedRedirectException; import de.schildbach.pte.exception.UnexpectedRedirectException;
import android.os.Handler;
import okhttp3.HttpUrl; import okhttp3.HttpUrl;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.net.ssl.SSLException;
import java.io.IOException;
import java.net.SocketException;
import java.net.SocketTimeoutException;
import java.net.UnknownHostException;
import java.util.Date;
import java.util.concurrent.TimeUnit;
public abstract class QueryDeparturesRunnable implements Runnable { public abstract class QueryDeparturesRunnable implements Runnable {
private final Handler handler; private final Handler handler;

View file

@ -17,12 +17,7 @@
package de.schildbach.oeffi.stations; package de.schildbach.oeffi.stations;
import static com.google.common.base.Preconditions.checkNotNull; import androidx.annotation.Nullable;
import java.util.Date;
import java.util.EnumSet;
import java.util.List;
import de.schildbach.pte.NetworkId; import de.schildbach.pte.NetworkId;
import de.schildbach.pte.dto.Departure; import de.schildbach.pte.dto.Departure;
import de.schildbach.pte.dto.LineDestination; import de.schildbach.pte.dto.LineDestination;
@ -30,7 +25,11 @@ import de.schildbach.pte.dto.Location;
import de.schildbach.pte.dto.Product; import de.schildbach.pte.dto.Product;
import de.schildbach.pte.dto.QueryDeparturesResult; import de.schildbach.pte.dto.QueryDeparturesResult;
import androidx.annotation.Nullable; import java.util.Date;
import java.util.EnumSet;
import java.util.List;
import static com.google.common.base.Preconditions.checkNotNull;
public class Station { public class Station {
public final NetworkId network; public final NetworkId network;

View file

@ -17,26 +17,10 @@
package de.schildbach.oeffi.stations; package de.schildbach.oeffi.stations;
import java.net.URLEncoder;
import java.util.Locale;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import de.schildbach.oeffi.R;
import de.schildbach.oeffi.directions.DirectionsActivity;
import de.schildbach.oeffi.directions.DirectionsShortcutActivity;
import de.schildbach.oeffi.plans.PlanActivity;
import de.schildbach.oeffi.plans.PlanContentProvider;
import de.schildbach.oeffi.util.DialogBuilder;
import de.schildbach.pte.NetworkId;
import de.schildbach.pte.dto.Location;
import android.app.AlertDialog; import android.app.AlertDialog;
import android.content.ComponentName; import android.content.ComponentName;
import android.content.ContentResolver; import android.content.ContentResolver;
import android.content.Context; import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent; import android.content.Intent;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.database.Cursor; import android.database.Cursor;
@ -51,6 +35,19 @@ import android.widget.PopupMenu;
import androidx.core.content.pm.ShortcutInfoCompat; import androidx.core.content.pm.ShortcutInfoCompat;
import androidx.core.content.pm.ShortcutManagerCompat; import androidx.core.content.pm.ShortcutManagerCompat;
import androidx.core.graphics.drawable.IconCompat; import androidx.core.graphics.drawable.IconCompat;
import de.schildbach.oeffi.R;
import de.schildbach.oeffi.directions.DirectionsActivity;
import de.schildbach.oeffi.directions.DirectionsShortcutActivity;
import de.schildbach.oeffi.plans.PlanActivity;
import de.schildbach.oeffi.plans.PlanContentProvider;
import de.schildbach.oeffi.util.DialogBuilder;
import de.schildbach.pte.NetworkId;
import de.schildbach.pte.dto.Location;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.net.URLEncoder;
import java.util.Locale;
public class StationContextMenu extends PopupMenu { public class StationContextMenu extends PopupMenu {
private static final Logger log = LoggerFactory.getLogger(StationContextMenu.class); private static final Logger log = LoggerFactory.getLogger(StationContextMenu.class);

View file

@ -17,47 +17,6 @@
package de.schildbach.oeffi.stations; package de.schildbach.oeffi.stations;
import static com.google.common.base.Preconditions.checkArgument;
import static com.google.common.base.Preconditions.checkNotNull;
import java.io.IOException;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.osmdroid.util.GeoPoint;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.google.common.base.Joiner;
import de.schildbach.oeffi.Constants;
import de.schildbach.oeffi.MyActionBar;
import de.schildbach.oeffi.OeffiActivity;
import de.schildbach.oeffi.OeffiMapView;
import de.schildbach.oeffi.R;
import de.schildbach.oeffi.StationsAware;
import de.schildbach.oeffi.network.NetworkProviderFactory;
import de.schildbach.oeffi.util.DividerItemDecoration;
import de.schildbach.oeffi.util.Formats;
import de.schildbach.oeffi.util.ToggleImageButton;
import de.schildbach.oeffi.util.ToggleImageButton.OnCheckedChangeListener;
import de.schildbach.pte.NetworkId;
import de.schildbach.pte.NetworkProvider;
import de.schildbach.pte.dto.Departure;
import de.schildbach.pte.dto.Line;
import de.schildbach.pte.dto.LineDestination;
import de.schildbach.pte.dto.Location;
import de.schildbach.pte.dto.LocationType;
import de.schildbach.pte.dto.QueryDeparturesResult;
import de.schildbach.pte.dto.StationDepartures;
import android.content.BroadcastReceiver; import android.content.BroadcastReceiver;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
@ -74,7 +33,6 @@ import android.text.format.DateFormat;
import android.text.format.DateUtils; import android.text.format.DateUtils;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.view.WindowManager; import android.view.WindowManager;
import android.widget.LinearLayout; import android.widget.LinearLayout;
@ -83,6 +41,43 @@ import android.widget.ViewAnimator;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
import com.google.common.base.Joiner;
import de.schildbach.oeffi.Constants;
import de.schildbach.oeffi.MyActionBar;
import de.schildbach.oeffi.OeffiActivity;
import de.schildbach.oeffi.OeffiMapView;
import de.schildbach.oeffi.R;
import de.schildbach.oeffi.StationsAware;
import de.schildbach.oeffi.network.NetworkProviderFactory;
import de.schildbach.oeffi.util.DividerItemDecoration;
import de.schildbach.oeffi.util.Formats;
import de.schildbach.oeffi.util.ToggleImageButton;
import de.schildbach.pte.NetworkId;
import de.schildbach.pte.NetworkProvider;
import de.schildbach.pte.dto.Departure;
import de.schildbach.pte.dto.Line;
import de.schildbach.pte.dto.LineDestination;
import de.schildbach.pte.dto.Location;
import de.schildbach.pte.dto.LocationType;
import de.schildbach.pte.dto.QueryDeparturesResult;
import de.schildbach.pte.dto.StationDepartures;
import org.osmdroid.util.GeoPoint;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.IOException;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import static com.google.common.base.Preconditions.checkArgument;
import static com.google.common.base.Preconditions.checkNotNull;
public class StationDetailsActivity extends OeffiActivity implements StationsAware { public class StationDetailsActivity extends OeffiActivity implements StationsAware {
private static final String INTENT_EXTRA_NETWORK = StationDetailsActivity.class.getName() + ".network"; private static final String INTENT_EXTRA_NETWORK = StationDetailsActivity.class.getName() + ".network";

View file

@ -17,32 +17,51 @@
package de.schildbach.oeffi.stations; package de.schildbach.oeffi.stations;
import java.io.IOException; import android.Manifest;
import java.util.ArrayList; import android.app.Dialog;
import java.util.Arrays; import android.app.SearchManager;
import java.util.Collection; import android.content.BroadcastReceiver;
import java.util.Collections; import android.content.Context;
import java.util.Comparator; import android.content.Intent;
import java.util.Date; import android.content.IntentFilter;
import java.util.EnumSet; import android.content.pm.PackageManager;
import java.util.HashMap; import android.content.res.Configuration;
import java.util.HashSet; import android.content.res.Resources;
import java.util.Iterator; import android.graphics.Canvas;
import java.util.LinkedList; import android.graphics.Typeface;
import java.util.List; import android.graphics.drawable.Drawable;
import java.util.Locale; import android.hardware.Sensor;
import java.util.Map; import android.hardware.SensorEvent;
import java.util.Set; import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import org.osmdroid.util.BoundingBox; import android.location.Criteria;
import org.osmdroid.util.GeoPoint; import android.location.LocationListener;
import org.slf4j.Logger; import android.location.LocationManager;
import org.slf4j.LoggerFactory; import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.os.HandlerThread;
import android.os.Process;
import android.provider.Settings;
import android.text.format.DateUtils;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;
import android.widget.ViewAnimator;
import androidx.annotation.Nullable;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import androidx.recyclerview.widget.ItemTouchHelper;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.google.common.collect.ComparisonChain; import com.google.common.collect.ComparisonChain;
import com.google.common.collect.Ordering; import com.google.common.collect.Ordering;
import com.google.common.primitives.Ints; import com.google.common.primitives.Ints;
import de.schildbach.oeffi.Constants; import de.schildbach.oeffi.Constants;
import de.schildbach.oeffi.LocationAware; import de.schildbach.oeffi.LocationAware;
import de.schildbach.oeffi.MyActionBar; import de.schildbach.oeffi.MyActionBar;
@ -75,53 +94,26 @@ import de.schildbach.pte.dto.Product;
import de.schildbach.pte.dto.QueryDeparturesResult; import de.schildbach.pte.dto.QueryDeparturesResult;
import de.schildbach.pte.dto.StationDepartures; import de.schildbach.pte.dto.StationDepartures;
import de.schildbach.pte.dto.SuggestLocationsResult; import de.schildbach.pte.dto.SuggestLocationsResult;
import android.Manifest;
import android.app.Dialog;
import android.app.SearchManager;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.pm.PackageManager;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.graphics.Canvas;
import android.graphics.Typeface;
import android.graphics.drawable.Drawable;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.location.Criteria;
import android.location.LocationListener;
import android.location.LocationManager;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.os.HandlerThread;
import android.os.Process;
import android.provider.Settings;
import android.text.format.DateUtils;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.PopupMenu;
import android.widget.TextView;
import android.widget.ViewAnimator;
import androidx.annotation.Nullable;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import androidx.recyclerview.widget.ItemTouchHelper;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import okhttp3.HttpUrl; import okhttp3.HttpUrl;
import org.osmdroid.util.GeoPoint;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.Date;
import java.util.EnumSet;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Set;
public class StationsActivity extends OeffiMainActivity implements StationsAware, LocationAware, public class StationsActivity extends OeffiMainActivity implements StationsAware, LocationAware,
ActivityCompat.OnRequestPermissionsResultCallback, StationContextMenuItemListener { ActivityCompat.OnRequestPermissionsResultCallback, StationContextMenuItemListener {

View file

@ -17,12 +17,6 @@
package de.schildbach.oeffi.stations; package de.schildbach.oeffi.stations;
import java.util.HashSet;
import java.util.Set;
import de.schildbach.oeffi.R;
import de.schildbach.pte.dto.Product;
import android.content.Context; import android.content.Context;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
@ -31,6 +25,11 @@ import android.view.ViewGroup;
import android.widget.CheckBox; import android.widget.CheckBox;
import android.widget.CompoundButton; import android.widget.CompoundButton;
import android.widget.PopupWindow; import android.widget.PopupWindow;
import de.schildbach.oeffi.R;
import de.schildbach.pte.dto.Product;
import java.util.HashSet;
import java.util.Set;
public class StationsFilterPopup extends PopupWindow public class StationsFilterPopup extends PopupWindow
implements CompoundButton.OnCheckedChangeListener, OnLongClickListener { implements CompoundButton.OnCheckedChangeListener, OnLongClickListener {

View file

@ -17,6 +17,13 @@
package de.schildbach.oeffi.stations.list; package de.schildbach.oeffi.stations.list;
import android.content.Context;
import android.content.res.Resources;
import android.view.View;
import android.widget.ImageButton;
import android.widget.PopupMenu;
import android.widget.TextView;
import androidx.recyclerview.widget.RecyclerView;
import de.schildbach.oeffi.R; import de.schildbach.oeffi.R;
import de.schildbach.oeffi.network.NetworkResources; import de.schildbach.oeffi.network.NetworkResources;
import de.schildbach.oeffi.stations.FavoriteStationsProvider; import de.schildbach.oeffi.stations.FavoriteStationsProvider;
@ -24,16 +31,6 @@ import de.schildbach.oeffi.stations.StationContextMenu;
import de.schildbach.pte.NetworkId; import de.schildbach.pte.NetworkId;
import de.schildbach.pte.dto.Location; import de.schildbach.pte.dto.Location;
import android.content.Context;
import android.content.res.Resources;
import android.view.MenuItem;
import android.view.View;
import android.widget.ImageButton;
import android.widget.PopupMenu;
import android.widget.PopupMenu.OnMenuItemClickListener;
import android.widget.TextView;
import androidx.recyclerview.widget.RecyclerView;
public class FavoriteStationViewHolder extends RecyclerView.ViewHolder { public class FavoriteStationViewHolder extends RecyclerView.ViewHolder {
private final Context context; private final Context context;
private final StationClickListener clickListener; private final StationClickListener clickListener;

View file

@ -17,11 +17,6 @@
package de.schildbach.oeffi.stations.list; package de.schildbach.oeffi.stations.list;
import de.schildbach.oeffi.R;
import de.schildbach.oeffi.stations.FavoriteStationsProvider;
import de.schildbach.pte.NetworkId;
import de.schildbach.pte.dto.Location;
import android.content.ContentResolver; import android.content.ContentResolver;
import android.content.Context; import android.content.Context;
import android.database.Cursor; import android.database.Cursor;
@ -31,6 +26,10 @@ import android.view.LayoutInflater;
import android.view.ViewGroup; import android.view.ViewGroup;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
import de.schildbach.oeffi.R;
import de.schildbach.oeffi.stations.FavoriteStationsProvider;
import de.schildbach.pte.NetworkId;
import de.schildbach.pte.dto.Location;
public class FavoriteStationsAdapter extends RecyclerView.Adapter<FavoriteStationViewHolder> { public class FavoriteStationsAdapter extends RecyclerView.Adapter<FavoriteStationViewHolder> {
private final Context context; private final Context context;

View file

@ -17,13 +17,12 @@
package de.schildbach.oeffi.stations.list; package de.schildbach.oeffi.stations.list;
import java.util.List; import androidx.annotation.Nullable;
import de.schildbach.pte.NetworkId; import de.schildbach.pte.NetworkId;
import de.schildbach.pte.dto.Departure; import de.schildbach.pte.dto.Departure;
import de.schildbach.pte.dto.Location; import de.schildbach.pte.dto.Location;
import androidx.annotation.Nullable; import java.util.List;
public interface StationContextMenuItemListener { public interface StationContextMenuItemListener {
boolean onStationContextMenuItemClick(int adapterPosition, NetworkId network, Location station, boolean onStationContextMenuItemClick(int adapterPosition, NetworkId network, Location station,

View file

@ -17,16 +17,22 @@
package de.schildbach.oeffi.stations.list; package de.schildbach.oeffi.stations.list;
import java.util.Date; import android.content.Context;
import java.util.LinkedHashMap; import android.content.res.Resources;
import java.util.LinkedList; import android.graphics.Color;
import java.util.List; import android.graphics.Typeface;
import java.util.Map; import android.text.format.DateUtils;
import java.util.Set; import android.view.Display;
import java.util.TreeSet; import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.widget.ImageButton;
import android.widget.PopupMenu;
import android.widget.TextView;
import androidx.annotation.Nullable;
import androidx.recyclerview.widget.RecyclerView;
import com.google.common.base.Joiner; import com.google.common.base.Joiner;
import de.schildbach.oeffi.Constants; import de.schildbach.oeffi.Constants;
import de.schildbach.oeffi.R; import de.schildbach.oeffi.R;
import de.schildbach.oeffi.stations.CompassNeedleView; import de.schildbach.oeffi.stations.CompassNeedleView;
@ -44,23 +50,13 @@ import de.schildbach.pte.dto.Location;
import de.schildbach.pte.dto.Product; import de.schildbach.pte.dto.Product;
import de.schildbach.pte.dto.QueryDeparturesResult; import de.schildbach.pte.dto.QueryDeparturesResult;
import android.content.Context; import java.util.Date;
import android.content.res.Resources; import java.util.LinkedHashMap;
import android.graphics.Color; import java.util.LinkedList;
import android.graphics.Typeface; import java.util.List;
import android.text.format.DateUtils; import java.util.Map;
import android.view.Display; import java.util.Set;
import android.view.LayoutInflater; import java.util.TreeSet;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.widget.ImageButton;
import android.widget.PopupMenu;
import android.widget.PopupMenu.OnMenuItemClickListener;
import android.widget.TextView;
import androidx.annotation.Nullable;
import androidx.recyclerview.widget.RecyclerView;
public class StationViewHolder extends RecyclerView.ViewHolder { public class StationViewHolder extends RecyclerView.ViewHolder {
public final View favoriteView; public final View favoriteView;

View file

@ -17,22 +17,20 @@
package de.schildbach.oeffi.stations.list; package de.schildbach.oeffi.stations.list;
import static com.google.common.base.Preconditions.checkArgument; import android.content.Context;
import android.view.LayoutInflater;
import java.util.List; import android.view.ViewGroup;
import java.util.Set; import androidx.recyclerview.widget.RecyclerView;
import de.schildbach.oeffi.R; import de.schildbach.oeffi.R;
import de.schildbach.oeffi.StationsAware; import de.schildbach.oeffi.StationsAware;
import de.schildbach.oeffi.stations.CompassNeedleView; import de.schildbach.oeffi.stations.CompassNeedleView;
import de.schildbach.oeffi.stations.Station; import de.schildbach.oeffi.stations.Station;
import de.schildbach.pte.dto.Product; import de.schildbach.pte.dto.Product;
import android.content.Context; import java.util.List;
import android.view.LayoutInflater; import java.util.Set;
import android.view.View;
import android.view.ViewGroup; import static com.google.common.base.Preconditions.checkArgument;
import androidx.recyclerview.widget.RecyclerView;
public class StationsAdapter extends RecyclerView.Adapter<StationViewHolder> implements CompassNeedleView.Callback { public class StationsAdapter extends RecyclerView.Adapter<StationViewHolder> implements CompassNeedleView.Callback {
private final Context context; private final Context context;

View file

@ -17,12 +17,8 @@
package de.schildbach.oeffi.util; package de.schildbach.oeffi.util;
import de.schildbach.oeffi.Constants;
import de.schildbach.oeffi.R;
import android.app.AlertDialog; import android.app.AlertDialog;
import android.content.Context; import android.content.Context;
import android.content.DialogInterface;
import android.os.Build; import android.os.Build;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
@ -30,6 +26,8 @@ import android.webkit.WebChromeClient;
import android.webkit.WebSettings; import android.webkit.WebSettings;
import android.webkit.WebView; import android.webkit.WebView;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import de.schildbach.oeffi.Constants;
import de.schildbach.oeffi.R;
import okhttp3.HttpUrl; import okhttp3.HttpUrl;
public class ChangelogDialogBuilder extends AlertDialog.Builder { public class ChangelogDialogBuilder extends AlertDialog.Builder {

View file

@ -17,14 +17,13 @@
package de.schildbach.oeffi.util; package de.schildbach.oeffi.util;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import android.content.BroadcastReceiver; import android.content.BroadcastReceiver;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.net.ConnectivityManager; import android.net.ConnectivityManager;
import android.net.NetworkInfo; import android.net.NetworkInfo;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public abstract class ConnectivityBroadcastReceiver extends BroadcastReceiver { public abstract class ConnectivityBroadcastReceiver extends BroadcastReceiver {

View file

@ -17,11 +17,10 @@
package de.schildbach.oeffi.util; package de.schildbach.oeffi.util;
import de.schildbach.oeffi.Constants;
import de.schildbach.oeffi.R;
import android.app.AlertDialog; import android.app.AlertDialog;
import android.content.Context; import android.content.Context;
import de.schildbach.oeffi.Constants;
import de.schildbach.oeffi.R;
public class DialogBuilder extends AlertDialog.Builder { public class DialogBuilder extends AlertDialog.Builder {
public static DialogBuilder get(final Context context) { public static DialogBuilder get(final Context context) {

View file

@ -17,7 +17,21 @@
package de.schildbach.oeffi.util; package de.schildbach.oeffi.util;
import static com.google.common.base.Preconditions.checkState; import androidx.annotation.Nullable;
import com.google.common.util.concurrent.ListenableFuture;
import com.google.common.util.concurrent.SettableFuture;
import com.google.common.util.concurrent.Striped;
import de.schildbach.oeffi.util.bzip2.BZip2CompressorInputStream;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.Headers;
import okhttp3.HttpUrl;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import okhttp3.ResponseBody;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.BufferedReader; import java.io.BufferedReader;
import java.io.File; import java.io.File;
@ -32,24 +46,7 @@ import java.util.Date;
import java.util.Random; import java.util.Random;
import java.util.concurrent.Semaphore; import java.util.concurrent.Semaphore;
import org.slf4j.Logger; import static com.google.common.base.Preconditions.checkState;
import org.slf4j.LoggerFactory;
import com.google.common.util.concurrent.ListenableFuture;
import com.google.common.util.concurrent.SettableFuture;
import com.google.common.util.concurrent.Striped;
import de.schildbach.oeffi.util.bzip2.BZip2CompressorInputStream;
import androidx.annotation.Nullable;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.Headers;
import okhttp3.HttpUrl;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import okhttp3.ResponseBody;
public class Downloader { public class Downloader {
private final File cacheDir; private final File cacheDir;

View file

@ -17,36 +17,8 @@
package de.schildbach.oeffi.util; package de.schildbach.oeffi.util;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.io.Writer;
import java.util.ArrayList;
import java.util.Date;
import java.util.Formatter;
import java.util.Locale;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.google.common.base.Joiner;
import com.google.common.base.Strings;
import de.schildbach.oeffi.Constants;
import de.schildbach.oeffi.R;
import de.schildbach.pte.NetworkId;
import android.app.ActivityManager; import android.app.ActivityManager;
import android.content.Context; import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnCancelListener;
import android.content.DialogInterface.OnClickListener;
import android.content.Intent; import android.content.Intent;
import android.content.pm.PackageInfo; import android.content.pm.PackageInfo;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
@ -61,12 +33,34 @@ import android.os.Looper;
import android.os.StatFs; import android.os.StatFs;
import androidx.core.app.ActivityManagerCompat; import androidx.core.app.ActivityManagerCompat;
import androidx.core.content.FileProvider; import androidx.core.content.FileProvider;
import com.google.common.base.Joiner;
import com.google.common.base.Strings;
import de.schildbach.oeffi.Constants;
import de.schildbach.oeffi.R;
import de.schildbach.pte.NetworkId;
import okhttp3.Call; import okhttp3.Call;
import okhttp3.Callback; import okhttp3.Callback;
import okhttp3.HttpUrl; import okhttp3.HttpUrl;
import okhttp3.OkHttpClient; import okhttp3.OkHttpClient;
import okhttp3.Request; import okhttp3.Request;
import okhttp3.Response; import okhttp3.Response;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.io.Writer;
import java.util.ArrayList;
import java.util.Date;
import java.util.Formatter;
import java.util.Locale;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class ErrorReporter implements Thread.UncaughtExceptionHandler { public class ErrorReporter implements Thread.UncaughtExceptionHandler {
private static final String STACKTRACE_FILENAME = ".stacktrace"; private static final String STACKTRACE_FILENAME = ".stacktrace";

View file

@ -17,15 +17,14 @@
package de.schildbach.oeffi.util; package de.schildbach.oeffi.util;
import java.util.Calendar;
import java.util.GregorianCalendar;
import de.schildbach.oeffi.Constants;
import de.schildbach.oeffi.R;
import android.content.Context; import android.content.Context;
import android.text.format.DateFormat; import android.text.format.DateFormat;
import android.text.format.DateUtils; import android.text.format.DateUtils;
import de.schildbach.oeffi.Constants;
import de.schildbach.oeffi.R;
import java.util.Calendar;
import java.util.GregorianCalendar;
public final class Formats { public final class Formats {
public static String formatDate(final Context context, final long time) { public static String formatDate(final Context context, final long time) {

View file

@ -17,28 +17,25 @@
package de.schildbach.oeffi.util; package de.schildbach.oeffi.util;
import static com.google.common.base.Preconditions.checkArgument;
import static com.google.common.base.Preconditions.checkNotNull;
import java.io.IOException;
import java.util.List;
import java.util.Locale;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.google.common.base.Joiner;
import com.google.common.base.Strings;
import de.schildbach.pte.dto.Location;
import de.schildbach.pte.dto.LocationType;
import de.schildbach.pte.dto.Point;
import android.content.Context; import android.content.Context;
import android.location.Address; import android.location.Address;
import android.location.Geocoder; import android.location.Geocoder;
import android.os.Handler; import android.os.Handler;
import android.os.Looper; import android.os.Looper;
import com.google.common.base.Joiner;
import com.google.common.base.Strings;
import de.schildbach.pte.dto.Location;
import de.schildbach.pte.dto.LocationType;
import de.schildbach.pte.dto.Point;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.IOException;
import java.util.List;
import java.util.Locale;
import static com.google.common.base.Preconditions.checkArgument;
import static com.google.common.base.Preconditions.checkNotNull;
public class GeocoderThread extends Thread { public class GeocoderThread extends Thread {
public interface Callback { public interface Callback {

View file

@ -17,17 +17,15 @@
package de.schildbach.oeffi.util; package de.schildbach.oeffi.util;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import de.schildbach.pte.dto.Point;
import android.location.Criteria; import android.location.Criteria;
import android.location.Location; import android.location.Location;
import android.location.LocationListener; import android.location.LocationListener;
import android.location.LocationManager; import android.location.LocationManager;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler; import android.os.Handler;
import de.schildbach.pte.dto.Point;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public final class LocationHelper { public final class LocationHelper {
public interface Callback { public interface Callback {

View file

@ -17,16 +17,16 @@
package de.schildbach.oeffi.util; package de.schildbach.oeffi.util;
import de.schildbach.pte.dto.Location;
import de.schildbach.pte.dto.LocationType;
import de.schildbach.pte.dto.Point;
import java.net.URI; import java.net.URI;
import java.net.URISyntaxException; import java.net.URISyntaxException;
import java.net.URLDecoder; import java.net.URLDecoder;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import de.schildbach.pte.dto.Location;
import de.schildbach.pte.dto.LocationType;
import de.schildbach.pte.dto.Point;
public class LocationUriParser { public class LocationUriParser {
public static final Location[] parseLocations(final String encodedUriString) { public static final Location[] parseLocations(final String encodedUriString) {
URI uri = null; URI uri = null;

View file

@ -17,16 +17,16 @@
package de.schildbach.oeffi.util; package de.schildbach.oeffi.util;
import static com.google.common.base.Preconditions.checkNotNull;
import java.util.HashMap;
import java.util.Map;
import android.content.Context; import android.content.Context;
import android.content.res.Resources; import android.content.res.Resources;
import android.graphics.drawable.AnimationDrawable; import android.graphics.drawable.AnimationDrawable;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
import java.util.HashMap;
import java.util.Map;
import static com.google.common.base.Preconditions.checkNotNull;
public class MultiDrawable extends AnimationDrawable { public class MultiDrawable extends AnimationDrawable {
private final Resources res; private final Resources res;
private final Map<Integer, Integer> drawableIndexes = new HashMap<>(); private final Map<Integer, Integer> drawableIndexes = new HashMap<>();

View file

@ -17,12 +17,6 @@
package de.schildbach.oeffi.util; package de.schildbach.oeffi.util;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
import de.schildbach.oeffi.R;
import android.content.ComponentName; import android.content.ComponentName;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
@ -42,6 +36,11 @@ import android.view.ViewGroup;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.TextView; import android.widget.TextView;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
import de.schildbach.oeffi.R;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
public class NavigationMenuAdapter extends RecyclerView.Adapter<NavigationMenuAdapter.ViewHolder> { public class NavigationMenuAdapter extends RecyclerView.Adapter<NavigationMenuAdapter.ViewHolder> {
private final Resources res; private final Resources res;

View file

@ -17,11 +17,11 @@
package de.schildbach.oeffi.util; package de.schildbach.oeffi.util;
import android.widget.PopupMenu;
import java.lang.reflect.Field; import java.lang.reflect.Field;
import java.lang.reflect.Method; import java.lang.reflect.Method;
import android.widget.PopupMenu;
public class PopupHelper { public class PopupHelper {
public static void setForceShowIcon(final PopupMenu popupMenu) { public static void setForceShowIcon(final PopupMenu popupMenu) {
try { try {

View file

@ -17,11 +17,10 @@
package de.schildbach.oeffi.util; package de.schildbach.oeffi.util;
import de.schildbach.oeffi.R;
import android.content.Context; import android.content.Context;
import android.graphics.PorterDuff; import android.graphics.PorterDuff;
import android.widget.TextView; import android.widget.TextView;
import de.schildbach.oeffi.R;
public class Toast { public class Toast {
private final Context context; private final Context context;

View file

@ -17,11 +17,11 @@
package de.schildbach.oeffi.util; package de.schildbach.oeffi.util;
import java.util.concurrent.Executor;
import android.os.Handler; import android.os.Handler;
import android.os.Looper; import android.os.Looper;
import java.util.concurrent.Executor;
public class UiThreadExecutor implements Executor { public class UiThreadExecutor implements Executor {
private final Handler handler = new Handler(Looper.getMainLooper()); private final Handler handler = new Handler(Looper.getMainLooper());

View file

@ -17,8 +17,6 @@
package de.schildbach.oeffi.util; package de.schildbach.oeffi.util;
import de.schildbach.oeffi.R;
import android.content.Context; import android.content.Context;
import android.util.AttributeSet; import android.util.AttributeSet;
import android.view.LayoutInflater; import android.view.LayoutInflater;
@ -27,6 +25,7 @@ import android.view.View;
import android.view.animation.AlphaAnimation; import android.view.animation.AlphaAnimation;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import android.widget.ZoomButton; import android.widget.ZoomButton;
import de.schildbach.oeffi.R;
public class ZoomControls extends LinearLayout { public class ZoomControls extends LinearLayout {
private final ZoomButton mZoomIn; private final ZoomButton mZoomIn;

View file

@ -17,11 +17,10 @@
package de.schildbach.oeffi.util; package de.schildbach.oeffi.util;
import org.junit.Assert;
import org.junit.Test;
import de.schildbach.pte.dto.Location; import de.schildbach.pte.dto.Location;
import de.schildbach.pte.dto.LocationType; import de.schildbach.pte.dto.LocationType;
import org.junit.Assert;
import org.junit.Test;
public class LocationUriParserTest { public class LocationUriParserTest {
@Test @Test