diff --git a/Clover/app/build.gradle b/Clover/app/build.gradle index d7a677e3..45bf6e4e 100644 --- a/Clover/app/build.gradle +++ b/Clover/app/build.gradle @@ -2,7 +2,7 @@ apply plugin: 'com.android.application' android { compileSdkVersion 21 - buildToolsVersion "21.1.2" + buildToolsVersion "22.0.1" defaultConfig { minSdkVersion 14 @@ -71,9 +71,9 @@ android { } dependencies { - compile 'com.android.support:support-v13:21.0.0' - compile 'com.android.support:appcompat-v7:21.0.3' - compile 'com.android.support:support-v13:18.0.0' + compile 'com.android.support:support-v13:22.0.0' + compile 'com.android.support:appcompat-v7:22.0.0' + compile 'com.android.support:recyclerview-v7:22.0.0' compile 'org.jsoup:jsoup:1.8.1' compile 'com.j256.ormlite:ormlite-core:4.48' diff --git a/Clover/app/src/main/java/org/floens/chan/controller/NavigationController.java b/Clover/app/src/main/java/org/floens/chan/controller/NavigationController.java index 9e673bd6..bd1c6fde 100644 --- a/Clover/app/src/main/java/org/floens/chan/controller/NavigationController.java +++ b/Clover/app/src/main/java/org/floens/chan/controller/NavigationController.java @@ -80,9 +80,14 @@ public abstract class NavigationController extends Controller implements Control toolbar.setNavigationItem(false, true, to.navigationItem); } + controllerPushed(to); + return true; } + protected void controllerPushed(Controller controller) { + } + public boolean popController() { return popController(true); } @@ -122,9 +127,14 @@ public abstract class NavigationController extends Controller implements Control controllerList.remove(from); } + controllerPopped(to); + return true; } + protected void controllerPopped(Controller controller) { + } + @Override public void onControllerTransitionCompleted(ControllerTransition transition) { ControllerLogic.finishTransition(transition); diff --git a/Clover/app/src/main/java/org/floens/chan/ui/adapter/PinAdapter.java b/Clover/app/src/main/java/org/floens/chan/ui/adapter/PinAdapter.java new file mode 100644 index 00000000..992a21d0 --- /dev/null +++ b/Clover/app/src/main/java/org/floens/chan/ui/adapter/PinAdapter.java @@ -0,0 +1,36 @@ +package org.floens.chan.ui.adapter; + +import android.support.v7.widget.RecyclerView; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +public class PinAdapter extends RecyclerView.Adapter { + @Override + public PinViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + + TextView test = new TextView(parent.getContext()); + + return new PinViewHolder(test); + } + + @Override + public void onBindViewHolder(PinViewHolder holder, int position) { + ((TextView)holder.itemView).setText("Position = " + position); + } + + @Override + public int getItemCount() { + return 1000; + } + + public static class PinViewHolder extends RecyclerView.ViewHolder { + private View itemView; + + public PinViewHolder(View itemView) { + super(itemView); + this.itemView = itemView; + } + } + +} diff --git a/Clover/app/src/main/java/org/floens/chan/ui/cell/PinCell.java b/Clover/app/src/main/java/org/floens/chan/ui/cell/PinCell.java new file mode 100644 index 00000000..2e1bd5d3 --- /dev/null +++ b/Clover/app/src/main/java/org/floens/chan/ui/cell/PinCell.java @@ -0,0 +1,24 @@ +package org.floens.chan.ui.cell; + +import android.content.Context; +import android.util.AttributeSet; +import android.widget.LinearLayout; + +public class PinCell extends LinearLayout { + public PinCell(Context context) { + super(context); + } + + public PinCell(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public PinCell(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + } + + @Override + protected void onFinishInflate() { + super.onFinishInflate(); + } +} diff --git a/Clover/app/src/main/java/org/floens/chan/ui/controller/BrowseController.java b/Clover/app/src/main/java/org/floens/chan/ui/controller/BrowseController.java index aaf8a86b..1dca9abc 100644 --- a/Clover/app/src/main/java/org/floens/chan/ui/controller/BrowseController.java +++ b/Clover/app/src/main/java/org/floens/chan/ui/controller/BrowseController.java @@ -60,11 +60,11 @@ public class BrowseController extends ThreadController implements ToolbarMenuIte ChanApplication.getBoardManager().addListener(this); + navigationItem.hasDrawer = true; navigationItem.middleMenu = new FloatingMenu(context); navigationItem.middleMenu.setCallback(this); loadBoards(); - navigationItem.title = "Hello world"; ToolbarMenu menu = new ToolbarMenu(context); navigationItem.menu = menu; navigationItem.hasBack = false; diff --git a/Clover/app/src/main/java/org/floens/chan/ui/controller/RootNavigationController.java b/Clover/app/src/main/java/org/floens/chan/ui/controller/RootNavigationController.java index cf01470d..0fa9cf49 100644 --- a/Clover/app/src/main/java/org/floens/chan/ui/controller/RootNavigationController.java +++ b/Clover/app/src/main/java/org/floens/chan/ui/controller/RootNavigationController.java @@ -20,11 +20,16 @@ package org.floens.chan.ui.controller; import android.content.Context; import android.content.res.Configuration; import android.support.v4.widget.DrawerLayout; +import android.support.v7.widget.LinearLayoutManager; +import android.support.v7.widget.RecyclerView; +import android.view.Gravity; import android.view.View; import android.widget.FrameLayout; import org.floens.chan.R; +import org.floens.chan.controller.Controller; import org.floens.chan.controller.NavigationController; +import org.floens.chan.ui.adapter.PinAdapter; import org.floens.chan.ui.toolbar.Toolbar; import org.floens.chan.utils.AndroidUtils; @@ -34,6 +39,8 @@ public class RootNavigationController extends NavigationController { public DrawerLayout drawerLayout; public FrameLayout drawer; + private RecyclerView recyclerView; + public RootNavigationController(Context context) { super(context); } @@ -47,6 +54,15 @@ public class RootNavigationController extends NavigationController { container = (FrameLayout) view.findViewById(R.id.container); drawerLayout = (DrawerLayout) view.findViewById(R.id.drawer_layout); drawer = (FrameLayout) view.findViewById(R.id.drawer); + recyclerView = (RecyclerView) view.findViewById(R.id.drawer_recycler_view); + + recyclerView.setHasFixedSize(true); + + LinearLayoutManager linearLayoutManager = new LinearLayoutManager(context); + recyclerView.setLayoutManager(linearLayoutManager); + + PinAdapter adapter = new PinAdapter(); + recyclerView.setAdapter(adapter); toolbar.setCallback(this); @@ -77,6 +93,22 @@ public class RootNavigationController extends NavigationController { drawerLayout.openDrawer(drawer); } + @Override + protected void controllerPushed(Controller controller) { + super.controllerPushed(controller); + setDrawerEnabled(controller.navigationItem.hasDrawer); + } + + @Override + protected void controllerPopped(Controller controller) { + super.controllerPopped(controller); + setDrawerEnabled(controller.navigationItem.hasDrawer); + } + + private void setDrawerEnabled(boolean enabled) { + drawerLayout.setDrawerLockMode(enabled ? DrawerLayout.LOCK_MODE_UNLOCKED : DrawerLayout.LOCK_MODE_LOCKED_CLOSED, Gravity.LEFT); + } + private boolean setDrawerWidth() { int width = Math.min(view.getWidth() - dp(56), dp(56) * 6); if (drawer.getWidth() != width) { diff --git a/Clover/app/src/main/java/org/floens/chan/ui/controller/ViewThreadController.java b/Clover/app/src/main/java/org/floens/chan/ui/controller/ViewThreadController.java index 6561c842..3023ca15 100644 --- a/Clover/app/src/main/java/org/floens/chan/ui/controller/ViewThreadController.java +++ b/Clover/app/src/main/java/org/floens/chan/ui/controller/ViewThreadController.java @@ -59,6 +59,7 @@ public class ViewThreadController extends ThreadController implements ThreadLayo threadLayout.getPresenter().bindLoadable(loadable); threadLayout.getPresenter().requestData(); + navigationItem.hasDrawer = true; navigationItem.title = loadable.title; navigationItem.menu = new ToolbarMenu(context); diff --git a/Clover/app/src/main/java/org/floens/chan/ui/toolbar/NavigationItem.java b/Clover/app/src/main/java/org/floens/chan/ui/toolbar/NavigationItem.java index de32e1b3..f4de1bdf 100644 --- a/Clover/app/src/main/java/org/floens/chan/ui/toolbar/NavigationItem.java +++ b/Clover/app/src/main/java/org/floens/chan/ui/toolbar/NavigationItem.java @@ -33,6 +33,7 @@ public class NavigationItem { public LinearLayout view; public FloatingMenu middleMenu; public View rightView; + public boolean hasDrawer = false; public ToolbarMenuItem createOverflow(Context context, ToolbarMenuItem.ToolbarMenuItemCallback callback, List items) { ToolbarMenuItem overflow = menu.createOverflow(callback); diff --git a/Clover/app/src/main/java/org/floens/chan/ui/view/ThumbnailView.java b/Clover/app/src/main/java/org/floens/chan/ui/view/ThumbnailView.java new file mode 100644 index 00000000..7db7ccad --- /dev/null +++ b/Clover/app/src/main/java/org/floens/chan/ui/view/ThumbnailView.java @@ -0,0 +1,41 @@ +package org.floens.chan.ui.view; + +import android.content.Context; +import android.util.AttributeSet; +import android.widget.ImageView; + +import com.android.volley.VolleyError; +import com.android.volley.toolbox.ImageLoader; + +import org.floens.chan.ChanApplication; + +public class ThumbnailView extends ImageView implements ImageLoader.ImageListener { + private String url; + + public ThumbnailView(Context context) { + super(context); + } + + public ThumbnailView(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public ThumbnailView(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + } + + public void setUrl(String url) { + this.url = url; + + ImageLoader.ImageContainer container = ChanApplication.getVolleyImageLoader().get(url, this); + } + + @Override + public void onResponse(ImageLoader.ImageContainer response, boolean isImmediate) { + } + + @Override + public void onErrorResponse(VolleyError error) { + + } +} diff --git a/Clover/app/src/main/res/layout/cell_pin.xml b/Clover/app/src/main/res/layout/cell_pin.xml new file mode 100644 index 00000000..6df16680 --- /dev/null +++ b/Clover/app/src/main/res/layout/cell_pin.xml @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/Clover/app/src/main/res/layout/controller_navigation_drawer.xml b/Clover/app/src/main/res/layout/controller_navigation_drawer.xml index aa7287a4..8800b381 100644 --- a/Clover/app/src/main/res/layout/controller_navigation_drawer.xml +++ b/Clover/app/src/main/res/layout/controller_navigation_drawer.xml @@ -47,12 +47,14 @@ along with this program. If not, see . android:layout_width="200dp" android:layout_height="match_parent" android:layout_gravity="left" - android:background="#ffffff00"> + android:background="#ffffffff"> + + -