From 75a695de96d1b631b86bb10eeaf19afdd9f8077b Mon Sep 17 00:00:00 2001 From: Floens Date: Thu, 20 Nov 2014 22:37:27 +0100 Subject: [PATCH 01/17] Start of Material redesign. --- Clover/app/build.gradle | 3 ++ Clover/app/src/main/AndroidManifest.xml | 2 +- .../org/floens/chan/ui/ThemeActivity.java | 37 +++++++++++++ .../floens/chan/ui/activity/BaseActivity.java | 32 ++++++----- .../floens/chan/ui/activity/ChanActivity.java | 12 ++--- .../chan/ui/activity/ImageViewActivity.java | 53 ++++++++----------- .../chan/ui/activity/ReplyActivity.java | 25 +++++---- .../chan/ui/fragment/ImageViewFragment.java | 6 +-- .../chan/ui/fragment/ReplyFragment.java | 8 +-- .../chan/ui/fragment/ThreadFragment.java | 7 +-- .../chan/ui/view/ThumbnailImageView.java | 2 +- .../app/src/main/res/layout/activity_base.xml | 51 ++++++++++-------- Clover/app/src/main/res/layout/image_view.xml | 47 ++++++++++++++++ .../{image_pager.xml => reply_activity.xml} | 25 ++++----- Clover/app/src/main/res/layout/toolbar.xml | 22 ++++++++ Clover/app/src/main/res/values/colors.xml | 5 ++ Clover/app/src/main/res/values/dimens.xml | 6 +++ Clover/app/src/main/res/values/styles.xml | 24 ++++----- 18 files changed, 236 insertions(+), 131 deletions(-) create mode 100644 Clover/app/src/main/java/org/floens/chan/ui/ThemeActivity.java create mode 100644 Clover/app/src/main/res/layout/image_view.xml rename Clover/app/src/main/res/layout/{image_pager.xml => reply_activity.xml} (60%) create mode 100644 Clover/app/src/main/res/layout/toolbar.xml diff --git a/Clover/app/build.gradle b/Clover/app/build.gradle index ddbab2b9..eb8073a5 100644 --- a/Clover/app/build.gradle +++ b/Clover/app/build.gradle @@ -67,6 +67,9 @@ android { } dependencies { + compile 'com.android.support:support-v13:21.0.0' + compile 'com.android.support:appcompat-v7:21.0.2' + compile 'org.jsoup:jsoup:1.7.3' compile 'com.j256.ormlite:ormlite-core:4.48' compile 'com.j256.ormlite:ormlite-android:4.48' diff --git a/Clover/app/src/main/AndroidManifest.xml b/Clover/app/src/main/AndroidManifest.xml index 87c921e0..a7752e54 100644 --- a/Clover/app/src/main/AndroidManifest.xml +++ b/Clover/app/src/main/AndroidManifest.xml @@ -123,7 +123,7 @@ along with this program. If not, see . android:name="org.floens.chan.ui.activity.ImageViewActivity" android:configChanges="keyboardHidden|orientation|screenSize" android:launchMode="singleTop" - android:theme="@style/Theme.ImageList" /> + android:theme="@style/Chan.ImageView" /> . + */ +package org.floens.chan.ui; + +import android.support.v7.app.ActionBarActivity; +import android.support.v7.widget.Toolbar; + +import org.floens.chan.R; +import org.floens.chan.utils.ThemeHelper; + +public class ThemeActivity extends ActionBarActivity { + private Toolbar toolbar; + + public void setTheme() { + setTheme(ThemeHelper.getInstance().getTheme().resValue); + } + + public void setToolbar() { + toolbar = (Toolbar) findViewById(R.id.toolbar); + setSupportActionBar(toolbar); + } +} diff --git a/Clover/app/src/main/java/org/floens/chan/ui/activity/BaseActivity.java b/Clover/app/src/main/java/org/floens/chan/ui/activity/BaseActivity.java index 60284996..73745acf 100644 --- a/Clover/app/src/main/java/org/floens/chan/ui/activity/BaseActivity.java +++ b/Clover/app/src/main/java/org/floens/chan/ui/activity/BaseActivity.java @@ -17,22 +17,21 @@ */ package org.floens.chan.ui.activity; -import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.content.Intent; import android.content.res.TypedArray; -import android.graphics.drawable.Drawable; import android.net.Uri; import android.nfc.NdefMessage; import android.nfc.NdefRecord; import android.nfc.NfcAdapter; import android.os.Bundle; -import android.support.v4.app.ActionBarDrawerToggle; import android.support.v4.view.GravityCompat; import android.support.v4.widget.DrawerLayout; import android.support.v4.widget.SlidingPaneLayout; import android.support.v4.widget.SlidingPaneLayout.PanelSlideListener; +import android.support.v7.app.ActionBarDrawerToggle; +import android.support.v7.widget.ShareActionProvider; import android.text.TextUtils; import android.view.Menu; import android.view.MenuItem; @@ -43,7 +42,6 @@ import android.widget.AdapterView.OnItemClickListener; import android.widget.AdapterView.OnItemLongClickListener; import android.widget.EditText; import android.widget.ListView; -import android.widget.ShareActionProvider; import org.floens.chan.ChanApplication; import org.floens.chan.R; @@ -52,16 +50,14 @@ import org.floens.chan.core.model.ChanThread; import org.floens.chan.core.model.Loadable; import org.floens.chan.core.model.Pin; import org.floens.chan.core.model.Post; -import org.floens.chan.ui.BadgeDrawable; import org.floens.chan.ui.SwipeDismissListViewTouchListener; import org.floens.chan.ui.SwipeDismissListViewTouchListener.DismissCallbacks; +import org.floens.chan.ui.ThemeActivity; import org.floens.chan.ui.adapter.PinnedAdapter; import org.floens.chan.utils.ThemeHelper; import org.floens.chan.utils.Utils; -import java.util.List; - -public abstract class BaseActivity extends Activity implements PanelSlideListener, WatchManager.PinListener { +public abstract class BaseActivity extends ThemeActivity implements PanelSlideListener, WatchManager.PinListener { public static boolean doRestartOnResume = false; private final static int ACTION_OPEN_URL = 1; @@ -99,11 +95,13 @@ public abstract class BaseActivity extends Activity implements PanelSlideListene protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - ThemeHelper.setTheme(this); ThemeHelper.getInstance().reloadPostViewColors(this); setContentView(R.layout.activity_base); + setTheme(); + setToolbar(); + pinDrawer = (DrawerLayout) findViewById(R.id.drawer_layout); initDrawer(); @@ -155,7 +153,7 @@ public abstract class BaseActivity extends Activity implements PanelSlideListene pinDrawerView = (ListView) findViewById(R.id.left_drawer); - pinnedAdapter = new PinnedAdapter(getActionBar().getThemedContext(), pinDrawerView); // Get the dark theme, not the light one + pinnedAdapter = new PinnedAdapter(getSupportActionBar().getThemedContext(), pinDrawerView); // Get the dark theme, not the light one pinnedAdapter.reload(); pinDrawerView.setAdapter(pinnedAdapter); @@ -210,7 +208,7 @@ public abstract class BaseActivity extends Activity implements PanelSlideListene } private void updateIcon() { - List list = ChanApplication.getWatchManager().getWatchingPins(); + /*List list = ChanApplication.getWatchManager().getWatchingPins(); if (list.size() > 0) { int count = 0; boolean color = false; @@ -223,13 +221,13 @@ public abstract class BaseActivity extends Activity implements PanelSlideListene if (count > 0) { Drawable icon = BadgeDrawable.get(getResources(), R.drawable.ic_launcher, count, color); - getActionBar().setIcon(icon); + getSupportActionBar().setIcon(icon); } else { - getActionBar().setIcon(R.drawable.ic_launcher); + getSupportActionBar().setIcon(R.drawable.ic_launcher); } } else { - getActionBar().setIcon(R.drawable.ic_launcher); - } + getSupportActionBar().setIcon(R.drawable.ic_launcher); + }*/ } public void removePin(Pin pin) { @@ -295,11 +293,11 @@ public abstract class BaseActivity extends Activity implements PanelSlideListene @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.base, menu); - shareActionProvider = (ShareActionProvider) menu.findItem(R.id.action_share).getActionProvider(); + /*shareActionProvider = (ShareActionProvider) MenuItemCompat.getActionProvider(menu.findItem(R.id.action_share)); if (pendingShareActionProviderIntent != null) { shareActionProvider.setShareIntent(pendingShareActionProviderIntent); pendingShareActionProviderIntent = null; - } + }*/ return true; } diff --git a/Clover/app/src/main/java/org/floens/chan/ui/activity/ChanActivity.java b/Clover/app/src/main/java/org/floens/chan/ui/activity/ChanActivity.java index b74360ba..6e1f4e4b 100644 --- a/Clover/app/src/main/java/org/floens/chan/ui/activity/ChanActivity.java +++ b/Clover/app/src/main/java/org/floens/chan/ui/activity/ChanActivity.java @@ -17,7 +17,6 @@ */ package org.floens.chan.ui.activity; -import android.app.ActionBar; import android.app.AlertDialog; import android.app.FragmentTransaction; import android.content.Context; @@ -26,7 +25,8 @@ import android.content.Intent; import android.content.res.Configuration; import android.net.Uri; import android.os.Bundle; -import android.support.v4.app.ActionBarDrawerToggle; +import android.support.v7.app.ActionBar; +import android.support.v7.app.ActionBarDrawerToggle; import android.util.DisplayMetrics; import android.view.LayoutInflater; import android.view.Menu; @@ -89,7 +89,7 @@ public class ChanActivity extends BaseActivity implements AdapterView.OnItemSele ft.replace(R.id.right_pane, threadFragment); ft.commitAllowingStateLoss(); - final ActionBar actionBar = getActionBar(); + final ActionBar actionBar = getSupportActionBar(); boardSpinner = new Spinner(actionBar.getThemedContext()); spinnerAdapter = new BoardSpinnerAdapter(this, boardSpinner); @@ -180,9 +180,7 @@ public class ChanActivity extends BaseActivity implements AdapterView.OnItemSele @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.string.drawer_open, R.string.drawer_close); super.initDrawer(); } @@ -360,7 +358,7 @@ public class ChanActivity extends BaseActivity implements AdapterView.OnItemSele } private void updateActionBarStateCallback() { - final ActionBar actionBar = getActionBar(); + final ActionBar actionBar = getSupportActionBar(); if (threadPane.isSlideable()) { if (threadPane.isOpen()) { diff --git a/Clover/app/src/main/java/org/floens/chan/ui/activity/ImageViewActivity.java b/Clover/app/src/main/java/org/floens/chan/ui/activity/ImageViewActivity.java index bc425855..79f233b4 100644 --- a/Clover/app/src/main/java/org/floens/chan/ui/activity/ImageViewActivity.java +++ b/Clover/app/src/main/java/org/floens/chan/ui/activity/ImageViewActivity.java @@ -17,7 +17,6 @@ */ package org.floens.chan.ui.activity; -import android.app.ActionBar; import android.app.Activity; import android.content.Intent; import android.os.Bundle; @@ -26,8 +25,6 @@ import android.view.Menu; import android.view.MenuItem; import android.view.SubMenu; import android.view.View; -import android.view.Window; -import android.widget.FrameLayout; import android.widget.ProgressBar; import org.floens.chan.R; @@ -35,12 +32,12 @@ import org.floens.chan.chan.ImageSearch; import org.floens.chan.core.ChanPreferences; import org.floens.chan.core.manager.ThreadManager; import org.floens.chan.core.model.Post; +import org.floens.chan.ui.ThemeActivity; import org.floens.chan.ui.adapter.ImageViewAdapter; import org.floens.chan.ui.adapter.PostAdapter; import org.floens.chan.ui.fragment.ImageViewFragment; import org.floens.chan.utils.ImageSaver; import org.floens.chan.utils.Logger; -import org.floens.chan.utils.ThemeHelper; import java.util.ArrayList; import java.util.List; @@ -49,15 +46,16 @@ import java.util.List; * An fragment pager that contains images. Call setPosts first, and then start * the activity with startActivity() */ -public class ImageViewActivity extends Activity implements ViewPager.OnPageChangeListener { +public class ImageViewActivity extends ThemeActivity implements ViewPager.OnPageChangeListener { private static final String TAG = "ImageViewActivity"; private static PostAdapter postAdapterStatic; - private static int selectedIdStatic = -1; + private static int selectedNoStatic = -1; private static ThreadManager threadManagerStatic; private PostAdapter postAdapter; private ThreadManager threadManager; + private int selectedNo; private ImageViewAdapter adapter; private ViewPager viewPager; @@ -72,7 +70,7 @@ public class ImageViewActivity extends Activity implements ViewPager.OnPageChang */ public static void launch(Activity activity, PostAdapter adapter, int selected, ThreadManager threadManager) { postAdapterStatic = adapter; - selectedIdStatic = selected; + selectedNoStatic = selected; threadManagerStatic = threadManager; Intent intent = new Intent(activity, ImageViewActivity.class); @@ -82,44 +80,36 @@ public class ImageViewActivity extends Activity implements ViewPager.OnPageChang @Override protected void onCreate(Bundle savedInstanceState) { - requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS); - ActionBar actionBar = getActionBar(); - actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_TITLE | ActionBar.DISPLAY_HOME_AS_UP); - - super.onCreate(savedInstanceState); - if (postAdapterStatic == null || threadManagerStatic == null) { Logger.e(TAG, "postadapter or threadmanager null"); finish(); return; } + super.onCreate(savedInstanceState); + threadManager = threadManagerStatic; threadManagerStatic = null; postAdapter = postAdapterStatic; postAdapterStatic = null; - int selectedId = selectedIdStatic; - selectedIdStatic = -1; + selectedNo = selectedNoStatic; + selectedNoStatic = -1; - ThemeHelper.setTheme(this); + setContentView(R.layout.image_view); + setToolbar(); - progressBar = new ProgressBar(this, null, android.R.attr.progressBarStyleHorizontal); - progressBar.setLayoutParams(new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.WRAP_CONTENT)); - progressBar.setProgressDrawable(getResources().getDrawable(R.drawable.progressbar_no_bg)); + initProgressBar(); + initPager(); + } + + private void initProgressBar() { + progressBar = (ProgressBar) findViewById(R.id.progress_bar); +// progressBar.setProgressDrawable(getResources().getDrawable(R.drawable.progressbar_no_bg)); progressBar.setIndeterminate(false); progressBar.setMax(1000000); + } - final FrameLayout decorView = (FrameLayout) getWindow().getDecorView(); - decorView.addView(progressBar); - - progressBar.post(new Runnable() { - @Override - public void run() { - View contentView = decorView.findViewById(android.R.id.content); - progressBar.setY(contentView.getY() - progressBar.getHeight() / 2); - } - }); - + private void initPager() { // Get the posts with images ArrayList imagePosts = new ArrayList<>(); for (Post post : postAdapter.getList()) { @@ -129,7 +119,6 @@ public class ImageViewActivity extends Activity implements ViewPager.OnPageChang } // Setup our pages and adapter - setContentView(R.layout.image_pager); viewPager = (ViewPager) findViewById(R.id.image_pager); adapter = new ImageViewAdapter(getFragmentManager(), this); adapter.setList(imagePosts); @@ -138,7 +127,7 @@ public class ImageViewActivity extends Activity implements ViewPager.OnPageChang // Select the right image for (int i = 0; i < imagePosts.size(); i++) { - if (imagePosts.get(i).no == selectedId) { + if (imagePosts.get(i).no == selectedNo) { viewPager.setCurrentItem(i); onPageSelected(i); break; diff --git a/Clover/app/src/main/java/org/floens/chan/ui/activity/ReplyActivity.java b/Clover/app/src/main/java/org/floens/chan/ui/activity/ReplyActivity.java index ca94e195..8144a1a2 100644 --- a/Clover/app/src/main/java/org/floens/chan/ui/activity/ReplyActivity.java +++ b/Clover/app/src/main/java/org/floens/chan/ui/activity/ReplyActivity.java @@ -17,42 +17,45 @@ */ package org.floens.chan.ui.activity; -import android.app.Activity; import android.app.Fragment; import android.app.FragmentTransaction; import android.os.Bundle; import android.view.MenuItem; +import org.floens.chan.R; import org.floens.chan.core.model.Loadable; +import org.floens.chan.ui.ThemeActivity; import org.floens.chan.ui.fragment.ReplyFragment; import org.floens.chan.utils.Logger; -import org.floens.chan.utils.ThemeHelper; -public class ReplyActivity extends Activity { +public class ReplyActivity extends ThemeActivity { private static final String TAG = "ReplyActivity"; - private static Loadable loadable; + private static Loadable staticLoadable; public static void setLoadable(Loadable l) { - loadable = l; + staticLoadable = l; } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - ThemeHelper.setTheme(this); + Loadable loadable = staticLoadable; + staticLoadable = null; if (loadable != null && savedInstanceState == null) { - getActionBar().setDisplayHomeAsUpEnabled(true); + setContentView(R.layout.reply_activity); + setTheme(); + setToolbar(); + + getSupportActionBar().setDisplayHomeAsUpEnabled(true); FragmentTransaction ft = getFragmentManager().beginTransaction(); - ft.replace(android.R.id.content, ReplyFragment.newInstance(loadable, false), "reply"); + ft.replace(R.id.reply_fragment, ReplyFragment.newInstance(loadable, false), "reply"); ft.commitAllowingStateLoss(); - - loadable = null; } else if (savedInstanceState == null) { - Logger.e(TAG, "ThreadFragment was null, exiting!"); + Logger.e(TAG, "Loadable was null, exiting!"); finish(); } } diff --git a/Clover/app/src/main/java/org/floens/chan/ui/fragment/ImageViewFragment.java b/Clover/app/src/main/java/org/floens/chan/ui/fragment/ImageViewFragment.java index 1ff8fc4f..d92472c2 100644 --- a/Clover/app/src/main/java/org/floens/chan/ui/fragment/ImageViewFragment.java +++ b/Clover/app/src/main/java/org/floens/chan/ui/fragment/ImageViewFragment.java @@ -82,7 +82,7 @@ public class ImageViewFragment extends Fragment implements ThumbnailImageViewCal imageView = new ThumbnailImageView(context); imageView.setCallback(this); - int padding = Utils.dp(8); + int padding = getResources().getDimensionPixelSize(R.dimen.image_view_padding); imageView.setPadding(padding, padding, padding, padding); return imageView; @@ -177,10 +177,10 @@ public class ImageViewFragment extends Fragment implements ThumbnailImageViewCal activity.setProgressBarIndeterminateVisibility(showProgressBar); String filename = post.filename + "." + post.ext; - activity.getActionBar().setTitle(filename); + activity.getSupportActionBar().setTitle(filename); String text = (position + 1) + "/" + adapter.getCount(); - activity.getActionBar().setSubtitle(text); + activity.getSupportActionBar().setSubtitle(text); activity.invalidateActionBar(); diff --git a/Clover/app/src/main/java/org/floens/chan/ui/fragment/ReplyFragment.java b/Clover/app/src/main/java/org/floens/chan/ui/fragment/ReplyFragment.java index 9a223eae..6a6da66a 100644 --- a/Clover/app/src/main/java/org/floens/chan/ui/fragment/ReplyFragment.java +++ b/Clover/app/src/main/java/org/floens/chan/ui/fragment/ReplyFragment.java @@ -17,12 +17,12 @@ */ package org.floens.chan.ui.fragment; -import android.app.Activity; import android.app.Dialog; import android.app.DialogFragment; import android.content.DialogInterface; import android.graphics.Bitmap; import android.os.Bundle; +import android.support.v7.app.ActionBarActivity; import android.text.Editable; import android.text.TextUtils; import android.text.TextWatcher; @@ -106,7 +106,7 @@ public class ReplyFragment extends DialogFragment { private TextView commentCountView; private TextView fileStatusView; - private Activity context; + private ActionBarActivity context; public static ReplyFragment newInstance(Loadable loadable, boolean quickMode) { ReplyFragment reply = new ReplyFragment(); @@ -127,7 +127,7 @@ public class ReplyFragment extends DialogFragment { public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); - context = getActivity(); + context = (ActionBarActivity) getActivity(); if (loadable == null && savedInstanceState != null) { loadable = new Loadable(); @@ -142,7 +142,7 @@ public class ReplyFragment extends DialogFragment { String title = (loadable.isThreadMode() ? context.getString(R.string.reply) : context.getString(R.string.reply_to_board)) + " " + loadable.title; if (dialog == null) { - context.getActionBar().setTitle(title); + context.getSupportActionBar().setTitle(title); } else { dialog.setTitle(title); // todo move elsewhere diff --git a/Clover/app/src/main/java/org/floens/chan/ui/fragment/ThreadFragment.java b/Clover/app/src/main/java/org/floens/chan/ui/fragment/ThreadFragment.java index 975a5c2a..3479c940 100644 --- a/Clover/app/src/main/java/org/floens/chan/ui/fragment/ThreadFragment.java +++ b/Clover/app/src/main/java/org/floens/chan/ui/fragment/ThreadFragment.java @@ -281,13 +281,8 @@ public class ThreadFragment extends Fragment implements ThreadManager.ThreadMana } else if (viewMode == ThreadManager.ViewMode.GRID) { GridView grid = new GridView(getActivity()); grid.setNumColumns(GridView.AUTO_FIT); - TypedArray ta = getActivity().obtainStyledAttributes(null, R.styleable.PostView, R.attr.post_style, 0); - int postGridWidth = ta.getDimensionPixelSize(R.styleable.PostView_grid_width, 0); - int postGridSpacing = ta.getDimensionPixelSize(R.styleable.PostView_grid_spacing, 0); - ta.recycle(); + int postGridWidth = baseActivity.getResources().getDimensionPixelSize(R.dimen.post_grid_width); grid.setColumnWidth(postGridWidth); - grid.setVerticalSpacing(postGridSpacing); - grid.setHorizontalSpacing(postGridSpacing); listView = grid; postAdapter = new PostAdapter(getActivity(), threadManager, listView, this); listView.setAdapter(postAdapter); diff --git a/Clover/app/src/main/java/org/floens/chan/ui/view/ThumbnailImageView.java b/Clover/app/src/main/java/org/floens/chan/ui/view/ThumbnailImageView.java index fd9945da..773b1141 100644 --- a/Clover/app/src/main/java/org/floens/chan/ui/view/ThumbnailImageView.java +++ b/Clover/app/src/main/java/org/floens/chan/ui/view/ThumbnailImageView.java @@ -125,7 +125,7 @@ public class ThumbnailImageView extends LoadView implements View.OnClickListener @Override public void onProgress(long downloaded, long total, boolean done) { if (done) { - callback.setLinearProgress(0, 0, true); +// callback.setLinearProgress(0, 0, true); thumbnailNeeded = false; } else { callback.setLinearProgress(downloaded, total, false); diff --git a/Clover/app/src/main/res/layout/activity_base.xml b/Clover/app/src/main/res/layout/activity_base.xml index 807c7e20..ca9b9b24 100644 --- a/Clover/app/src/main/res/layout/activity_base.xml +++ b/Clover/app/src/main/res/layout/activity_base.xml @@ -1,5 +1,4 @@ - - - - - - - - - + android:layout_height="match_parent" + android:orientation="vertical"> + + + + + + + + + + + . android:background="#444" android:choiceMode="singleChoice" android:divider="#333" - android:dividerHeight="1dp"/> + android:dividerHeight="1dp" /> diff --git a/Clover/app/src/main/res/layout/image_view.xml b/Clover/app/src/main/res/layout/image_view.xml new file mode 100644 index 00000000..3a552a92 --- /dev/null +++ b/Clover/app/src/main/res/layout/image_view.xml @@ -0,0 +1,47 @@ + + + + + + + + + + + + + diff --git a/Clover/app/src/main/res/layout/image_pager.xml b/Clover/app/src/main/res/layout/reply_activity.xml similarity index 60% rename from Clover/app/src/main/res/layout/image_pager.xml rename to Clover/app/src/main/res/layout/reply_activity.xml index 08bd2fc2..f1b27e7f 100644 --- a/Clover/app/src/main/res/layout/image_pager.xml +++ b/Clover/app/src/main/res/layout/reply_activity.xml @@ -1,5 +1,4 @@ - - - + android:layout_height="match_parent"> - + + - - - \ No newline at end of file + android:layout_height="wrap_content" /> + + \ No newline at end of file diff --git a/Clover/app/src/main/res/layout/toolbar.xml b/Clover/app/src/main/res/layout/toolbar.xml new file mode 100644 index 00000000..36580b19 --- /dev/null +++ b/Clover/app/src/main/res/layout/toolbar.xml @@ -0,0 +1,22 @@ + + diff --git a/Clover/app/src/main/res/values/colors.xml b/Clover/app/src/main/res/values/colors.xml index c67be2d8..a48c4811 100644 --- a/Clover/app/src/main/res/values/colors.xml +++ b/Clover/app/src/main/res/values/colors.xml @@ -17,5 +17,10 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . --> + #ff43a047 + #ff2e7d32 + #ff0099cc + + #bb000000 diff --git a/Clover/app/src/main/res/values/dimens.xml b/Clover/app/src/main/res/values/dimens.xml index 6345d959..67c515f8 100644 --- a/Clover/app/src/main/res/values/dimens.xml +++ b/Clover/app/src/main/res/values/dimens.xml @@ -17,4 +17,10 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . --> + 260dp + + 4dp + + 90dp + diff --git a/Clover/app/src/main/res/values/styles.xml b/Clover/app/src/main/res/values/styles.xml index 16d55ec6..40221880 100644 --- a/Clover/app/src/main/res/values/styles.xml +++ b/Clover/app/src/main/res/values/styles.xml @@ -1,5 +1,4 @@ - - - - #88000000 - + - From 50cf55e3661a2c25dddc36cfeac091dd2284bfef Mon Sep 17 00:00:00 2001 From: Floens Date: Sat, 22 Nov 2014 21:49:40 +0100 Subject: [PATCH 04/17] Change the pin icon to a bookmark icon --- .../floens/chan/ui/activity/ChanActivity.java | 17 +++++++++++++++++ .../res/drawable-hdpi/ic_bookmark_filled.png | Bin 0 -> 273 bytes .../res/drawable-mdpi/ic_bookmark_filled.png | Bin 0 -> 223 bytes .../res/drawable-xhdpi/ic_bookmark_filled.png | Bin 0 -> 341 bytes .../res/drawable-xxhdpi/ic_bookmark_filled.png | Bin 0 -> 419 bytes .../drawable-xxxhdpi/ic_bookmark_filled.png | Bin 0 -> 517 bytes 6 files changed, 17 insertions(+) create mode 100644 Clover/app/src/main/res/drawable-hdpi/ic_bookmark_filled.png create mode 100644 Clover/app/src/main/res/drawable-mdpi/ic_bookmark_filled.png create mode 100644 Clover/app/src/main/res/drawable-xhdpi/ic_bookmark_filled.png create mode 100644 Clover/app/src/main/res/drawable-xxhdpi/ic_bookmark_filled.png create mode 100644 Clover/app/src/main/res/drawable-xxxhdpi/ic_bookmark_filled.png diff --git a/Clover/app/src/main/java/org/floens/chan/ui/activity/ChanActivity.java b/Clover/app/src/main/java/org/floens/chan/ui/activity/ChanActivity.java index dc96a172..bc8c0164 100644 --- a/Clover/app/src/main/java/org/floens/chan/ui/activity/ChanActivity.java +++ b/Clover/app/src/main/java/org/floens/chan/ui/activity/ChanActivity.java @@ -239,6 +239,12 @@ public class ChanActivity extends BaseActivity implements AdapterView.OnItemSele updateActionBarState(); } + @Override + public void removePin(Pin pin) { + super.removePin(pin); + updateActionBarState(); + } + @Override public void onNothingSelected(final AdapterView parent) { } @@ -422,6 +428,16 @@ public class ChanActivity extends BaseActivity implements AdapterView.OnItemSele setMenuItemEnabled(menu.findItem(R.id.action_search), slidable); setMenuItemEnabled(menu.findItem(R.id.action_search_tablet), !slidable); + boolean bookmarkedFilled = false; + if (threadLoadable.mode == Loadable.Mode.THREAD) { + Pin pin = ChanApplication.getWatchManager().findPinByLoadable(threadLoadable); + if (pin != null) { + bookmarkedFilled = true; + } + } + + menu.findItem(R.id.action_pin).setIcon(bookmarkedFilled ? R.drawable.ic_bookmark_filled : R.drawable.ic_bookmark); + return super.onPrepareOptionsMenu(menu); } @@ -468,6 +484,7 @@ public class ChanActivity extends BaseActivity implements AdapterView.OnItemSele if (loader != null && loader.getLoadable().isThreadMode() && loader.getThread() != null) { ChanApplication.getWatchManager().addPin(loader.getLoadable(), loader.getThread().op); pinDrawer.openDrawer(pinDrawerView); + updateActionBarState(); } } diff --git a/Clover/app/src/main/res/drawable-hdpi/ic_bookmark_filled.png b/Clover/app/src/main/res/drawable-hdpi/ic_bookmark_filled.png new file mode 100644 index 0000000000000000000000000000000000000000..66d4223d1e24c034a977d635c77ef2a81c835fab GIT binary patch literal 273 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k0wldT1B8K;Lb6AYF9SoB8UsT^3j@P1pisjL z28L1t28LG&3=CE?7#PG0=Ijcz0ZK3>dAqwX{BQ3+vmeOgEbxddW?Tk)5S5w?TEnA$d zw!d9S`0U0)mrKPNsS9>ZNk4l)tMyy5*VjGrRm@v00O=~G=WkJm z?&;zfVsSe8$9V^-lm)BX4*b{upUk}e-|yt>4Y8ISdycGQl$W?_u&Pl{s_tL>r~5n{ z(-|UJOl|(h|Bsi^Q~J1{QKKpN@X7xd|3?~rl8_Gg^2Fh3<{|}#8T?8C`rSuf01 MboFyt=akR{0Q!$eEC2ui literal 0 HcmV?d00001 diff --git a/Clover/app/src/main/res/drawable-xhdpi/ic_bookmark_filled.png b/Clover/app/src/main/res/drawable-xhdpi/ic_bookmark_filled.png new file mode 100644 index 0000000000000000000000000000000000000000..c5698328908edbf984c6f7dd32e133b34957828a GIT binary patch literal 341 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA0wn)(8}a}tg=CK)Uj~LMH3o);76yi2K%s^g z3=E|}g|8AA7_4S6Fo+k-*%fF5lweBoc6VX;-`;;_Kaj^+;1OBOz`!jG!i)^F=12eq z&w9EzhD01r{&U_T`hZ2&!4q2@<}RFku(NTxNANzQH^~~wI~@10X7Q*?vUrrda%bbt z2}{_X!0T)vxo~6W!TAx~_Y65EB_0&daqPO=WY2Tv$x)4sVt-N-q_!qpX%fsoXrJTd zt}C%Mp(WBGFF5&1Qy{mS?t&Xl@jR;~)fivev<0x4Wkr8zN@Nq**YZh4!bsv$qsmkr z3)YhFT5b0;vTii|JCSU#_zaWBf;oqTU!`dI(3)EF2VS{N990fib~ zFff!FFfhDIU|_JC!N4G1FlSew4N!t9$=lt9;eUJonf*W>XMsm#F#`j)FbFd;%$g&? zz`!W&>EalYaqsO7!z?C8k@k=Nt-3BA+LldI#k4G)_!6eaDJtyj61u>=#4BsPfY3&- zqSl78GRNMFPP02C&G#&SedvGbW`i^NKhtKPU1PESB!|ib2d1SAA{U>u39%lwG`6c) zaQqD4t`vuxFTdX3`Rp=VSH;3d5l?!xin(7*tA6fXe(qtlSNsKzB>!pYA0@Q z*mv@0{Y|k8lh!yeae|GL`XYQ!4`?okm(Fi>?7ea$i;#x`kkH6oVCi4dXvVu}iDUAw zFEew(U877i)mWu2J)L;;+~p3o+^prSxk|juzq1+}&Mmk<(dl!zgZqVl9t&@ZUtle< z5ZcH*%kiV~QSJ<;z5lE)J!~lDe(^*ZWYv@}YZzTFuV$3LuMrIlI|ffzKbLh*2~7Y@ Chn=PX literal 0 HcmV?d00001 diff --git a/Clover/app/src/main/res/drawable-xxxhdpi/ic_bookmark_filled.png b/Clover/app/src/main/res/drawable-xxxhdpi/ic_bookmark_filled.png new file mode 100644 index 0000000000000000000000000000000000000000..325c7b2f56330f32ec02f51d643a875b7df365aa GIT binary patch literal 517 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD0wg^q?%xcg6p}rHd>I(3)EF2VS{N990fib~ zFff!FFfhDIU|_JC!N4G1FlSew4N!t9$=lt9;eUJonf*W>XMsm#F#`j)FbFd;%$g&? zz`$7R>EaktaqI1^{a%LyB-%cz|64h8j`glCj$Kzm=j>^`*BIc+aj#3(>x0l2raLU| zyH|EEUfh?LyXuqG!LMv5GB9x{G=K@!gmyXhoC}}+ zs7Ri_GoeUcNZ|7G4vh!gbBhj2E;eYGk^PN#)sCkZ<_54BJUF89=E`5ccMZC7&Bu(T zFRgpM{Q;kay5XOlJQiPhD-v!Cd^oZ!|A6%Cwg$tE`3E{oZ;PHXPk2-NQpkaUkwsvE zUqeqQkOp$3cxG%+0^9G<%=li18|;<~2?yA{A?`Af_>j5nsxwHJLxUF6n(aTh6c{AK zzcjYwb=Hdg=c!OsefstJinE5cw@Mj#UKXExa{Z=QtdP}Jwi Date: Sat, 22 Nov 2014 21:54:06 +0100 Subject: [PATCH 05/17] Change toolbar height to fix landscape height It still has some problems though with rotating. See issue https://code.google.com/p/android/issues/detail?id=77874 --- Clover/app/src/main/res/layout/toolbar.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Clover/app/src/main/res/layout/toolbar.xml b/Clover/app/src/main/res/layout/toolbar.xml index b33b9d27..515c54e6 100644 --- a/Clover/app/src/main/res/layout/toolbar.xml +++ b/Clover/app/src/main/res/layout/toolbar.xml @@ -19,7 +19,7 @@ along with this program. If not, see . xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/toolbar" android:layout_width="match_parent" - android:layout_height="wrap_content" + android:layout_height="?attr/actionBarSize" android:minHeight="?attr/actionBarSize" android:background="?attr/colorPrimary" app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" From 08efbdcdd8eb528e3e0c8e7760d5bf1aebcfd139 Mon Sep 17 00:00:00 2001 From: Floens Date: Sun, 23 Nov 2014 00:30:21 +0100 Subject: [PATCH 06/17] Make all activities use a toolbar. Updated the watch/pass screen to use a top switch bar. Removed up navigation stuff. --- Clover/app/src/main/AndroidManifest.xml | 42 ++--------- .../org/floens/chan/ui/ThemeActivity.java | 11 +++ .../chan/ui/activity/AboutActivity.java | 11 ++- .../ui/activity/AdvancedSettingsActivity.java | 12 +-- .../floens/chan/ui/activity/BoardEditor.java | 15 ++-- .../chan/ui/activity/DeveloperActivity.java | 11 ++- .../ui/activity/PassSettingsActivity.java | 70 ++++++++---------- .../chan/ui/activity/ReplyActivity.java | 5 +- .../chan/ui/activity/SettingsActivity.java | 16 ++-- .../ui/activity/WatchSettingsActivity.java | 74 +++++++------------ .../src/main/res/layout/board_select_add.xml | 2 +- .../main/res/layout/header_switch_layout.xml | 71 ++++++++++++++++++ .../src/main/res/layout/preference_pass.xml | 17 ++--- ...eply_activity.xml => toolbar_activity.xml} | 2 +- .../src/main/res/layout/watch_description.xml | 32 ++++++++ .../src/main/res/menu/action_bar_switch.xml | 9 +-- Clover/app/src/main/res/menu/board_edit.xml | 14 ++-- Clover/app/src/main/res/menu/image_view.xml | 15 ++-- Clover/app/src/main/res/menu/settings.xml | 5 +- Clover/app/src/main/res/values/strings.xml | 2 + 20 files changed, 254 insertions(+), 182 deletions(-) create mode 100644 Clover/app/src/main/res/layout/header_switch_layout.xml rename Clover/app/src/main/res/layout/{reply_activity.xml => toolbar_activity.xml} (95%) create mode 100644 Clover/app/src/main/res/layout/watch_description.xml diff --git a/Clover/app/src/main/AndroidManifest.xml b/Clover/app/src/main/AndroidManifest.xml index a7752e54..fd559b3d 100644 --- a/Clover/app/src/main/AndroidManifest.xml +++ b/Clover/app/src/main/AndroidManifest.xml @@ -80,45 +80,20 @@ along with this program. If not, see . android:windowSoftInputMode="adjustResize" /> - - + android:label="@string/action_settings" /> - - + android:label="@string/preference_watch_settings" /> - - + android:label="@string/preference_pass_settings" /> - - + android:label="@string/preference_about" /> - - + android:label="@string/board_edit" /> . - - + android:label="@string/settings_advanced_label" /> list; @@ -70,7 +69,10 @@ public class BoardEditor extends Activity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - ThemeHelper.setTheme(this); + setTheme(); + setContentView(R.layout.toolbar_activity); + setToolbar(); + getSupportActionBar().setDisplayHomeAsUpEnabled(true); list = boardManager.getSavedBoards(); @@ -150,7 +152,7 @@ public class BoardEditor extends Activity { } }); - setContentView(listView); + ((ViewGroup)findViewById(R.id.content)).addView(listView); } @Override @@ -186,6 +188,9 @@ public class BoardEditor extends Activity { ChanPreferences.setBoardEditorFillerEnabled(!ChanPreferences.getBoardEditorFillerEnabled()); item.setChecked(ChanPreferences.getBoardEditorFillerEnabled()); return true; + case android.R.id.home: + finish(); + return true; } return super.onOptionsItemSelected(item); diff --git a/Clover/app/src/main/java/org/floens/chan/ui/activity/DeveloperActivity.java b/Clover/app/src/main/java/org/floens/chan/ui/activity/DeveloperActivity.java index 22c802dd..39d6c15d 100644 --- a/Clover/app/src/main/java/org/floens/chan/ui/activity/DeveloperActivity.java +++ b/Clover/app/src/main/java/org/floens/chan/ui/activity/DeveloperActivity.java @@ -17,7 +17,6 @@ */ package org.floens.chan.ui.activity; -import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Button; @@ -25,17 +24,21 @@ import android.widget.LinearLayout; import android.widget.TextView; import org.floens.chan.ChanApplication; +import org.floens.chan.R; import org.floens.chan.core.model.SavedReply; -import org.floens.chan.utils.ThemeHelper; +import org.floens.chan.ui.ThemeActivity; import java.util.Random; -public class DeveloperActivity extends Activity { +public class DeveloperActivity extends ThemeActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - ThemeHelper.setTheme(this); + setTheme(); + setContentView(R.layout.toolbar_activity); + setToolbar(); + getSupportActionBar().setDisplayHomeAsUpEnabled(true); LinearLayout wrapper = new LinearLayout(this); wrapper.setOrientation(LinearLayout.VERTICAL); diff --git a/Clover/app/src/main/java/org/floens/chan/ui/activity/PassSettingsActivity.java b/Clover/app/src/main/java/org/floens/chan/ui/activity/PassSettingsActivity.java index 37bd50fa..a7b1f0a2 100644 --- a/Clover/app/src/main/java/org/floens/chan/ui/activity/PassSettingsActivity.java +++ b/Clover/app/src/main/java/org/floens/chan/ui/activity/PassSettingsActivity.java @@ -17,7 +17,6 @@ */ package org.floens.chan.ui.activity; -import android.app.Activity; import android.app.AlertDialog; import android.app.Fragment; import android.app.FragmentTransaction; @@ -25,16 +24,15 @@ import android.app.ProgressDialog; import android.os.Bundle; import android.preference.Preference; import android.preference.PreferenceFragment; +import android.support.v7.widget.SwitchCompat; import android.text.TextUtils; import android.view.LayoutInflater; -import android.view.Menu; import android.view.View; import android.view.ViewGroup; import android.webkit.WebSettings; import android.webkit.WebView; import android.widget.CompoundButton; import android.widget.CompoundButton.OnCheckedChangeListener; -import android.widget.Switch; import android.widget.TextView; import org.floens.chan.ChanApplication; @@ -43,54 +41,47 @@ import org.floens.chan.core.ChanPreferences; import org.floens.chan.core.manager.ReplyManager; import org.floens.chan.core.manager.ReplyManager.PassResponse; import org.floens.chan.core.model.Pass; -import org.floens.chan.utils.ThemeHelper; +import org.floens.chan.ui.ThemeActivity; import org.floens.chan.utils.Utils; -public class PassSettingsActivity extends Activity implements OnCheckedChangeListener { - private static PassSettingsActivity instance; - - private Switch enableSwitch; +public class PassSettingsActivity extends ThemeActivity implements OnCheckedChangeListener { + private SwitchCompat onSwitch; + private TextView toggleStatus; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - ThemeHelper.setTheme(this); - - instance = this; + setTheme(); + setContentView(R.layout.header_switch_layout); + setToolbar(); + getSupportActionBar().setDisplayHomeAsUpEnabled(true); - setFragment(ChanPreferences.getPassEnabled()); - } + findViewById(R.id.toggle_bar).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + onSwitch.toggle(); + } + }); - @Override - protected void onDestroy() { - super.onDestroy(); + toggleStatus = (TextView) findViewById(R.id.toggle_status); + onSwitch = (SwitchCompat) findViewById(R.id.toggle); + onSwitch.setOnCheckedChangeListener(this); + setSwitch(ChanPreferences.getPassEnabled()); - instance = null; + setFragment(ChanPreferences.getPassEnabled()); } @Override - public void onBackPressed() { - super.onBackPressed(); + public void onPause() { + super.onPause(); if (TextUtils.isEmpty(ChanPreferences.getPassId())) { ChanPreferences.setPassEnabled(false); + setSwitch(false); } } - @Override - public boolean onCreateOptionsMenu(Menu menu) { - getMenuInflater().inflate(R.menu.action_bar_switch, menu); - - enableSwitch = (Switch) menu.findItem(R.id.action_bar_switch).getActionView(); - enableSwitch.setOnCheckedChangeListener(this); - enableSwitch.setPadding(0, 0, Utils.dp(14), 0); - - setSwitch(ChanPreferences.getPassEnabled()); - - return true; - } - @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { setFragment(isChecked); @@ -98,19 +89,21 @@ public class PassSettingsActivity extends Activity implements OnCheckedChangeLis } private void setSwitch(boolean enabled) { - enableSwitch.setChecked(enabled); + onSwitch.setChecked(enabled); + toggleStatus.setText(enabled ? R.string.on : R.string.off); + ChanPreferences.setPassEnabled(enabled); } private void setFragment(boolean enabled) { if (enabled) { FragmentTransaction t = getFragmentManager().beginTransaction(); - t.replace(android.R.id.content, new PassSettingsFragment()); + t.replace(R.id.content, new PassSettingsFragment()); t.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE); t.commit(); } else { FragmentTransaction t = getFragmentManager().beginTransaction(); - t.replace(android.R.id.content, new TextFragment()); + t.replace(R.id.content, new TextFragment()); t.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE); t.commit(); } @@ -144,10 +137,9 @@ public class PassSettingsActivity extends Activity implements OnCheckedChangeLis login.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference preference) { - if (PassSettingsActivity.instance != null) { - Pass pass = new Pass(ChanPreferences.getPassToken(), ChanPreferences.getPassPin()); - onLoginClick(pass); - } + Pass pass = new Pass(ChanPreferences.getPassToken(), ChanPreferences.getPassPin()); + onLoginClick(pass); + return true; } }); diff --git a/Clover/app/src/main/java/org/floens/chan/ui/activity/ReplyActivity.java b/Clover/app/src/main/java/org/floens/chan/ui/activity/ReplyActivity.java index 8144a1a2..4b032a53 100644 --- a/Clover/app/src/main/java/org/floens/chan/ui/activity/ReplyActivity.java +++ b/Clover/app/src/main/java/org/floens/chan/ui/activity/ReplyActivity.java @@ -45,14 +45,13 @@ public class ReplyActivity extends ThemeActivity { staticLoadable = null; if (loadable != null && savedInstanceState == null) { - setContentView(R.layout.reply_activity); setTheme(); + setContentView(R.layout.toolbar_activity); setToolbar(); - getSupportActionBar().setDisplayHomeAsUpEnabled(true); FragmentTransaction ft = getFragmentManager().beginTransaction(); - ft.replace(R.id.reply_fragment, ReplyFragment.newInstance(loadable, false), "reply"); + ft.replace(R.id.content, ReplyFragment.newInstance(loadable, false), "reply"); ft.commitAllowingStateLoss(); } else if (savedInstanceState == null) { Logger.e(TAG, "Loadable was null, exiting!"); diff --git a/Clover/app/src/main/java/org/floens/chan/ui/activity/SettingsActivity.java b/Clover/app/src/main/java/org/floens/chan/ui/activity/SettingsActivity.java index f19ecafb..8dd80be0 100644 --- a/Clover/app/src/main/java/org/floens/chan/ui/activity/SettingsActivity.java +++ b/Clover/app/src/main/java/org/floens/chan/ui/activity/SettingsActivity.java @@ -17,17 +17,17 @@ */ package org.floens.chan.ui.activity; -import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import org.floens.chan.R; +import org.floens.chan.ui.ThemeActivity; import org.floens.chan.ui.fragment.SettingsFragment; import org.floens.chan.utils.ThemeHelper; -public class SettingsActivity extends Activity { +public class SettingsActivity extends ThemeActivity { private static boolean doingThemeRestart = false; private static ThemeHelper.Theme lastTheme; @@ -35,15 +35,18 @@ public class SettingsActivity extends Activity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + setTheme(); + setContentView(R.layout.toolbar_activity); + setToolbar(); + getSupportActionBar().setDisplayHomeAsUpEnabled(true); + if (!doingThemeRestart) { lastTheme = ThemeHelper.getInstance().getTheme(); } - ThemeHelper.setTheme(this); - SettingsFragment frag = new SettingsFragment(); frag.setArguments(getIntent().getExtras()); - getFragmentManager().beginTransaction().replace(android.R.id.content, frag).commit(); + getFragmentManager().beginTransaction().replace(R.id.content, frag).commit(); } public void restart(Intent intent) { @@ -77,6 +80,9 @@ public class SettingsActivity extends Activity { if (item.getItemId() == R.id.action_settings_advanced) { startActivity(new Intent(this, AdvancedSettingsActivity.class)); return true; + } else if (item.getItemId() == android.R.id.home) { + finish(); + return true; } else { return super.onOptionsItemSelected(item); } diff --git a/Clover/app/src/main/java/org/floens/chan/ui/activity/WatchSettingsActivity.java b/Clover/app/src/main/java/org/floens/chan/ui/activity/WatchSettingsActivity.java index c18b7053..f308af37 100644 --- a/Clover/app/src/main/java/org/floens/chan/ui/activity/WatchSettingsActivity.java +++ b/Clover/app/src/main/java/org/floens/chan/ui/activity/WatchSettingsActivity.java @@ -17,56 +17,52 @@ */ package org.floens.chan.ui.activity; -import android.app.Activity; import android.app.Fragment; import android.app.FragmentTransaction; import android.os.Bundle; -import android.os.Handler; -import android.os.Looper; import android.preference.ListPreference; import android.preference.Preference; import android.preference.Preference.OnPreferenceChangeListener; import android.preference.PreferenceFragment; -import android.view.Gravity; +import android.support.v7.widget.SwitchCompat; import android.view.LayoutInflater; -import android.view.Menu; import android.view.View; import android.view.ViewGroup; import android.widget.CompoundButton; import android.widget.CompoundButton.OnCheckedChangeListener; -import android.widget.LinearLayout; -import android.widget.Switch; import android.widget.TextView; import org.floens.chan.ChanApplication; import org.floens.chan.R; import org.floens.chan.core.ChanPreferences; -import org.floens.chan.utils.ThemeHelper; -import org.floens.chan.utils.Utils; +import org.floens.chan.ui.ThemeActivity; -public class WatchSettingsActivity extends Activity implements OnCheckedChangeListener { - private Switch watchSwitch; +public class WatchSettingsActivity extends ThemeActivity implements OnCheckedChangeListener { + private SwitchCompat watchSwitch; + private TextView toggleStatus; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - ThemeHelper.setTheme(this); + setTheme(); + setContentView(R.layout.header_switch_layout); + setToolbar(); + getSupportActionBar().setDisplayHomeAsUpEnabled(true); - setFragment(ChanPreferences.getWatchEnabled()); - } - - @Override - public boolean onCreateOptionsMenu(Menu menu) { - getMenuInflater().inflate(R.menu.action_bar_switch, menu); + findViewById(R.id.toggle_bar).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + watchSwitch.toggle(); + } + }); - watchSwitch = (Switch) menu.findItem(R.id.action_bar_switch).getActionView(); + toggleStatus = (TextView) findViewById(R.id.toggle_status); + watchSwitch = (SwitchCompat) findViewById(R.id.toggle); watchSwitch.setOnCheckedChangeListener(this); - watchSwitch.setPadding(0, 0, Utils.dp(14), 0); - setSwitch(ChanPreferences.getWatchEnabled()); - return true; + setFragment(ChanPreferences.getWatchEnabled()); } @Override @@ -77,30 +73,20 @@ public class WatchSettingsActivity extends Activity implements OnCheckedChangeLi private void setSwitch(boolean enabled) { watchSwitch.setChecked(enabled); + toggleStatus.setText(enabled ? R.string.on : R.string.off); ChanPreferences.setWatchEnabled(enabled); - - watchSwitch.setEnabled(false); - new Handler(Looper.getMainLooper()).postDelayed(new Runnable() { - @Override - public void run() { - watchSwitch.setEnabled(true); - } - }, 500); } private void setFragment(boolean enabled) { + FragmentTransaction t = getFragmentManager().beginTransaction(); if (enabled) { - FragmentTransaction t = getFragmentManager().beginTransaction(); - t.replace(android.R.id.content, new WatchSettingsFragment()); - t.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE); - t.commit(); + t.replace(R.id.content, new WatchSettingsFragment()); } else { - FragmentTransaction t = getFragmentManager().beginTransaction(); - t.replace(android.R.id.content, TextFragment.newInstance(R.string.watch_info_text)); - t.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE); - t.commit(); + t.replace(R.id.content, TextFragment.newInstance(R.string.watch_info_text)); } + t.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE); + t.commit(); } public static class TextFragment extends Fragment { @@ -114,18 +100,10 @@ public class WatchSettingsActivity extends Activity implements OnCheckedChangeLi @Override public View onCreateView(LayoutInflater inflater, ViewGroup group, Bundle savedInstanceState) { - LinearLayout container = new LinearLayout(inflater.getContext()); - - int p = Utils.dp(14); - container.setPadding(p, p, p, p); + ViewGroup container = (ViewGroup) inflater.inflate(R.layout.watch_description, null); - TextView text = new TextView(inflater.getContext()); - text.setTextSize(20); + TextView text = (TextView) container.findViewById(R.id.text); text.setText(getArguments().getInt("text_resource")); - text.setGravity(Gravity.CENTER); - - container.setGravity(Gravity.CENTER); - container.addView(text); return container; } diff --git a/Clover/app/src/main/res/layout/board_select_add.xml b/Clover/app/src/main/res/layout/board_select_add.xml index 1b76c3aa..c4abbb36 100644 --- a/Clover/app/src/main/res/layout/board_select_add.xml +++ b/Clover/app/src/main/res/layout/board_select_add.xml @@ -22,7 +22,7 @@ along with this program. If not, see . android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="16sp" - android:textColor="#FFF3F3F3" + android:textColor="#ff000000" android:gravity="center_vertical" android:paddingLeft="?android:attr/listPreferredItemPaddingLeft" android:paddingRight="?android:attr/listPreferredItemPaddingRight" diff --git a/Clover/app/src/main/res/layout/header_switch_layout.xml b/Clover/app/src/main/res/layout/header_switch_layout.xml new file mode 100644 index 00000000..98681879 --- /dev/null +++ b/Clover/app/src/main/res/layout/header_switch_layout.xml @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Clover/app/src/main/res/layout/preference_pass.xml b/Clover/app/src/main/res/layout/preference_pass.xml index 5860e0d3..d86b4a45 100644 --- a/Clover/app/src/main/res/layout/preference_pass.xml +++ b/Clover/app/src/main/res/layout/preference_pass.xml @@ -1,5 +1,4 @@ - - - + android:gravity="center" + android:padding="24dp"> + style="?android:attr/textAppearanceMedium" /> . android:text="@string/pass_info_learn_more" android:textColor="@android:color/holo_blue_light" android:textSize="20sp" - android:textStyle="italic"/> + android:textStyle="italic" /> \ No newline at end of file diff --git a/Clover/app/src/main/res/layout/reply_activity.xml b/Clover/app/src/main/res/layout/toolbar_activity.xml similarity index 95% rename from Clover/app/src/main/res/layout/reply_activity.xml rename to Clover/app/src/main/res/layout/toolbar_activity.xml index f1b27e7f..30f79740 100644 --- a/Clover/app/src/main/res/layout/reply_activity.xml +++ b/Clover/app/src/main/res/layout/toolbar_activity.xml @@ -23,7 +23,7 @@ along with this program. If not, see . diff --git a/Clover/app/src/main/res/layout/watch_description.xml b/Clover/app/src/main/res/layout/watch_description.xml new file mode 100644 index 00000000..9f2e53c9 --- /dev/null +++ b/Clover/app/src/main/res/layout/watch_description.xml @@ -0,0 +1,32 @@ + + + + + + diff --git a/Clover/app/src/main/res/menu/action_bar_switch.xml b/Clover/app/src/main/res/menu/action_bar_switch.xml index 9b901b8e..42c467d3 100644 --- a/Clover/app/src/main/res/menu/action_bar_switch.xml +++ b/Clover/app/src/main/res/menu/action_bar_switch.xml @@ -1,5 +1,4 @@ - - - + - + app:showAsAction="always" /> \ No newline at end of file diff --git a/Clover/app/src/main/res/menu/board_edit.xml b/Clover/app/src/main/res/menu/board_edit.xml index 0c719afd..38f7aadf 100644 --- a/Clover/app/src/main/res/menu/board_edit.xml +++ b/Clover/app/src/main/res/menu/board_edit.xml @@ -1,5 +1,4 @@ - - - + + app:showAsAction="always" + android:title="@string/board_add" /> + android:title="@string/board_edit_enable_filler" /> diff --git a/Clover/app/src/main/res/menu/image_view.xml b/Clover/app/src/main/res/menu/image_view.xml index 8b523982..23d252e9 100644 --- a/Clover/app/src/main/res/menu/image_view.xml +++ b/Clover/app/src/main/res/menu/image_view.xml @@ -15,40 +15,41 @@ 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 . --> - + \ No newline at end of file diff --git a/Clover/app/src/main/res/menu/settings.xml b/Clover/app/src/main/res/menu/settings.xml index 8e39bcca..4b869035 100644 --- a/Clover/app/src/main/res/menu/settings.xml +++ b/Clover/app/src/main/res/menu/settings.xml @@ -16,10 +16,11 @@ 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 . --> - + diff --git a/Clover/app/src/main/res/values/strings.xml b/Clover/app/src/main/res/values/strings.xml index 8f5513db..b480a6bc 100644 --- a/Clover/app/src/main/res/values/strings.xml +++ b/Clover/app/src/main/res/values/strings.xml @@ -25,6 +25,8 @@ along with this program. If not, see . Close Back OK + On + Off Settings Reload From 03c9b118ce9ff64d83ef76ce4a1c6a146fa254c6 Mon Sep 17 00:00:00 2001 From: Floens Date: Tue, 9 Dec 2014 16:24:00 +0100 Subject: [PATCH 07/17] Fix error caused by rebase --- .../main/java/org/floens/chan/ui/fragment/ThreadFragment.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Clover/app/src/main/java/org/floens/chan/ui/fragment/ThreadFragment.java b/Clover/app/src/main/java/org/floens/chan/ui/fragment/ThreadFragment.java index 3479c940..1f22e877 100644 --- a/Clover/app/src/main/java/org/floens/chan/ui/fragment/ThreadFragment.java +++ b/Clover/app/src/main/java/org/floens/chan/ui/fragment/ThreadFragment.java @@ -19,7 +19,6 @@ package org.floens.chan.ui.fragment; import android.app.Fragment; import android.content.Context; -import android.content.res.TypedArray; import android.os.Bundle; import android.util.AttributeSet; import android.view.Gravity; @@ -281,7 +280,7 @@ public class ThreadFragment extends Fragment implements ThreadManager.ThreadMana } else if (viewMode == ThreadManager.ViewMode.GRID) { GridView grid = new GridView(getActivity()); grid.setNumColumns(GridView.AUTO_FIT); - int postGridWidth = baseActivity.getResources().getDimensionPixelSize(R.dimen.post_grid_width); + int postGridWidth = getActivity().getResources().getDimensionPixelSize(R.dimen.post_grid_width); grid.setColumnWidth(postGridWidth); listView = grid; postAdapter = new PostAdapter(getActivity(), threadManager, listView, this); From 87173ce4b4111dbf12c921e8751b1c340c6ec10a Mon Sep 17 00:00:00 2001 From: Floens Date: Fri, 9 Jan 2015 15:17:20 +0100 Subject: [PATCH 08/17] Some toolbar changes. --- Clover/app/build.gradle | 2 +- .../floens/chan/ui/activity/ChanActivity.java | 2 +- .../main/res/layout/header_switch_layout.xml | 68 ++++++------- Clover/app/src/main/res/layout/toolbar.xml | 6 +- Clover/app/src/main/res/values/attrs.xml | 96 ++++++++++--------- Clover/app/src/main/res/values/styles.xml | 6 +- 6 files changed, 88 insertions(+), 92 deletions(-) diff --git a/Clover/app/build.gradle b/Clover/app/build.gradle index e5840dd1..1b32f719 100644 --- a/Clover/app/build.gradle +++ b/Clover/app/build.gradle @@ -68,7 +68,7 @@ android { dependencies { compile 'com.android.support:support-v13:21.0.0' - compile 'com.android.support:appcompat-v7:21.0.2' + compile 'com.android.support:appcompat-v7:21.0.3' compile 'com.android.support:support-v13:18.0.0' compile 'org.jsoup:jsoup:1.8.1' diff --git a/Clover/app/src/main/java/org/floens/chan/ui/activity/ChanActivity.java b/Clover/app/src/main/java/org/floens/chan/ui/activity/ChanActivity.java index bc8c0164..aa0408c6 100644 --- a/Clover/app/src/main/java/org/floens/chan/ui/activity/ChanActivity.java +++ b/Clover/app/src/main/java/org/floens/chan/ui/activity/ChanActivity.java @@ -91,7 +91,7 @@ public class ChanActivity extends BaseActivity implements AdapterView.OnItemSele final ActionBar actionBar = getSupportActionBar(); - boardSpinner = new Spinner(actionBar.getThemedContext()); + boardSpinner = new Spinner(this, null, R.attr.test_spinner_style); spinnerAdapter = new BoardSpinnerAdapter(this, boardSpinner); boardSpinner.setAdapter(spinnerAdapter); boardSpinner.setOnItemSelectedListener(this); diff --git a/Clover/app/src/main/res/layout/header_switch_layout.xml b/Clover/app/src/main/res/layout/header_switch_layout.xml index 98681879..991ee74b 100644 --- a/Clover/app/src/main/res/layout/header_switch_layout.xml +++ b/Clover/app/src/main/res/layout/header_switch_layout.xml @@ -16,51 +16,43 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . --> + android:layout_height="match_parent" + android:orientation="vertical"> - - - - - - - - - - - + android:background="#ff9e9e9e" + android:orientation="horizontal"> + + + + + + . android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" - android:minHeight="?attr/actionBarSize" android:background="?attr/colorPrimary" - app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" - app:popupTheme="@style/ThemeOverlay.AppCompat.Light" /> + android:minHeight="?attr/actionBarSize" + app:popupTheme="?attr/toolbar_popup_theme" + app:theme="?attr/toolbar_theme" /> diff --git a/Clover/app/src/main/res/values/attrs.xml b/Clover/app/src/main/res/values/attrs.xml index 70990203..0af82eaf 100644 --- a/Clover/app/src/main/res/values/attrs.xml +++ b/Clover/app/src/main/res/values/attrs.xml @@ -1,5 +1,4 @@ - - - - - + + + + + + - + - + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - + - + diff --git a/Clover/app/src/main/res/values/styles.xml b/Clover/app/src/main/res/values/styles.xml index 6a400c8e..627003da 100644 --- a/Clover/app/src/main/res/values/styles.xml +++ b/Clover/app/src/main/res/values/styles.xml @@ -42,8 +42,10 @@ along with this program. If not, see . @style/BoardEditItem #ff000000 - + @style/ThemeOverlay.AppCompat.Dark.ActionBar + @style/ThemeOverlay.AppCompat.Light +