1
0
Fork 0
mirror of https://github.com/geometer/FBReaderJ.git synced 2025-10-04 18:29:23 +02:00

code simplification

This commit is contained in:
Nikolay Pultsin 2011-09-27 00:06:11 +01:00
parent 19a3f74977
commit 0ae5dddabf
20 changed files with 72 additions and 70 deletions

View file

@ -32,6 +32,7 @@ import android.widget.ListView;
import org.geometerplus.zlibrary.core.network.ZLNetworkManager; import org.geometerplus.zlibrary.core.network.ZLNetworkManager;
import org.geometerplus.zlibrary.core.resources.ZLResource; import org.geometerplus.zlibrary.core.resources.ZLResource;
import org.geometerplus.zlibrary.core.util.ZLBoolean3;
import org.geometerplus.zlibrary.ui.android.network.SQLiteCookieDatabase; import org.geometerplus.zlibrary.ui.android.network.SQLiteCookieDatabase;
@ -135,7 +136,7 @@ public class NetworkLibraryActivity extends TreeActivity implements NetworkLibra
final NetworkTree tree = final NetworkTree tree =
NetworkLibrary.Instance().getCatalogTreeByUrl(uri.toString()); NetworkLibrary.Instance().getCatalogTreeByUrl(uri.toString());
if (tree != null) { if (tree != null) {
new OpenCatalogAction(this).checkAndRun(tree); checkAndRun(new OpenCatalogAction(this), tree);
return true; return true;
} }
} }
@ -253,7 +254,7 @@ public class NetworkLibraryActivity extends TreeActivity implements NetworkLibra
if (tree != null) { if (tree != null) {
for (Action a : getContextMenuActions(tree)) { for (Action a : getContextMenuActions(tree)) {
if (a.Code == item.getItemId()) { if (a.Code == item.getItemId()) {
a.checkAndRun(tree); checkAndRun(a, tree);
return true; return true;
} }
} }
@ -270,7 +271,7 @@ public class NetworkLibraryActivity extends TreeActivity implements NetworkLibra
final NetworkTree tree = (NetworkTree)getListAdapter().getItem(position); final NetworkTree tree = (NetworkTree)getListAdapter().getItem(position);
for (Action a : myListClickActions) { for (Action a : myListClickActions) {
if (a.isVisible(tree) && a.isEnabled(tree)) { if (a.isVisible(tree) && a.isEnabled(tree)) {
a.checkAndRun(tree); checkAndRun(a, tree);
return; return;
} }
} }
@ -337,7 +338,7 @@ public class NetworkLibraryActivity extends TreeActivity implements NetworkLibra
final NetworkTree tree = (NetworkTree)getCurrentTree(); final NetworkTree tree = (NetworkTree)getCurrentTree();
for (Action a : myOptionsMenuActions) { for (Action a : myOptionsMenuActions) {
if (a.Code == item.getItemId()) { if (a.Code == item.getItemId()) {
a.checkAndRun(tree); checkAndRun(a, tree);
break; break;
} }
} }
@ -435,4 +436,31 @@ public class NetworkLibraryActivity extends TreeActivity implements NetworkLibra
}) })
.create().show(); .create().show();
} }
private void checkAndRun(final Action action, final NetworkTree tree) {
if (tree instanceof NetworkCatalogTree) {
final NetworkCatalogTree catalogTree = (NetworkCatalogTree)tree;
switch (catalogTree.getVisibility()) {
case B3_FALSE:
break;
case B3_TRUE:
action.run(tree);
break;
case B3_UNDEFINED:
Util.runAuthenticationDialog(this, tree.getLink(), new Runnable() {
public void run() {
if (catalogTree.getVisibility() != ZLBoolean3.B3_TRUE) {
return;
}
if (action.Code != ActionCode.SIGNIN) {
action.run(tree);
}
}
});
break;
}
} else {
action.run(tree);
}
}
} }

View file

@ -31,6 +31,7 @@ import org.geometerplus.fbreader.network.*;
import org.geometerplus.fbreader.network.authentication.NetworkAuthenticationManager; import org.geometerplus.fbreader.network.authentication.NetworkAuthenticationManager;
import org.geometerplus.fbreader.network.authentication.litres.LitResAuthenticationManager; import org.geometerplus.fbreader.network.authentication.litres.LitResAuthenticationManager;
import org.geometerplus.fbreader.network.tree.NetworkBookTree; import org.geometerplus.fbreader.network.tree.NetworkBookTree;
import org.geometerplus.fbreader.network.tree.NetworkCatalogTree;
import org.geometerplus.fbreader.network.urlInfo.UrlInfo; import org.geometerplus.fbreader.network.urlInfo.UrlInfo;
import org.geometerplus.android.util.UIUtil; import org.geometerplus.android.util.UIUtil;
@ -186,19 +187,6 @@ public abstract class Util implements UserRegistrationConstants {
} }
} }
public static void openTree(Context context, NetworkTree tree) {
final Class<?> clz = tree instanceof NetworkBookTree
? NetworkBookInfoActivity.class : NetworkLibraryActivity.class;
if (context instanceof NetworkLibraryActivity && clz == NetworkLibraryActivity.class) {
((NetworkLibraryActivity)context).openTree(tree);
} else {
context.startActivity(
new Intent(context.getApplicationContext(), clz)
.putExtra(NetworkLibraryActivity.TREE_KEY_KEY, tree.getUniqueKey())
);
}
}
public static NetworkTree getTreeFromIntent(Intent intent) { public static NetworkTree getTreeFromIntent(Intent intent) {
final NetworkLibrary library = NetworkLibrary.Instance(); final NetworkLibrary library = NetworkLibrary.Instance();
final NetworkTree.Key key = (NetworkTree.Key)intent.getSerializableExtra(NetworkLibraryActivity.TREE_KEY_KEY); final NetworkTree.Key key = (NetworkTree.Key)intent.getSerializableExtra(NetworkLibraryActivity.TREE_KEY_KEY);

View file

@ -21,8 +21,6 @@ package org.geometerplus.android.fbreader.network.action;
import android.app.Activity; import android.app.Activity;
import org.geometerplus.zlibrary.core.util.ZLBoolean3;
import org.geometerplus.fbreader.network.NetworkTree; import org.geometerplus.fbreader.network.NetworkTree;
import org.geometerplus.fbreader.network.NetworkLibrary; import org.geometerplus.fbreader.network.NetworkLibrary;
import org.geometerplus.fbreader.network.tree.NetworkCatalogTree; import org.geometerplus.fbreader.network.tree.NetworkCatalogTree;
@ -49,7 +47,7 @@ public abstract class Action {
return true; return true;
} }
protected abstract void run(NetworkTree tree); public abstract void run(NetworkTree tree);
public String getContextLabel(NetworkTree tree) { public String getContextLabel(NetworkTree tree) {
return return
@ -60,28 +58,4 @@ public abstract class Action {
return return
NetworkLibrary.resource().getResource("menu").getResource(myResourceKey).getValue(); NetworkLibrary.resource().getResource("menu").getResource(myResourceKey).getValue();
} }
public void checkAndRun(final NetworkTree tree) {
if (tree instanceof NetworkCatalogTree) {
switch (((NetworkCatalogTree)tree).getVisibility()) {
case B3_TRUE:
run(tree);
break;
case B3_UNDEFINED:
Util.runAuthenticationDialog(myActivity, tree.getLink(), new Runnable() {
public void run() {
if (((NetworkCatalogTree)tree).getVisibility() != ZLBoolean3.B3_TRUE) {
return;
}
if (Code != ActionCode.SIGNIN) {
Action.this.run(tree);
}
}
});
break;
}
} else {
run(tree);
}
}
} }

View file

@ -41,7 +41,7 @@ public class AddCustomCatalogAction extends Action {
} }
@Override @Override
protected void run(NetworkTree tree) { public void run(NetworkTree tree) {
myActivity.startActivity(new Intent(myActivity, AddCustomCatalogActivity.class)); myActivity.startActivity(new Intent(myActivity, AddCustomCatalogActivity.class));
} }
} }

View file

@ -35,7 +35,7 @@ public class BuyBasketBooksAction extends CatalogAction {
} }
@Override @Override
protected void run(NetworkTree tree) { public void run(NetworkTree tree) {
// TODO: implement // TODO: implement
} }
} }

View file

@ -35,7 +35,7 @@ public class ClearBasketAction extends CatalogAction {
} }
@Override @Override
protected void run(NetworkTree tree) { public void run(NetworkTree tree) {
tree.getLink().basket().clear(); tree.getLink().basket().clear();
} }
} }

View file

@ -42,7 +42,7 @@ public class EditCustomCatalogAction extends CatalogAction {
} }
@Override @Override
protected void run(NetworkTree tree) { public void run(NetworkTree tree) {
final Intent intent = new Intent(myActivity, AddCustomCatalogActivity.class); final Intent intent = new Intent(myActivity, AddCustomCatalogActivity.class);
Util.intentByLink(intent, tree.getLink()); Util.intentByLink(intent, tree.getLink());
intent.putExtra(AddCustomCatalogActivity.EDIT_KEY, true); intent.putExtra(AddCustomCatalogActivity.EDIT_KEY, true);

View file

@ -39,7 +39,7 @@ public class LanguageFilterAction extends RootAction {
} }
@Override @Override
protected void run(NetworkTree tree) { public void run(NetworkTree tree) {
final NetworkLibrary library = NetworkLibrary.Instance(); final NetworkLibrary library = NetworkLibrary.Instance();
final List<String> allLanguageCodes = library.languageCodes(); final List<String> allLanguageCodes = library.languageCodes();

View file

@ -86,7 +86,7 @@ public abstract class NetworkBookActions {
} }
@Override @Override
protected void run(NetworkTree tree) { public void run(NetworkTree tree) {
run(getBook(tree)); run(getBook(tree));
} }

View file

@ -28,9 +28,8 @@ import org.geometerplus.fbreader.network.tree.NetworkCatalogTree;
import org.geometerplus.fbreader.network.tree.NetworkItemsLoader; import org.geometerplus.fbreader.network.tree.NetworkItemsLoader;
import org.geometerplus.fbreader.network.tree.CatalogExpander; import org.geometerplus.fbreader.network.tree.CatalogExpander;
import org.geometerplus.android.fbreader.network.Util; import org.geometerplus.android.fbreader.network.NetworkLibraryActivity;
import org.geometerplus.android.util.UIUtil;
import org.geometerplus.android.util.PackageUtil; import org.geometerplus.android.util.PackageUtil;
public class OpenCatalogAction extends CatalogAction { public class OpenCatalogAction extends CatalogAction {
@ -51,10 +50,14 @@ public class OpenCatalogAction extends CatalogAction {
doExpandCatalog((NetworkCatalogTree)tree); doExpandCatalog((NetworkCatalogTree)tree);
} }
private void doOpenTree(NetworkCatalogTree tree) {
((NetworkLibraryActivity)myActivity).openTree(tree);
}
private void doExpandCatalog(final NetworkCatalogTree tree) { private void doExpandCatalog(final NetworkCatalogTree tree) {
final NetworkItemsLoader loader = NetworkLibrary.Instance().getStoredLoader(tree); final NetworkItemsLoader loader = NetworkLibrary.Instance().getStoredLoader(tree);
if (loader != null && loader.canResumeLoading()) { if (loader != null && loader.canResumeLoading()) {
Util.openTree(myActivity, tree); doOpenTree(tree);
} else if (loader != null) { } else if (loader != null) {
loader.setPostRunnable(new Runnable() { loader.setPostRunnable(new Runnable() {
public void run() { public void run() {
@ -73,7 +76,7 @@ public class OpenCatalogAction extends CatalogAction {
if (tree.Item.supportsResumeLoading()) { if (tree.Item.supportsResumeLoading()) {
resumeNotLoad = true; resumeNotLoad = true;
} else { } else {
Util.openTree(myActivity, tree); doOpenTree(tree);
return; return;
} }
} else { } else {
@ -84,7 +87,7 @@ public class OpenCatalogAction extends CatalogAction {
new CatalogExpander(tree, true, resumeNotLoad).start(); new CatalogExpander(tree, true, resumeNotLoad).start();
processExtraData(tree.Item.extraData(), new Runnable() { processExtraData(tree.Item.extraData(), new Runnable() {
public void run() { public void run() {
Util.openTree(myActivity, tree); doOpenTree(tree);
} }
}); });
} }

View file

@ -51,7 +51,7 @@ public class OpenInBrowserAction extends CatalogAction {
} }
@Override @Override
protected void run(NetworkTree tree) { public void run(NetworkTree tree) {
final String url = final String url =
((NetworkURLCatalogItem)((NetworkCatalogTree)tree).Item).getUrl(UrlInfo.Type.HtmlPage); ((NetworkURLCatalogItem)((NetworkCatalogTree)tree).Item).getUrl(UrlInfo.Type.HtmlPage);

View file

@ -41,7 +41,7 @@ public class RefreshRootCatalogAction extends RootAction {
} }
@Override @Override
protected void run(NetworkTree tree) { public void run(NetworkTree tree) {
NetworkLibrary.Instance().runBackgroundUpdate(true); NetworkLibrary.Instance().runBackgroundUpdate(true);
} }
} }

View file

@ -51,7 +51,7 @@ public class ReloadCatalogAction extends CatalogAction {
} }
@Override @Override
protected void run(NetworkTree tree) { public void run(NetworkTree tree) {
if (NetworkLibrary.Instance().getStoredLoader(tree) != null) { if (NetworkLibrary.Instance().getStoredLoader(tree) != null) {
return; return;
} }

View file

@ -39,7 +39,7 @@ public class RemoveCustomCatalogAction extends CatalogAction {
} }
@Override @Override
protected void run(NetworkTree tree) { public void run(NetworkTree tree) {
final NetworkLibrary library = NetworkLibrary.Instance(); final NetworkLibrary library = NetworkLibrary.Instance();
library.removeCustomLink((ICustomNetworkLink)tree.getLink()); library.removeCustomLink((ICustomNetworkLink)tree.getLink());
library.synchronize(); library.synchronize();

View file

@ -20,12 +20,14 @@
package org.geometerplus.android.fbreader.network.action; package org.geometerplus.android.fbreader.network.action;
import android.app.Activity; import android.app.Activity;
import android.content.Intent;
import org.geometerplus.zlibrary.core.network.ZLNetworkException; import org.geometerplus.zlibrary.core.network.ZLNetworkException;
import org.geometerplus.fbreader.network.NetworkTree; import org.geometerplus.fbreader.network.NetworkTree;
import org.geometerplus.android.fbreader.network.Util; import org.geometerplus.android.fbreader.network.NetworkLibraryActivity;
import org.geometerplus.android.fbreader.network.NetworkBookInfoActivity;
import org.geometerplus.android.util.UIUtil; import org.geometerplus.android.util.UIUtil;
@ -35,9 +37,9 @@ public class ShowBookInfoAction extends BookAction {
} }
@Override @Override
protected void run(final NetworkTree tree) { public void run(final NetworkTree tree) {
if (getBook(tree).isFullyLoaded()) { if (getBook(tree).isFullyLoaded()) {
Util.openTree(myActivity, tree); showBookInfo(tree);
} else { } else {
UIUtil.wait("loadInfo", new Runnable() { UIUtil.wait("loadInfo", new Runnable() {
public void run() { public void run() {
@ -48,11 +50,18 @@ public class ShowBookInfoAction extends BookAction {
} }
myActivity.runOnUiThread(new Runnable() { myActivity.runOnUiThread(new Runnable() {
public void run() { public void run() {
Util.openTree(myActivity, tree); showBookInfo(tree);
} }
}); });
} }
}, myActivity); }, myActivity);
} }
} }
private void showBookInfo(NetworkTree tree) {
myActivity.startActivity(
new Intent(myActivity, NetworkBookInfoActivity.class)
.putExtra(NetworkLibraryActivity.TREE_KEY_KEY, tree.getUniqueKey())
);
}
} }

View file

@ -25,7 +25,7 @@ import org.geometerplus.fbreader.network.NetworkTree;
import org.geometerplus.fbreader.network.tree.NetworkAuthorTree; import org.geometerplus.fbreader.network.tree.NetworkAuthorTree;
import org.geometerplus.fbreader.network.tree.NetworkSeriesTree; import org.geometerplus.fbreader.network.tree.NetworkSeriesTree;
import org.geometerplus.android.fbreader.network.Util; import org.geometerplus.android.fbreader.network.NetworkLibraryActivity;
public class ShowBooksAction extends Action { public class ShowBooksAction extends Action {
public ShowBooksAction(Activity activity) { public ShowBooksAction(Activity activity) {
@ -38,7 +38,7 @@ public class ShowBooksAction extends Action {
} }
@Override @Override
protected void run(NetworkTree tree) { public void run(NetworkTree tree) {
Util.openTree(myActivity, tree); ((NetworkLibraryActivity)myActivity).openTree(tree);
} }
} }

View file

@ -43,7 +43,7 @@ public class SignInAction extends Action {
} }
@Override @Override
protected void run(NetworkTree tree) { public void run(NetworkTree tree) {
Util.runAuthenticationDialog(myActivity, tree.getLink(), null); Util.runAuthenticationDialog(myActivity, tree.getLink(), null);
} }
} }

View file

@ -44,7 +44,7 @@ public class SignOutAction extends Action {
} }
@Override @Override
protected void run(NetworkTree tree) { public void run(NetworkTree tree) {
final NetworkAuthenticationManager mgr = tree.getLink().authenticationManager(); final NetworkAuthenticationManager mgr = tree.getLink().authenticationManager();
final Runnable runnable = new Runnable() { final Runnable runnable = new Runnable() {
public void run() { public void run() {

View file

@ -48,7 +48,7 @@ public class SignUpAction extends Action {
} }
@Override @Override
protected void run(NetworkTree tree) { public void run(NetworkTree tree) {
Util.runRegistrationDialog(myActivity, tree.getLink()); Util.runRegistrationDialog(myActivity, tree.getLink());
} }
} }

View file

@ -54,7 +54,7 @@ public class TopupAction extends Action {
} }
@Override @Override
protected void run(NetworkTree tree) { public void run(NetworkTree tree) {
final INetworkLink link = tree.getLink(); final INetworkLink link = tree.getLink();
if (link != null) { if (link != null) {
TopupMenuActivity.runMenu(myActivity, link, null); TopupMenuActivity.runMenu(myActivity, link, null);