diff --git a/Chan/res/layout/activity_base.xml b/Chan/res/layout/activity_base.xml index b589a651..059dacab 100644 --- a/Chan/res/layout/activity_base.xml +++ b/Chan/res/layout/activity_base.xml @@ -10,13 +10,13 @@ diff --git a/Chan/src/org/floens/chan/ui/activity/BoardActivity.java b/Chan/src/org/floens/chan/ui/activity/BoardActivity.java index fdf7041d..b9681c64 100644 --- a/Chan/src/org/floens/chan/ui/activity/BoardActivity.java +++ b/Chan/src/org/floens/chan/ui/activity/BoardActivity.java @@ -11,6 +11,7 @@ import org.floens.chan.core.model.Pin; import org.floens.chan.core.model.Post; import org.floens.chan.service.WatchService; import org.floens.chan.ui.fragment.ThreadFragment; +import org.floens.chan.utils.Utils; import android.app.ActionBar; import android.app.AlertDialog; @@ -22,10 +23,13 @@ import android.net.Uri; import android.os.Bundle; import android.support.v4.app.ActionBarDrawerToggle; import android.text.TextUtils; +import android.util.DisplayMetrics; import android.view.Menu; import android.view.MenuItem; import android.view.View; +import android.view.ViewGroup.LayoutParams; import android.widget.ArrayAdapter; +import android.widget.FrameLayout; public class BoardActivity extends BaseActivity implements ActionBar.OnNavigationListener { private Loadable boardLoadable = new Loadable(); @@ -49,16 +53,13 @@ public class BoardActivity extends BaseActivity implements ActionBar.OnNavigatio ft.replace(R.id.right_pane, threadFragment); ft.commitAllowingStateLoss(); + updatePaneState(); updateActionBarState(); final ActionBar actionBar = getActionBar(); actionBar.setListNavigationCallbacks( - new ArrayAdapter( - actionBar.getThemedContext(), - R.layout.board_select_spinner, - android.R.id.text1, - ChanApplication.getBoardManager().getMyBoardsKeys() - ), this); + new ArrayAdapter(actionBar.getThemedContext(), R.layout.board_select_spinner, + android.R.id.text1, ChanApplication.getBoardManager().getMyBoardsKeys()), this); Intent startIntent = getIntent(); Uri startUri = startIntent.getData(); @@ -111,8 +112,9 @@ public class BoardActivity extends BaseActivity implements ActionBar.OnNavigatio @Override protected void initDrawer() { - pinDrawerListener = new ActionBarDrawerToggle(this, pinDrawer, - R.drawable.ic_drawer, R.string.drawer_open, R.string.drawer_close) {}; + pinDrawerListener = new ActionBarDrawerToggle(this, pinDrawer, R.drawable.ic_drawer, R.string.drawer_open, + R.string.drawer_close) { + }; super.initDrawer(); } @@ -141,6 +143,44 @@ public class BoardActivity extends BaseActivity implements ActionBar.OnNavigatio super.onConfigurationChanged(newConfig); pinDrawerListener.onConfigurationChanged(newConfig); updateActionBarState(); + + updatePaneState(); + } + + private void updatePaneState() { + DisplayMetrics metrics = new DisplayMetrics(); + getWindowManager().getDefaultDisplay().getMetrics(metrics); + int width = metrics.widthPixels; + + FrameLayout left = (FrameLayout) findViewById(R.id.left_pane); + FrameLayout right = (FrameLayout) findViewById(R.id.right_pane); + + LayoutParams leftParams = left.getLayoutParams(); + LayoutParams rightParams = right.getLayoutParams(); + + // Content view dp's: + // Nexus 4 is 384 x 640 dp + // Nexus 7 is 600 x 960 dp + // Nexus 10 is 800 x 1280 dp + + if (width < Utils.dp(800)) { + if (width < Utils.dp(400)) { + leftParams.width = width - Utils.dp(30); + } else { + leftParams.width = width - Utils.dp(150); + } + rightParams.width = width; + } else { + leftParams.width = Utils.dp(300); + rightParams.width = width - Utils.dp(300); + } + + left.setLayoutParams(leftParams); + right.setLayoutParams(rightParams); + + threadPane.requestLayout(); + left.requestLayout(); + right.requestLayout(); } @Override @@ -235,7 +275,7 @@ public class BoardActivity extends BaseActivity implements ActionBar.OnNavigatio return true; } - switch(item.getItemId()) { + switch (item.getItemId()) { case R.id.action_reload_board: case R.id.action_reload_tablet_board: boardFragment.reload(); @@ -300,7 +340,8 @@ public class BoardActivity extends BaseActivity implements ActionBar.OnNavigatio } private void startLoadingBoard(Loadable loadable) { - if (loadable.mode == Loadable.Mode.INVALID) return; + if (loadable.mode == Loadable.Mode.INVALID) + return; boardLoadable = loadable; @@ -313,7 +354,8 @@ public class BoardActivity extends BaseActivity implements ActionBar.OnNavigatio } private void startLoadingThread(Loadable loadable) { - if (loadable.mode == Loadable.Mode.INVALID) return; + if (loadable.mode == Loadable.Mode.INVALID) + return; Pin pin = ChanApplication.getPinnedManager().findPinByLoadable(loadable); if (pin != null) { @@ -341,6 +383,7 @@ public class BoardActivity extends BaseActivity implements ActionBar.OnNavigatio /** * Handle opening from an external url. + * * @param startUri */ private void handleIntentURI(Uri startUri) { @@ -374,7 +417,8 @@ public class BoardActivity extends BaseActivity implements ActionBar.OnNavigatio try { no = Integer.parseInt(parts.get(2)); - } catch (NumberFormatException e) {} + } catch (NumberFormatException e) { + } if (no >= 0 && ChanApplication.getBoardManager().getBoardExists(rawBoard)) { boardSetByIntent = true; @@ -391,31 +435,26 @@ public class BoardActivity extends BaseActivity implements ActionBar.OnNavigatio } private void handleIntentURIFallback(final String url) { - new AlertDialog.Builder(this) - .setTitle(R.string.open_unknown_title) - .setMessage(R.string.open_unknown) - .setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - // Cancel button - finish(); - } - }) - .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - // Ok button - showUrlOpenPicker(url); - } - }) - .setCancelable(false) - .create() - .show(); + new AlertDialog.Builder(this).setTitle(R.string.open_unknown_title).setMessage(R.string.open_unknown) + .setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + // Cancel button + finish(); + } + }).setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + // Ok button + showUrlOpenPicker(url); + } + }).setCancelable(false).create().show(); } /** - * Set the visual selector to the board. If the user has not set the board as a favorite, - * return false. + * Set the visual selector to the board. If the user has not set the board + * as a favorite, return false. + * * @param boardValue * @return true if spinner was set, false otherwise */ @@ -437,6 +476,3 @@ public class BoardActivity extends BaseActivity implements ActionBar.OnNavigatio } } } - - - diff --git a/Chan/src/org/floens/chan/ui/activity/WatchSettingsActivity.java b/Chan/src/org/floens/chan/ui/activity/WatchSettingsActivity.java index 9a59be3d..1db89e83 100644 --- a/Chan/src/org/floens/chan/ui/activity/WatchSettingsActivity.java +++ b/Chan/src/org/floens/chan/ui/activity/WatchSettingsActivity.java @@ -39,7 +39,7 @@ public class WatchSettingsActivity extends Activity implements OnCheckedChangeLi watchSwitch = (Switch) menu.findItem(R.id.enable_watch_switch).getActionView(); watchSwitch.setOnCheckedChangeListener(this); - watchSwitch.setPadding(0, 0, Utils.dp(this, 14), 0); + watchSwitch.setPadding(0, 0, Utils.dp(14), 0); setEnabled(ChanPreferences.getWatchEnabled()); @@ -90,7 +90,7 @@ public class WatchSettingsActivity extends Activity implements OnCheckedChangeLi public View onCreateView(LayoutInflater inflater, ViewGroup group, Bundle savedInstanceState) { LinearLayout container = new LinearLayout(inflater.getContext()); - int p = Utils.dp(inflater.getContext(), 14); + int p = Utils.dp(14); container.setPadding(p, p, p, p); TextView text = new TextView(inflater.getContext()); diff --git a/Chan/src/org/floens/chan/ui/adapter/PostAdapter.java b/Chan/src/org/floens/chan/ui/adapter/PostAdapter.java index d8ec0ced..6fd3ebd6 100644 --- a/Chan/src/org/floens/chan/ui/adapter/PostAdapter.java +++ b/Chan/src/org/floens/chan/ui/adapter/PostAdapter.java @@ -92,7 +92,7 @@ public class PostAdapter extends BaseAdapter { view.init(threadManager, listView, this); int padding = context.getResources().getDimensionPixelSize(R.dimen.general_padding); view.setPadding(padding, padding, padding, padding); - int height = Utils.dp(context, 48f); + int height = Utils.dp(48f); view.setHeight(height); view.setGravity(Gravity.CENTER); return view; diff --git a/Chan/src/org/floens/chan/ui/view/PostView.java b/Chan/src/org/floens/chan/ui/view/PostView.java index 170d3b76..c0730766 100644 --- a/Chan/src/org/floens/chan/ui/view/PostView.java +++ b/Chan/src/org/floens/chan/ui/view/PostView.java @@ -316,7 +316,7 @@ public class PostView extends LinearLayout implements View.OnClickListener, View lastSeen = new View(context); lastSeen.setBackgroundColor(0xffff0000); - right.addView(lastSeen, new LayoutParams(LayoutParams.MATCH_PARENT, Utils.dp(context, 6f))); + right.addView(lastSeen, new LayoutParams(LayoutParams.MATCH_PARENT, Utils.dp(6f))); full.addView(right, matchWrapParams); diff --git a/Chan/src/org/floens/chan/utils/Utils.java b/Chan/src/org/floens/chan/utils/Utils.java index c82d0d89..2999a142 100644 --- a/Chan/src/org/floens/chan/utils/Utils.java +++ b/Chan/src/org/floens/chan/utils/Utils.java @@ -1,22 +1,31 @@ package org.floens.chan.utils; +import org.floens.chan.ChanApplication; + import android.content.Context; import android.content.res.TypedArray; import android.graphics.drawable.Drawable; import android.os.Handler; import android.os.Looper; -import android.util.TypedValue; +import android.util.DisplayMetrics; import android.view.View; import android.view.ViewGroup; public class Utils { + private static DisplayMetrics displayMetrics; + public final static ViewGroup.LayoutParams MATCH_PARAMS = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT); public final static ViewGroup.LayoutParams WRAP_PARAMS = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); public final static ViewGroup.LayoutParams MATCH_WRAP_PARAMS = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); public final static ViewGroup.LayoutParams WRAP_MATCH_PARAMS = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.MATCH_PARENT); - public static int dp(Context context, float dp) { - return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, context.getResources().getDisplayMetrics()); + public static int dp(float dp) { +// return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, context.getResources().getDisplayMetrics()); + if (displayMetrics == null) { + displayMetrics = ChanApplication.getInstance().getResources().getDisplayMetrics(); + } + + return (int) (dp * displayMetrics.density); } /**