replace dagger with feather

feather is more lightweight, and does not use an annotation processor.
this speeds up the build.

it does use reflection, but that is no issue for us. our graph is really
small, and reflection is not slow on newer android versions.

replaces all calls to the original getGraph() with inject and related
methods.

also update the licenses.
refactor-toolbar
Floens 8 years ago
parent 48b71d83d5
commit 4a9b0b42bc
  1. 10
      Clover/app/build.gradle
  2. 2
      Clover/app/src/main/assets/html/license.html
  3. 68
      Clover/app/src/main/assets/html/licenses.html
  4. 24
      Clover/app/src/main/java/org/floens/chan/Chan.java
  5. 94
      Clover/app/src/main/java/org/floens/chan/core/di/AppModule.java
  6. 11
      Clover/app/src/main/java/org/floens/chan/core/di/NetModule.java
  7. 10
      Clover/app/src/main/java/org/floens/chan/core/manager/WatchManager.java
  8. 6
      Clover/app/src/main/java/org/floens/chan/core/presenter/ImageViewerPresenter.java
  9. 6
      Clover/app/src/main/java/org/floens/chan/core/receiver/WatchUpdateReceiver.java
  10. 4
      Clover/app/src/main/java/org/floens/chan/core/saver/ImageSaveTask.java
  11. 16
      Clover/app/src/main/java/org/floens/chan/core/site/SiteBase.java
  12. 8
      Clover/app/src/main/java/org/floens/chan/core/site/common/ChanReaderRequest.java
  13. 4
      Clover/app/src/main/java/org/floens/chan/core/site/loader/ChanLoader.java
  14. 4
      Clover/app/src/main/java/org/floens/chan/core/site/sites/chan8/Chan8.java
  15. 4
      Clover/app/src/main/java/org/floens/chan/core/update/UpdateManager.java
  16. 4
      Clover/app/src/main/java/org/floens/chan/ui/activity/StartActivity.java
  17. 4
      Clover/app/src/main/java/org/floens/chan/ui/adapter/DrawerAdapter.java
  18. 4
      Clover/app/src/main/java/org/floens/chan/ui/adapter/PostsFilter.java
  19. 4
      Clover/app/src/main/java/org/floens/chan/ui/cell/PostCell.java
  20. 4
      Clover/app/src/main/java/org/floens/chan/ui/controller/BoardSetupController.java
  21. 4
      Clover/app/src/main/java/org/floens/chan/ui/controller/BrowseController.java
  22. 4
      Clover/app/src/main/java/org/floens/chan/ui/controller/DeveloperSettingsController.java
  23. 4
      Clover/app/src/main/java/org/floens/chan/ui/controller/DrawerController.java
  24. 4
      Clover/app/src/main/java/org/floens/chan/ui/controller/FiltersController.java
  25. 4
      Clover/app/src/main/java/org/floens/chan/ui/controller/HistoryController.java
  26. 7
      Clover/app/src/main/java/org/floens/chan/ui/controller/ImageViewerController.java
  27. 5
      Clover/app/src/main/java/org/floens/chan/ui/controller/MainSettingsController.java
  28. 5
      Clover/app/src/main/java/org/floens/chan/ui/controller/SiteSetupController.java
  29. 5
      Clover/app/src/main/java/org/floens/chan/ui/controller/SitesSetupController.java
  30. 4
      Clover/app/src/main/java/org/floens/chan/ui/controller/ViewThreadController.java
  31. 4
      Clover/app/src/main/java/org/floens/chan/ui/helper/ImagePickDelegate.java
  32. 4
      Clover/app/src/main/java/org/floens/chan/ui/layout/FilterLayout.java
  33. 7
      Clover/app/src/main/java/org/floens/chan/ui/layout/ThreadLayout.java
  34. 6
      Clover/app/src/main/java/org/floens/chan/ui/service/WatchNotifier.java
  35. 4
      Clover/app/src/main/java/org/floens/chan/ui/view/MultiImageView.java
  36. 4
      Clover/app/src/main/java/org/floens/chan/ui/view/ThumbnailView.java

@ -140,13 +140,5 @@ dependencies {
implementation 'org.nibor.autolink:autolink:0.6.0'
implementation 'com.google.code.gson:gson:2.8.1'
implementation 'me.xdrop:fuzzywuzzy:1.1.9'
// Yes that's dagger 1, "deprecated".
// There's little wrong with it, except that it might be slow at runtime.
// We don't have a huge graph. The major downside of the newer dagger version
// is that it uses annotation processing. Annotation processors block incremental
// compiling, so our builds become way slower, and I rather have faster builds.
// Move to gradle 2 when incremental compiling supports annotation processors.
compile 'com.squareup.dagger:dagger:1.2.5'
annotationProcessor 'com.squareup.dagger:dagger-compiler:1.2.5'
implementation 'org.codejargon.feather:feather:1.0'
}

@ -22,7 +22,7 @@
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
Copyright (C) 2007 Free Software Foundation, Inc. &lt;http://fsf.org/&gt;
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.

@ -194,6 +194,7 @@ The GIFLIB distribution is Copyright (c) 1997 Eric S. Raymond
</code>
</pre>
<br>
<h3>autolink-java</h3>
<a href="https://github.com/robinst/autolink-java">https://github.com/robinst/autolink-java</a>
<pre>
@ -221,6 +222,73 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
</code>
</pre>
<h3>Google Gson</h3>
<a href="https://github.com/google/gson">https://github.com/google/gson</a>
<pre>
<code>
Copyright 2008 Google Inc.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
</code>
</pre>
<br>
<h3>xdrop fuzzywuzzy</h3>
<a href="https://github.com/xdrop/fuzzywuzzy">https://github.com/xdrop/fuzzywuzzy</a>
<pre>
<code>
fuzzywuzzy
Java fuzzy string matching implementation of the well known Python's fuzzywuzzy algorithm. Fuzzy search for Java
Copyright (C) 2016 xdrop
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see &lt;http://www.gnu.org/licenses/&gt;.
</code>
</pre>
<br>
<h3>zsoltherpai feather</h3>
<a href="https://github.com/zsoltherpai/feather">https://github.com/zsoltherpai/feather</a>
<pre>
<code>
Copyright {2015} {Zsolt Herpai}
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
</code>
</pre>
<br>
</body>
</html>

@ -25,6 +25,7 @@ import android.os.Build;
import android.os.Bundle;
import android.os.StrictMode;
import org.codejargon.feather.Feather;
import org.floens.chan.core.database.DatabaseManager;
import org.floens.chan.core.di.AppModule;
import org.floens.chan.core.di.NetModule;
@ -38,7 +39,6 @@ import java.util.Locale;
import javax.inject.Inject;
import dagger.ObjectGraph;
import de.greenrobot.event.EventBus;
public class Chan extends Application implements UserAgentProvider, Application.ActivityLifecycleCallbacks {
@ -50,13 +50,12 @@ public class Chan extends Application implements UserAgentProvider, Application.
private String userAgent;
private int activityForegroundCounter = 0;
protected ObjectGraph graph;
@Inject
SiteManager siteManager;
@Inject
DatabaseManager databaseManager;
private Feather feather;
public Chan() {
instance = this;
@ -66,12 +65,13 @@ public class Chan extends Application implements UserAgentProvider, Application.
return instance;
}
public static ObjectGraph getGraph() {
return instance.graph;
public static Feather injector() {
return instance.feather;
}
public static <T> T inject(T instance) {
return Chan.instance.graph.inject(instance);
Chan.instance.feather.injectFields(instance);
return instance;
}
@Override
@ -86,9 +86,7 @@ public class Chan extends Application implements UserAgentProvider, Application.
userAgent = createUserAgent();
graph = ObjectGraph.create(new AppModule(this, this), new NetModule());
graph.inject(this);
initializeGraph();
siteManager.initialize();
@ -117,6 +115,14 @@ public class Chan extends Application implements UserAgentProvider, Application.
}
}
private void initializeGraph() {
feather = Feather.with(
new AppModule(this, this),
new NetModule()
);
feather.injectFields(this);
}
@Override
public String getUserAgent() {
return userAgent;

@ -5,103 +5,11 @@ import android.content.Context;
import com.android.volley.RequestQueue;
import com.android.volley.toolbox.ImageLoader;
import org.floens.chan.ChanApplication;
import org.floens.chan.core.site.loader.ChanLoader;
import org.floens.chan.core.cache.FileCache;
import org.floens.chan.core.database.DatabaseManager;
import org.floens.chan.core.database.LoadableProvider;
import org.floens.chan.core.manager.BoardManager;
import org.floens.chan.core.manager.FilterEngine;
import org.floens.chan.core.manager.ReplyManager;
import org.floens.chan.core.manager.WatchManager;
import org.codejargon.feather.Provides;
import org.floens.chan.core.net.BitmapLruImageCache;
import org.floens.chan.core.presenter.BoardSetupPresenter;
import org.floens.chan.core.presenter.ImageViewerPresenter;
import org.floens.chan.core.presenter.ReplyPresenter;
import org.floens.chan.core.presenter.SitesSetupPresenter;
import org.floens.chan.core.presenter.ThreadPresenter;
import org.floens.chan.core.receiver.WatchUpdateReceiver;
import org.floens.chan.core.saver.ImageSaveTask;
import org.floens.chan.core.site.SiteManager;
import org.floens.chan.core.site.common.ChanReaderRequest;
import org.floens.chan.core.site.http.HttpCallManager;
import org.floens.chan.core.update.UpdateManager;
import org.floens.chan.ui.activity.BoardActivity;
import org.floens.chan.ui.adapter.DrawerAdapter;
import org.floens.chan.ui.adapter.PostsFilter;
import org.floens.chan.ui.controller.BoardSetupController;
import org.floens.chan.ui.controller.BrowseController;
import org.floens.chan.ui.controller.DeveloperSettingsController;
import org.floens.chan.ui.controller.DrawerController;
import org.floens.chan.ui.controller.FiltersController;
import org.floens.chan.ui.controller.HistoryController;
import org.floens.chan.ui.controller.ImageViewerController;
import org.floens.chan.ui.controller.MainSettingsController;
import org.floens.chan.ui.controller.SiteSetupController;
import org.floens.chan.ui.controller.SitesSetupController;
import org.floens.chan.ui.controller.ViewThreadController;
import org.floens.chan.ui.helper.ImagePickDelegate;
import org.floens.chan.ui.layout.FilterLayout;
import org.floens.chan.ui.layout.ReplyLayout;
import org.floens.chan.ui.layout.ThreadLayout;
import org.floens.chan.ui.service.WatchNotifier;
import org.floens.chan.ui.view.MultiImageView;
import javax.inject.Singleton;
import dagger.Module;
import dagger.Provides;
@Module(
injects = {
// Context.class, // ApplicationContext
BoardManager.class,
DatabaseManager.class,
ReplyManager.class,
ImageLoader.class,
FileCache.class,
HttpCallManager.class,
LoadableProvider.class,
ChanApplication.class,
MainSettingsController.class,
ReplyPresenter.class,
ChanReaderRequest.class,
ThreadLayout.class,
DeveloperSettingsController.class,
BoardActivity.class,
ThreadPresenter.class,
FilterEngine.class,
BrowseController.class,
FilterLayout.class,
HistoryController.class,
DrawerController.class,
DrawerAdapter.class,
WatchNotifier.class,
WatchUpdateReceiver.class,
ImagePickDelegate.class,
FiltersController.class,
PostsFilter.class,
ChanLoader.class,
ImageViewerController.class,
ImageViewerPresenter.class,
MultiImageView.class,
ImageSaveTask.class,
ViewThreadController.class,
WatchManager.PinWatcher.class,
UpdateManager.class,
SiteManager.class,
SitesSetupPresenter.class,
BoardSetupPresenter.class,
SiteSetupController.class,
SitesSetupController.class,
BoardSetupController.class,
ReplyLayout.class,
},
complete = false,
includes = NetModule.class
)
public class AppModule {
private Context applicationContext;
private UserAgentProvider userAgentProvider;

@ -5,6 +5,7 @@ import android.content.Context;
import com.android.volley.RequestQueue;
import com.android.volley.toolbox.Volley;
import org.codejargon.feather.Provides;
import org.floens.chan.core.cache.FileCache;
import org.floens.chan.core.net.ProxiedHurlStack;
@ -12,16 +13,6 @@ import java.io.File;
import javax.inject.Singleton;
import dagger.Module;
import dagger.Provides;
@Module(
injects = {
RequestQueue.class,
FileCache.class
},
complete = false
)
public class NetModule {
private static final int VOLLEY_CACHE_SIZE = 10 * 1024 * 1024;
private static final long FILE_CACHE_DISK_SIZE = 50 * 1024 * 1024;

@ -27,17 +27,17 @@ import android.os.Message;
import android.os.PowerManager;
import org.floens.chan.Chan;
import org.floens.chan.core.site.loader.ChanLoader;
import org.floens.chan.core.database.DatabaseManager;
import org.floens.chan.core.database.DatabasePinManager;
import org.floens.chan.core.exception.ChanLoaderException;
import org.floens.chan.core.model.ChanThread;
import org.floens.chan.core.model.orm.Loadable;
import org.floens.chan.core.model.orm.Pin;
import org.floens.chan.core.model.Post;
import org.floens.chan.core.model.PostImage;
import org.floens.chan.core.model.orm.Loadable;
import org.floens.chan.core.model.orm.Pin;
import org.floens.chan.core.pool.ChanLoaderFactory;
import org.floens.chan.core.settings.ChanSettings;
import org.floens.chan.core.site.loader.ChanLoader;
import org.floens.chan.ui.helper.PostHelper;
import org.floens.chan.ui.service.WatchNotifier;
import org.floens.chan.utils.Logger;
@ -57,7 +57,7 @@ import javax.inject.Singleton;
import de.greenrobot.event.EventBus;
import static org.floens.chan.Chan.getGraph;
import static org.floens.chan.Chan.inject;
import static org.floens.chan.utils.AndroidUtils.getAppContext;
/**
@ -665,7 +665,7 @@ public class WatchManager {
public PinWatcher(Pin pin) {
this.pin = pin;
getGraph().inject(this);
inject(this);
Logger.d(TAG, "PinWatcher: created for " + pin);
chanLoader = chanLoaderFactory.obtain(pin.loadable, this);

@ -21,8 +21,8 @@ import android.net.ConnectivityManager;
import android.support.v4.view.ViewPager;
import org.floens.chan.core.cache.FileCache;
import org.floens.chan.core.model.orm.Loadable;
import org.floens.chan.core.model.PostImage;
import org.floens.chan.core.model.orm.Loadable;
import org.floens.chan.core.settings.ChanSettings;
import org.floens.chan.ui.view.MultiImageView;
@ -32,7 +32,7 @@ import java.util.List;
import javax.inject.Inject;
import static org.floens.chan.Chan.getGraph;
import static org.floens.chan.Chan.inject;
import static org.floens.chan.utils.AndroidUtils.isConnected;
public class ImageViewerPresenter implements MultiImageView.Callback, ViewPager.OnPageChangeListener {
@ -56,7 +56,7 @@ public class ImageViewerPresenter implements MultiImageView.Callback, ViewPager.
public ImageViewerPresenter(Callback callback) {
this.callback = callback;
getGraph().inject(this);
inject(this);
}
public void showImages(List<PostImage> images, int position, Loadable loadable) {

@ -21,13 +21,11 @@ import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import org.floens.chan.Chan;
import org.floens.chan.core.manager.WatchManager;
import org.floens.chan.utils.Logger;
import javax.inject.Inject;
import static org.floens.chan.Chan.getGraph;
import static org.floens.chan.Chan.inject;
public class WatchUpdateReceiver extends BroadcastReceiver {
private static final String TAG = "WatchUpdateReceiver";
@ -36,7 +34,7 @@ public class WatchUpdateReceiver extends BroadcastReceiver {
WatchManager watchManager;
public WatchUpdateReceiver() {
getGraph().inject(this);
inject(this);
}
@Override

@ -34,7 +34,7 @@ import java.io.IOException;
import javax.inject.Inject;
import static org.floens.chan.Chan.getGraph;
import static org.floens.chan.Chan.inject;
import static org.floens.chan.utils.AndroidUtils.dp;
import static org.floens.chan.utils.AndroidUtils.getAppContext;
@ -56,7 +56,7 @@ public class ImageSaveTask implements Runnable, FileCache.DownloadedCallback {
private boolean success = false;
public ImageSaveTask(PostImage postImage) {
getGraph().inject(this);
inject(this);
this.postImage = postImage;
}

@ -20,6 +20,7 @@ package org.floens.chan.core.site;
import com.android.volley.RequestQueue;
import org.codejargon.feather.Feather;
import org.floens.chan.core.database.LoadableProvider;
import org.floens.chan.core.manager.BoardManager;
import org.floens.chan.core.model.json.site.SiteConfig;
@ -29,9 +30,7 @@ import org.floens.chan.core.site.http.HttpCallManager;
import java.util.Collections;
import dagger.ObjectGraph;
import static org.floens.chan.Chan.getGraph;
import static org.floens.chan.Chan.injector;
public abstract class SiteBase implements Site {
protected int id;
@ -52,12 +51,11 @@ public abstract class SiteBase implements Site {
@Override
public void postInitialize() {
ObjectGraph graph = getGraph();
httpCallManager = graph.get(HttpCallManager.class);
requestQueue = graph.get(RequestQueue.class);
boardManager = graph.get(BoardManager.class);
loadableProvider = graph.get(LoadableProvider.class);
Feather injector = injector();
httpCallManager = injector.instance(HttpCallManager.class);
requestQueue = injector.instance(RequestQueue.class);
boardManager = injector.instance(BoardManager.class);
loadableProvider = injector.instance(LoadableProvider.class);
if (boardsType() == BoardsType.DYNAMIC) {
boards(boards -> boardManager.createAll(boards.boards));

@ -19,8 +19,6 @@ package org.floens.chan.core.site.common;
import android.util.JsonReader;
import org.floens.chan.core.site.loader.ChanLoaderRequestParams;
import org.floens.chan.core.site.loader.ChanLoaderResponse;
import org.floens.chan.core.database.DatabaseManager;
import org.floens.chan.core.database.DatabaseSavedReplyManager;
import org.floens.chan.core.manager.FilterEngine;
@ -28,6 +26,8 @@ import org.floens.chan.core.model.Post;
import org.floens.chan.core.model.orm.Filter;
import org.floens.chan.core.model.orm.Loadable;
import org.floens.chan.core.net.JsonReaderRequest;
import org.floens.chan.core.site.loader.ChanLoaderRequestParams;
import org.floens.chan.core.site.loader.ChanLoaderResponse;
import org.floens.chan.utils.Time;
import java.util.ArrayList;
@ -44,7 +44,7 @@ import javax.inject.Inject;
import okhttp3.HttpUrl;
import static org.floens.chan.Chan.getGraph;
import static org.floens.chan.Chan.inject;
/**
* Process a typical imageboard json response.<br>
@ -79,7 +79,7 @@ public class ChanReaderRequest extends JsonReaderRequest<ChanLoaderResponse> {
public ChanReaderRequest(ChanLoaderRequestParams request) {
super(getChanUrl(request.loadable).toString(), request.listener, request.errorListener);
getGraph().inject(this);
inject(this);
// Copy the loadable and cached list. The cached array may changed/cleared by other threads.
loadable = request.loadable.copy();

@ -43,7 +43,7 @@ import java.util.concurrent.TimeUnit;
import javax.inject.Inject;
import static org.floens.chan.Chan.getGraph;
import static org.floens.chan.Chan.inject;
/**
* A ChanLoader is the loader for Loadables.
@ -78,7 +78,7 @@ public class ChanLoader implements Response.ErrorListener, Response.Listener<Cha
public ChanLoader(Loadable loadable) {
this.loadable = loadable;
getGraph().inject(this);
inject(this);
if (loadable.mode == Loadable.Mode.BOARD) {
loadable.mode = Loadable.Mode.CATALOG;

@ -49,7 +49,7 @@ import java.util.Map;
import okhttp3.HttpUrl;
import okhttp3.Request;
import static org.floens.chan.Chan.getGraph;
import static org.floens.chan.Chan.injector;
public class Chan8 extends SiteBase {
private static final String TAG = "Chan8";
@ -285,7 +285,7 @@ public class Chan8 extends SiteBase {
@Override
public void post(Reply reply, final PostListener postListener) {
// TODO
HttpCallManager httpCallManager = getGraph().get(HttpCallManager.class);
HttpCallManager httpCallManager = injector().instance(HttpCallManager.class);
httpCallManager.makeHttpCall(new Chan8ReplyHttpCall(this, reply),
new HttpCall.HttpCallback<CommonReplyHttpCall>() {
@Override

@ -43,7 +43,7 @@ import javax.inject.Inject;
import okhttp3.HttpUrl;
import static org.floens.chan.Chan.getGraph;
import static org.floens.chan.Chan.inject;
/**
* Calls the update API and downloads and requests installs of APK files.
@ -66,7 +66,7 @@ public class UpdateManager {
private UpdateCallback callback;
public UpdateManager(UpdateCallback callback) {
getGraph().inject(this);
inject(this);
this.callback = callback;
}

@ -69,7 +69,7 @@ import java.util.List;
import javax.inject.Inject;
import static org.floens.chan.Chan.getGraph;
import static org.floens.chan.Chan.inject;
public class StartActivity extends AppCompatActivity implements NfcAdapter.CreateNdefMessageCallback {
private static final String TAG = "StartActivity";
@ -105,7 +105,7 @@ public class StartActivity extends AppCompatActivity implements NfcAdapter.Creat
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getGraph().inject(this);
inject(this);
ThemeHelper.getInstance().setupContext(this);

@ -42,7 +42,7 @@ import java.util.List;
import javax.inject.Inject;
import static org.floens.chan.Chan.getGraph;
import static org.floens.chan.Chan.inject;
import static org.floens.chan.ui.theme.ThemeHelper.theme;
import static org.floens.chan.utils.AndroidUtils.ROBOTO_MEDIUM;
import static org.floens.chan.utils.AndroidUtils.dp;
@ -78,7 +78,7 @@ public class DrawerAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
private Pin highlighted;
public DrawerAdapter(Callback callback) {
getGraph().inject(this);
inject(this);
this.callback = callback;
setHasStableIds(true);
}

@ -31,7 +31,7 @@ import java.util.Locale;
import javax.inject.Inject;
import static org.floens.chan.Chan.getGraph;
import static org.floens.chan.Chan.inject;
public class PostsFilter {
public static final Comparator<Post> IMAGE_COMPARATOR = new Comparator<Post>() {
@ -71,7 +71,7 @@ public class PostsFilter {
public PostsFilter(Order order, String query) {
this.order = order;
this.query = query;
getGraph().inject(this);
inject(this);
}
/**

@ -81,7 +81,7 @@ import java.util.List;
import okhttp3.HttpUrl;
import static android.text.TextUtils.isEmpty;
import static org.floens.chan.Chan.getGraph;
import static org.floens.chan.Chan.injector;
import static org.floens.chan.utils.AndroidUtils.ROBOTO_CONDENSED_REGULAR;
import static org.floens.chan.utils.AndroidUtils.dp;
import static org.floens.chan.utils.AndroidUtils.getString;
@ -834,7 +834,7 @@ public class PostCell extends LinearLayout implements PostCellInterface {
}
private void request() {
request = getGraph().get(ImageLoader.class).get(url.toString(), this);
request = injector().instance(ImageLoader.class).get(url.toString(), this);
}
private void cancel() {

@ -50,7 +50,7 @@ import java.util.List;
import javax.inject.Inject;
import static org.floens.chan.Chan.getGraph;
import static org.floens.chan.Chan.inject;
import static org.floens.chan.ui.theme.ThemeHelper.theme;
import static org.floens.chan.utils.AndroidUtils.fixSnackbarText;
import static org.floens.chan.utils.AndroidUtils.getAttrColor;
@ -99,7 +99,7 @@ public class BoardSetupController extends Controller implements View.OnClickList
public void onCreate() {
super.onCreate();
getGraph().inject(this);
inject(this);
// Inflate
view = inflateRes(R.layout.controller_board_setup);

@ -48,7 +48,7 @@ import java.util.List;
import javax.inject.Inject;
import static org.floens.chan.Chan.getGraph;
import static org.floens.chan.Chan.inject;
import static org.floens.chan.utils.AndroidUtils.getString;
public class BrowseController extends ThreadController implements ToolbarMenuItem.ToolbarMenuItemCallback, ThreadLayout.ThreadLayoutCallback, BrowsePresenter.Callback {
@ -78,7 +78,7 @@ public class BrowseController extends ThreadController implements ToolbarMenuIte
@Override
public void onCreate() {
super.onCreate();
getGraph().inject(this);
inject(this);
// Initialization
postViewMode = ChanSettings.boardViewMode.get();

@ -30,7 +30,7 @@ import org.floens.chan.core.database.DatabaseManager;
import javax.inject.Inject;
import static org.floens.chan.Chan.getGraph;
import static org.floens.chan.Chan.inject;
import static org.floens.chan.utils.AndroidUtils.dp;
import static org.floens.chan.utils.AndroidUtils.getAttrColor;
@ -48,7 +48,7 @@ public class DeveloperSettingsController extends Controller {
public void onCreate() {
super.onCreate();
getGraph().inject(this);
inject(this);
navigationItem.setTitle(R.string.settings_developer);

@ -49,7 +49,7 @@ import javax.inject.Inject;
import de.greenrobot.event.EventBus;
import static org.floens.chan.Chan.getGraph;
import static org.floens.chan.Chan.inject;
import static org.floens.chan.ui.theme.ThemeHelper.theme;
import static org.floens.chan.utils.AndroidUtils.ROBOTO_MEDIUM;
import static org.floens.chan.utils.AndroidUtils.dp;
@ -73,7 +73,7 @@ public class DrawerController extends Controller implements DrawerAdapter.Callba
@Override
public void onCreate() {
super.onCreate();
getGraph().inject(this);
inject(this);
EventBus.getDefault().register(this);

@ -50,7 +50,7 @@ import javax.inject.Inject;
import de.greenrobot.event.EventBus;
import static org.floens.chan.Chan.getGraph;
import static org.floens.chan.Chan.inject;
import static org.floens.chan.ui.theme.ThemeHelper.theme;
import static org.floens.chan.utils.AndroidUtils.getAttrColor;
import static org.floens.chan.utils.AndroidUtils.getString;
@ -106,7 +106,7 @@ public class FiltersController extends Controller implements ToolbarMenuItem.Too
@Override
public void onCreate() {
super.onCreate();
getGraph().inject(this);
inject(this);
navigationItem.setTitle(R.string.filters_screen);
navigationItem.menu = new ToolbarMenu(context);

@ -53,7 +53,7 @@ import java.util.Locale;
import javax.inject.Inject;
import static org.floens.chan.Chan.getGraph;
import static org.floens.chan.Chan.inject;
import static org.floens.chan.ui.theme.ThemeHelper.theme;
import static org.floens.chan.utils.AndroidUtils.dp;
@ -82,7 +82,7 @@ public class HistoryController extends Controller implements CompoundButton.OnCh
@Override
public void onCreate() {
super.onCreate();
getGraph().inject(this);
inject(this);
databaseHistoryManager = databaseManager.getDatabaseHistoryManager();
databaseSavedReplyManager = databaseManager.getDatabaseSavedReplyManager();

@ -46,13 +46,13 @@ import com.android.volley.toolbox.ImageLoader;
import com.davemorrissey.labs.subscaleview.ImageViewState;
import org.floens.chan.R;
import org.floens.chan.core.site.ImageSearch;
import org.floens.chan.controller.Controller;
import org.floens.chan.core.model.PostImage;
import org.floens.chan.core.presenter.ImageViewerPresenter;
import org.floens.chan.core.saver.ImageSaveTask;
import org.floens.chan.core.saver.ImageSaver;
import org.floens.chan.core.settings.ChanSettings;
import org.floens.chan.core.site.ImageSearch;
import org.floens.chan.ui.adapter.ImageViewerAdapter;
import org.floens.chan.ui.toolbar.Toolbar;
import org.floens.chan.ui.toolbar.ToolbarMenu;
@ -75,7 +75,7 @@ import javax.inject.Inject;
import okhttp3.HttpUrl;
import static org.floens.chan.Chan.getGraph;
import static org.floens.chan.Chan.inject;
import static org.floens.chan.utils.AndroidUtils.dp;
import static org.floens.chan.utils.AndroidUtils.getString;
@ -111,7 +111,7 @@ public class ImageViewerController extends Controller implements ImageViewerPres
public ImageViewerController(Context context, Toolbar toolbar) {
super(context);
getGraph().inject(this);
inject(this);
this.toolbar = toolbar;
@ -547,6 +547,7 @@ public class ImageViewerController extends Controller implements ImageViewerPres
/**
* Send thumbnail image of movie posts because none of the image search providers support movies (such as webm) directly
*
* @param postImage the post image
* @return url of an image to be searched
*/

@ -25,7 +25,6 @@ import android.text.TextUtils;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.PopupWindow;
import android.widget.Toast;
import org.floens.chan.R;
@ -55,7 +54,7 @@ import javax.inject.Inject;
import de.greenrobot.event.EventBus;
import static org.floens.chan.Chan.getGraph;
import static org.floens.chan.Chan.inject;
import static org.floens.chan.ui.theme.ThemeHelper.theme;
import static org.floens.chan.utils.AndroidUtils.getString;
@ -92,8 +91,8 @@ public class MainSettingsController extends SettingsController implements Toolba
@Override
public void onCreate() {
super.onCreate();
inject(this);
getGraph().inject(this);
EventBus.getDefault().register(this);
navigationItem.setTitle(R.string.settings_screen);

@ -28,7 +28,7 @@ import org.floens.chan.ui.settings.SettingsGroup;
import javax.inject.Inject;
import static org.floens.chan.Chan.getGraph;
import static org.floens.chan.Chan.inject;
public class SiteSetupController extends SettingsController implements SiteSetupPresenter.Callback {
@Inject
@ -45,8 +45,7 @@ public class SiteSetupController extends SettingsController implements SiteSetup
@Override
public void onCreate() {
super.onCreate();
getGraph().inject(this);
inject(this);
// Navigation
navigationItem.setTitle(R.string.settings_screen);

@ -47,7 +47,7 @@ import java.util.List;
import javax.inject.Inject;
import static org.floens.chan.Chan.getGraph;
import static org.floens.chan.Chan.inject;
import static org.floens.chan.ui.theme.ThemeHelper.theme;
import static org.floens.chan.utils.AndroidUtils.setRoundItemBackground;
@ -72,8 +72,7 @@ public class SitesSetupController extends StyledToolbarNavigationController impl
@Override
public void onCreate() {
super.onCreate();
getGraph().inject(this);
inject(this);
// Inflate
view = inflateRes(R.layout.controller_sites_setup);

@ -42,7 +42,7 @@ import java.util.List;
import javax.inject.Inject;
import static org.floens.chan.Chan.getGraph;
import static org.floens.chan.Chan.inject;
import static org.floens.chan.utils.AndroidUtils.dp;
import static org.floens.chan.utils.AndroidUtils.getAttrColor;
@ -75,7 +75,7 @@ public class ViewThreadController extends ThreadController implements ThreadLayo
@Override
public void onCreate() {
super.onCreate();
getGraph().inject(this);
inject(this);
threadLayout.setPostViewMode(ChanSettings.PostViewMode.LIST);

@ -37,7 +37,7 @@ import java.io.OutputStream;
import javax.inject.Inject;
import static org.floens.chan.Chan.getGraph;
import static org.floens.chan.Chan.inject;
import static org.floens.chan.utils.AndroidUtils.runOnUiThread;
public class ImagePickDelegate implements Runnable {
@ -60,7 +60,7 @@ public class ImagePickDelegate implements Runnable {
public ImagePickDelegate(Activity activity) {
this.activity = activity;
getGraph().inject(this);
inject(this);
}
public boolean pick(ImagePickCallback callback) {

@ -59,7 +59,7 @@ import java.util.List;
import javax.inject.Inject;
import static org.floens.chan.Chan.getGraph;
import static org.floens.chan.Chan.inject;
import static org.floens.chan.ui.theme.ThemeHelper.theme;
import static org.floens.chan.utils.AndroidUtils.dp;
import static org.floens.chan.utils.AndroidUtils.getAttrColor;
@ -102,7 +102,7 @@ public class FilterLayout extends LinearLayout implements View.OnClickListener {
@Override
protected void onFinishInflate() {
super.onFinishInflate();
getGraph().inject(this);
inject(this);
typeText = (TextView) findViewById(R.id.type);
boardsSelector = (TextView) findViewById(R.id.boards);

@ -45,10 +45,10 @@ import org.floens.chan.controller.Controller;
import org.floens.chan.core.database.DatabaseManager;
import org.floens.chan.core.exception.ChanLoaderException;
import org.floens.chan.core.model.ChanThread;
import org.floens.chan.core.model.orm.Loadable;
import org.floens.chan.core.model.Post;
import org.floens.chan.core.model.PostImage;
import org.floens.chan.core.model.PostLinkable;
import org.floens.chan.core.model.orm.Loadable;
import org.floens.chan.core.model.orm.ThreadHide;
import org.floens.chan.core.presenter.ThreadPresenter;
import org.floens.chan.core.settings.ChanSettings;
@ -64,7 +64,7 @@ import java.util.List;
import javax.inject.Inject;
import static org.floens.chan.Chan.getGraph;
import static org.floens.chan.Chan.inject;
import static org.floens.chan.ui.theme.ThemeHelper.theme;
import static org.floens.chan.utils.AndroidUtils.fixSnackbarText;
import static org.floens.chan.utils.AndroidUtils.getString;
@ -116,8 +116,7 @@ public class ThreadLayout extends CoordinatorLayout implements
public ThreadLayout(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
getGraph().inject(this);
inject(this);
}
public void create(ThreadLayoutCallback callback) {

@ -30,8 +30,8 @@ import android.text.TextUtils;
import org.floens.chan.Chan;
import org.floens.chan.R;
import org.floens.chan.core.manager.WatchManager;
import org.floens.chan.core.model.orm.Pin;
import org.floens.chan.core.model.Post;
import org.floens.chan.core.model.orm.Pin;
import org.floens.chan.core.settings.ChanSettings;
import org.floens.chan.ui.activity.BoardActivity;
@ -43,7 +43,7 @@ import java.util.regex.Pattern;
import javax.inject.Inject;
import static org.floens.chan.Chan.getGraph;
import static org.floens.chan.Chan.inject;
public class WatchNotifier extends Service {
private static final String TAG = "WatchNotifier";
@ -66,7 +66,7 @@ public class WatchNotifier extends Service {
@Override
public void onCreate() {
super.onCreate();
getGraph().inject(this);
inject(this);
nm = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

@ -51,7 +51,7 @@ import javax.inject.Inject;
import pl.droidsonroids.gif.GifDrawable;
import pl.droidsonroids.gif.GifImageView;
import static org.floens.chan.Chan.getGraph;
import static org.floens.chan.Chan.inject;
public class MultiImageView extends FrameLayout implements View.OnClickListener {
public enum Mode {
@ -98,7 +98,7 @@ public class MultiImageView extends FrameLayout implements View.OnClickListener
}
private void init() {
getGraph().inject(this);
inject(this);
setOnClickListener(this);

@ -42,7 +42,7 @@ import com.android.volley.toolbox.ImageLoader;
import org.floens.chan.R;
import static org.floens.chan.Chan.getGraph;
import static org.floens.chan.Chan.injector;
import static org.floens.chan.utils.AndroidUtils.getString;
import static org.floens.chan.utils.AndroidUtils.sp;
@ -105,7 +105,7 @@ public class ThumbnailView extends View implements ImageLoader.ImageListener {
}
if (!TextUtils.isEmpty(url)) {
container = getGraph().get(ImageLoader.class).get(url, this, width, height);
container = injector().instance(ImageLoader.class).get(url, this, width, height);
}
}

Loading…
Cancel
Save