Begin of pinned pane

filtering
Floens 10 years ago
parent 4f45eb2b44
commit 0860fa4a31
  1. 8
      Clover/app/build.gradle
  2. 10
      Clover/app/src/main/java/org/floens/chan/controller/NavigationController.java
  3. 36
      Clover/app/src/main/java/org/floens/chan/ui/adapter/PinAdapter.java
  4. 24
      Clover/app/src/main/java/org/floens/chan/ui/cell/PinCell.java
  5. 2
      Clover/app/src/main/java/org/floens/chan/ui/controller/BrowseController.java
  6. 32
      Clover/app/src/main/java/org/floens/chan/ui/controller/RootNavigationController.java
  7. 1
      Clover/app/src/main/java/org/floens/chan/ui/controller/ViewThreadController.java
  8. 1
      Clover/app/src/main/java/org/floens/chan/ui/toolbar/NavigationItem.java
  9. 41
      Clover/app/src/main/java/org/floens/chan/ui/view/ThumbnailView.java
  10. 68
      Clover/app/src/main/res/layout/cell_pin.xml
  11. 12
      Clover/app/src/main/res/layout/controller_navigation_drawer.xml

@ -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'

@ -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);

@ -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<PinAdapter.PinViewHolder> {
@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;
}
}
}

@ -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();
}
}

@ -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;

@ -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) {

@ -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);

@ -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<FloatingMenuItem> items) {
ToolbarMenuItem overflow = menu.createOverflow(callback);

@ -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) {
}
}

@ -0,0 +1,68 @@
<?xml version="1.0" encoding="utf-8"?>
<org.floens.chan.ui.cell.PinCell xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="48dp">
<org.floens.chan.ui.view.CustomNetworkImageView
android:id="@+id/pin_image"
android:layout_width="48dp"
android:layout_height="match_parent"
android:scaleType="centerCrop" />
<TextView
android:id="@+id/pin_text"
android:layout_width="0dp"
android:layout_height="48dp"
android:layout_weight="1"
android:ellipsize="end"
android:gravity="center_vertical"
android:lines="1"
android:paddingBottom="8dp"
android:paddingLeft="16dp"
android:paddingRight="0dp"
android:paddingTop="8dp"
android:singleLine="true"
android:textColor="#fff"
android:textSize="19sp" />
<FrameLayout
android:id="@+id/pin_time_container"
android:layout_width="wrap_content"
android:layout_height="48dp"
android:paddingLeft="4dp">
<TextView
android:id="@+id/pin_time"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="center"
android:lines="1"
android:minWidth="36dp"
android:textColor="#fff"
android:textSize="16dp" />
</FrameLayout>
<FrameLayout
android:id="@+id/pin_count_container"
android:layout_width="48dp"
android:layout_height="48dp"
android:background="@drawable/pin_icon_blue">
<TextView
android:id="@+id/pin_count"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:textColor="#fff"
android:textSize="16dp" />
<ProgressBar
android:id="@+id/pin_load"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</FrameLayout>
</org.floens.chan.ui.cell.PinCell>

@ -47,12 +47,14 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
android:layout_width="200dp"
android:layout_height="match_parent"
android:layout_gravity="left"
android:background="#ffffff00">
android:background="#ffffffff">
<android.support.v7.widget.RecyclerView
android:id="@+id/drawer_recycler_view"
android:scrollbars="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello, world!" />
</FrameLayout>

Loading…
Cancel
Save