Add dark toolbar theme

pull/413/head
Alex Baker 10 years ago
parent 5d8c6211cc
commit 0d2b20c032

@ -2,13 +2,11 @@ package org.tasks.locale.ui.activity;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.support.v4.graphics.drawable.DrawableCompat;
import android.support.v7.app.ActionBar;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.TextView;
import com.todoroo.astrid.api.Filter;
@ -32,7 +30,7 @@ import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
public final class TaskerSettingsActivity extends AbstractFragmentPluginAppCompatActivity implements PurchaseHelperCallback {
public final class TaskerSettingsActivity extends AbstractFragmentPluginAppCompatActivity implements PurchaseHelperCallback, Toolbar.OnMenuItemClickListener {
private static final int REQUEST_SELECT_FILTER = 10124;
private static final int REQUEST_PURCHASE = 10125;
@ -66,15 +64,33 @@ public final class TaskerSettingsActivity extends AbstractFragmentPluginAppCompa
}
updateView();
setSupportActionBar(toolbar);
ActionBar supportActionBar = getSupportActionBar();
if (supportActionBar != null) {
supportActionBar.setDisplayHomeAsUpEnabled(true);
Drawable drawable = DrawableCompat.wrap(getResources().getDrawable(R.drawable.ic_close_24dp));
DrawableCompat.setTint(drawable, getResources().getColor(android.R.color.white));
supportActionBar.setHomeAsUpIndicator(drawable);
supportActionBar.setDisplayShowTitleEnabled(false);
}
toolbar.setNavigationIcon(DrawableCompat.wrap(getResources().getDrawable(R.drawable.ic_close_24dp)));
toolbar.setOnMenuItemClickListener(this);
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (equalBundles(getResultBundle(), previousBundle)) {
cancel();
} else {
dialogBuilder.newMessageDialog(R.string.discard_changes)
.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
cancel();
}
})
.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
})
.show();
}
}
});
toolbar.inflateMenu(R.menu.tasker_menu);
MenuColorizer.colorToolbar(this, toolbar);
if (!preferences.hasPurchase(R.string.p_purchased_tasker) && !purchaseInitiated) {
purchaseInitiated = purchaseHelper.purchase(dialogBuilder, this, getString(R.string.sku_tasker), getString(R.string.p_purchased_tasker), REQUEST_PURCHASE, this);
@ -110,45 +126,6 @@ public final class TaskerSettingsActivity extends AbstractFragmentPluginAppCompa
return filter.listingTitle;
}
@Override
public boolean onCreateOptionsMenu(final Menu menu) {
getMenuInflater().inflate(R.menu.tasker_menu, menu);
MenuColorizer.colorMenu(this, menu, getResources().getColor(android.R.color.white));
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_save:
finish();
break;
case android.R.id.home:
if (equalBundles(getResultBundle(), previousBundle)) {
cancel();
} else {
dialogBuilder.newMessageDialog(R.string.discard_changes)
.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
cancel();
}
})
.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
})
.show();
}
break;
default:
return super.onOptionsItemSelected(item);
}
return true;
}
private void cancel() {
mIsCancelled = true;
finish();
@ -233,4 +210,14 @@ public final class TaskerSettingsActivity extends AbstractFragmentPluginAppCompa
cancel();
}
}
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_save:
finish();
return true;
}
return super.onOptionsItemSelected(item);
}
}

@ -8,12 +8,9 @@ package com.todoroo.astrid.actfm;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.support.v4.graphics.drawable.DrawableCompat;
import android.support.v7.app.ActionBar;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
@ -38,7 +35,7 @@ import butterknife.ButterKnife;
import static android.text.TextUtils.isEmpty;
public class FilterSettingsActivity extends ThemedInjectingAppCompatActivity {
public class FilterSettingsActivity extends ThemedInjectingAppCompatActivity implements Toolbar.OnMenuItemClickListener {
public static final String TOKEN_FILTER = "token_filter";
@ -60,27 +57,23 @@ public class FilterSettingsActivity extends ThemedInjectingAppCompatActivity {
filter = getIntent().getParcelableExtra(TOKEN_FILTER);
setSupportActionBar(toolbar);
ActionBar supportActionBar = getSupportActionBar();
if (supportActionBar != null) {
supportActionBar.setDisplayHomeAsUpEnabled(true);
final boolean backButtonSavesTask = preferences.backButtonSavesTask();
Drawable drawable = DrawableCompat.wrap(getResources().getDrawable(
backButtonSavesTask ? R.drawable.ic_close_24dp : R.drawable.ic_save_24dp));
DrawableCompat.setTint(drawable, getResources().getColor(android.R.color.white));
supportActionBar.setHomeAsUpIndicator(drawable);
supportActionBar.setTitle(filter.listingTitle);
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (backButtonSavesTask) {
discard();
} else {
save();
}
final boolean backButtonSavesTask = preferences.backButtonSavesTask();
toolbar.setNavigationIcon(DrawableCompat.wrap(getResources().getDrawable(
backButtonSavesTask ? R.drawable.ic_close_24dp : R.drawable.ic_save_24dp)));
toolbar.setTitle(filter.listingTitle);
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (backButtonSavesTask) {
discard();
} else {
save();
}
});
}
}
});
toolbar.inflateMenu(R.menu.tag_settings_activity);
toolbar.setOnMenuItemClickListener(this);
MenuColorizer.colorToolbar(this, toolbar);
filterName.setText(filter.listingTitle);
}
@ -116,13 +109,6 @@ public class FilterSettingsActivity extends ThemedInjectingAppCompatActivity {
super.finish();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.tag_settings_activity, menu);
MenuColorizer.colorMenu(this, menu, getResources().getColor(android.R.color.white));
return super.onCreateOptionsMenu(menu);
}
@Override
public void onBackPressed() {
if (preferences.backButtonSavesTask()) {
@ -132,16 +118,6 @@ public class FilterSettingsActivity extends ThemedInjectingAppCompatActivity {
}
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.delete:
deleteTag();
break;
}
return super.onOptionsItemSelected(item);
}
private void deleteTag() {
dialogBuilder.newMessageDialog(R.string.delete_tag_confirmation, filter.listingTitle)
.setPositiveButton(R.string.delete, new DialogInterface.OnClickListener() {
@ -172,4 +148,14 @@ public class FilterSettingsActivity extends ThemedInjectingAppCompatActivity {
.show();
}
}
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.delete:
deleteTag();
break;
}
return super.onOptionsItemSelected(item);
}
}

@ -9,12 +9,8 @@ import android.app.FragmentManager;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.support.v4.graphics.drawable.DrawableCompat;
import android.support.v7.app.ActionBar;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
@ -43,7 +39,6 @@ import org.tasks.injection.ThemedInjectingAppCompatActivity;
import org.tasks.preferences.Preferences;
import org.tasks.themes.ThemeCache;
import org.tasks.themes.ThemeColor;
import org.tasks.ui.MenuColorizer;
import javax.inject.Inject;
@ -55,7 +50,7 @@ import timber.log.Timber;
import static android.text.TextUtils.isEmpty;
import static org.tasks.dialogs.ThemePickerDialog.newThemePickerDialog;
public class TagSettingsActivity extends ThemedInjectingAppCompatActivity implements ThemePickerDialog.ThemePickerCallback, PurchaseHelperCallback {
public class TagSettingsActivity extends ThemedInjectingAppCompatActivity implements ThemePickerDialog.ThemePickerCallback, PurchaseHelperCallback, Toolbar.OnMenuItemClickListener {
private static final String FRAG_TAG_COLOR_PICKER = "frag_tag_color_picker";
@ -98,27 +93,23 @@ public class TagSettingsActivity extends ThemedInjectingAppCompatActivity implem
tagData.setUUID(UUIDHelper.newUUID());
}
setSupportActionBar(toolbar);
ActionBar supportActionBar = getSupportActionBar();
if (supportActionBar != null) {
supportActionBar.setDisplayHomeAsUpEnabled(true);
final boolean backButtonSavesTask = preferences.backButtonSavesTask();
Drawable drawable = DrawableCompat.wrap(getResources().getDrawable(
backButtonSavesTask ? R.drawable.ic_close_24dp : R.drawable.ic_save_24dp));
DrawableCompat.setTint(drawable, getResources().getColor(android.R.color.white));
supportActionBar.setHomeAsUpIndicator(drawable);
supportActionBar.setTitle(isNewTag ? getString(R.string.new_tag) : tagData.getName());
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (backButtonSavesTask) {
discard();
} else {
save();
}
final boolean backButtonSavesTask = preferences.backButtonSavesTask();
toolbar.setTitle(isNewTag ? getString(R.string.new_tag) : tagData.getName());
toolbar.setNavigationIcon(getResources().getDrawable(
backButtonSavesTask ? R.drawable.ic_close_24dp : R.drawable.ic_save_24dp));
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (backButtonSavesTask) {
discard();
} else {
save();
}
});
}
}
});
toolbar.inflateMenu(R.menu.tag_settings_activity);
toolbar.setOnMenuItemClickListener(this);
toolbar.showOverflowMenu();
tagName.setText(tagData.getName());
@ -127,6 +118,7 @@ public class TagSettingsActivity extends ThemedInjectingAppCompatActivity implem
tagName.setText(autopopulateName);
getIntent().removeExtra(TOKEN_AUTOPOPULATE_NAME);
} else if (isNewTag) {
toolbar.getMenu().findItem(R.id.delete).setVisible(false);
tagName.requestFocus();
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(tagName, InputMethodManager.SHOW_IMPLICIT);
@ -213,16 +205,6 @@ public class TagSettingsActivity extends ThemedInjectingAppCompatActivity implem
super.finish();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.tag_settings_activity, menu);
MenuColorizer.colorMenu(this, menu, getResources().getColor(android.R.color.white));
if (isNewTag) {
menu.findItem(R.id.delete).setVisible(false);
}
return super.onCreateOptionsMenu(menu);
}
@Override
public void onBackPressed() {
if (preferences.backButtonSavesTask()) {
@ -232,16 +214,6 @@ public class TagSettingsActivity extends ThemedInjectingAppCompatActivity implem
}
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.delete:
deleteTag();
break;
}
return super.onOptionsItemSelected(item);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_PURCHASE) {
@ -292,19 +264,19 @@ public class TagSettingsActivity extends ThemedInjectingAppCompatActivity implem
}
private void updateTheme() {
ThemeColor color;
if (selectedTheme < 0) {
color = themeColor;
themeName.setText(R.string.none);
toolbar.setBackgroundColor(themeColor.getPrimaryColor());
themeColor.applyStatusBarColor(this);
clear.setVisibility(View.GONE);
} else {
ThemeColor themeColor = themeCache.getThemeColor(selectedTheme);
toolbar.setBackgroundColor(themeColor.getPrimaryColor());
themeColor.applyStatusBarColor(this);
themeName.setText(themeColor.getName());
color = themeCache.getThemeColor(selectedTheme);
themeName.setText(color.getName());
clear.setVisibility(View.VISIBLE);
}
color.apply(toolbar);
color.applyStatusBarColor(this);
}
@Override
@ -325,4 +297,14 @@ public class TagSettingsActivity extends ThemedInjectingAppCompatActivity implem
}
});
}
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.delete:
deleteTag();
break;
}
return super.onOptionsItemSelected(item);
}
}

@ -29,6 +29,7 @@ import org.tasks.R;
import org.tasks.injection.ActivityComponent;
import org.tasks.injection.ThemedInjectingAppCompatActivity;
import org.tasks.preferences.Preferences;
import org.tasks.ui.MenuColorizer;
import java.util.ArrayList;
import java.util.Collections;
@ -39,7 +40,7 @@ import javax.inject.Inject;
import butterknife.BindView;
import butterknife.ButterKnife;
public class BeastModePreferences extends ThemedInjectingAppCompatActivity {
public class BeastModePreferences extends ThemedInjectingAppCompatActivity implements Toolbar.OnMenuItemClickListener {
@BindView(R.id.toolbar) Toolbar toolbar;
@BindView(android.R.id.list) TouchListView touchList;
@ -63,21 +64,16 @@ public class BeastModePreferences extends ThemedInjectingAppCompatActivity {
setContentView(R.layout.beast_mode_pref_activity);
ButterKnife.bind(this);
setSupportActionBar(toolbar);
ActionBar supportActionBar = getSupportActionBar();
if (supportActionBar != null) {
supportActionBar.setDisplayHomeAsUpEnabled(true);
supportActionBar.setDisplayShowTitleEnabled(false);
Drawable drawable = DrawableCompat.wrap(getResources().getDrawable(R.drawable.ic_arrow_back_24dp));
DrawableCompat.setTint(drawable, getResources().getColor(android.R.color.white));
supportActionBar.setHomeAsUpIndicator(drawable);
}
toolbar.setNavigationIcon(getResources().getDrawable(R.drawable.ic_arrow_back_24dp));
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
toolbar.inflateMenu(R.menu.beast_mode);
toolbar.setOnMenuItemClickListener(this);
MenuColorizer.colorToolbar(this, toolbar);
prefsToDescriptions = new HashMap<>();
buildDescriptionMap(getResources());
@ -116,13 +112,7 @@ public class BeastModePreferences extends ThemedInjectingAppCompatActivity {
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.beast_mode, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
public boolean onMenuItemClick(MenuItem item) {
switch(item.getItemId()) {
case R.id.menu_reset_to_defaults:
resetToDefault();

@ -131,10 +131,8 @@ public final class TaskEditFragment extends InjectingFragment implements Toolbar
}
final boolean backButtonSavesTask = preferences.backButtonSavesTask();
Drawable drawable = DrawableCompat.wrap(getResources().getDrawable(
backButtonSavesTask ? R.drawable.ic_close_24dp : R.drawable.ic_save_24dp));
DrawableCompat.setTint(drawable, getResources().getColor(android.R.color.white));
toolbar.setNavigationIcon(drawable);
toolbar.setNavigationIcon(DrawableCompat.wrap(getResources().getDrawable(
backButtonSavesTask ? R.drawable.ic_close_24dp : R.drawable.ic_save_24dp)));
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
@ -146,11 +144,8 @@ public final class TaskEditFragment extends InjectingFragment implements Toolbar
}
});
toolbar.inflateMenu(R.menu.task_edit_fragment);
Menu menu = toolbar.getMenu();
for (int i = 0 ; i < menu.size() ; i++) {
MenuColorizer.colorMenuItem(menu.getItem(i), getResources().getColor(android.R.color.white));
}
toolbar.setOnMenuItemClickListener(this);
MenuColorizer.colorToolbar(context, toolbar);
notificationManager.cancel(model.getId());

@ -13,9 +13,7 @@ import android.content.Intent;
import android.content.IntentFilter;
import android.database.Cursor;
import android.database.sqlite.SQLiteException;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.support.v4.graphics.drawable.DrawableCompat;
import android.support.v4.view.MenuItemCompat;
import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.widget.SearchView;
@ -254,9 +252,7 @@ public class TaskListFragment extends InjectingListFragment implements
listView.setEmptyView(emptyView);
toolbar.setTitle(filter.listingTitle);
Drawable drawable = DrawableCompat.wrap(getResources().getDrawable(R.drawable.ic_menu_24dp));
DrawableCompat.setTint(drawable, getResources().getColor(android.R.color.white));
toolbar.setNavigationIcon(drawable);
toolbar.setNavigationIcon(R.drawable.ic_menu_24dp);
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
@ -264,12 +260,9 @@ public class TaskListFragment extends InjectingListFragment implements
}
});
inflateMenu(toolbar);
Menu menu = toolbar.getMenu();
for (int i = 0 ; i < menu.size() ; i++) {
MenuColorizer.colorMenuItem(menu.getItem(i), getResources().getColor(android.R.color.white));
}
setupMenu(toolbar.getMenu());
toolbar.setOnMenuItemClickListener(this);
setupMenu(menu);
MenuColorizer.colorToolbar(context, toolbar);
return parent;
}

@ -10,12 +10,14 @@ import android.app.PendingIntent.CanceledException;
import android.content.Context;
import android.content.res.Resources;
import android.database.Cursor;
import android.graphics.Color;
import android.graphics.Paint;
import android.text.SpannableString;
import android.text.SpannableStringBuilder;
import android.text.Spanned;
import android.text.TextUtils;
import android.text.style.BackgroundColorSpan;
import android.text.style.ForegroundColorSpan;
import android.util.DisplayMetrics;
import android.util.TypedValue;
import android.view.LayoutInflater;
@ -546,7 +548,9 @@ public class TaskAdapter extends CursorAdapter implements Filterable {
SpannableString string = new SpannableString(SPACE + tagName + SPACE);
int themeIndex = tagData.getColor() >= 0 ? tagData.getColor() : 19;
int backgroundColor = themeCache.getThemeColor(themeIndex).getPrimaryColor();
int foregroundColor = themeCache.getThemeColor(themeIndex).getActionBarTint();
string.setSpan(new BackgroundColorSpan(backgroundColor), 0, string.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
string.setSpan(new ForegroundColorSpan(foregroundColor), 0, string.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
return string;
}
};

@ -10,14 +10,10 @@ import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.support.v4.graphics.drawable.DrawableCompat;
import android.support.v7.app.ActionBar;
import android.support.v7.widget.Toolbar;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnCreateContextMenuListener;
@ -45,7 +41,6 @@ import org.tasks.R;
import org.tasks.dialogs.DialogBuilder;
import org.tasks.filters.FilterCriteriaProvider;
import org.tasks.injection.ActivityComponent;
import org.tasks.injection.InjectingAppCompatActivity;
import org.tasks.injection.ThemedInjectingAppCompatActivity;
import org.tasks.ui.MenuColorizer;
@ -66,7 +61,7 @@ import static android.text.TextUtils.isEmpty;
* @author Tim Su <tim@todoroo.com>
*
*/
public class CustomFilterActivity extends ThemedInjectingAppCompatActivity {
public class CustomFilterActivity extends ThemedInjectingAppCompatActivity implements Toolbar.OnMenuItemClickListener {
private static final String IDENTIFIER_UNIVERSE = "active"; //$NON-NLS-1$
@ -152,16 +147,17 @@ public class CustomFilterActivity extends ThemedInjectingAppCompatActivity {
setContentView(R.layout.custom_filter_activity);
ButterKnife.bind(this);
setSupportActionBar(toolbar);
ActionBar supportActionBar = getSupportActionBar();
if (supportActionBar != null) {
supportActionBar.setDisplayHomeAsUpEnabled(true);
Drawable drawable = DrawableCompat.wrap(getResources().getDrawable(R.drawable.ic_close_24dp));
DrawableCompat.setTint(drawable, getResources().getColor(android.R.color.white));
supportActionBar.setHomeAsUpIndicator(drawable);
supportActionBar.setTitle(R.string.FLA_new_filter);
}
toolbar.setNavigationIcon(getResources().getDrawable(R.drawable.ic_close_24dp));
toolbar.setTitle(R.string.FLA_new_filter);
toolbar.inflateMenu(R.menu.menu_custom_filter_activity);
toolbar.setOnMenuItemClickListener(this);
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
discard();
}
});
MenuColorizer.colorToolbar(this, toolbar);
listView = (ListView) findViewById(android.R.id.list);
database.openForReading();
@ -352,22 +348,11 @@ public class CustomFilterActivity extends ThemedInjectingAppCompatActivity {
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_custom_filter_activity, menu);
MenuColorizer.colorMenu(this, menu, getResources().getColor(android.R.color.white));
menu.findItem(R.id.delete).setVisible(false);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
discard();
break;
case R.id.menu_save:
saveAndView();
break;
return true;
}
return super.onOptionsItemSelected(item);
}

@ -4,10 +4,13 @@ import android.app.Activity;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.graphics.drawable.DrawableCompat;
import android.text.TextUtils;
import android.util.TypedValue;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
@ -64,8 +67,6 @@ public class CommentBarFragment extends TaskEditControlFragment {
private static final String EXTRA_TEXT = "extra_text";
private static final String EXTRA_PICTURE = "extra_picture";
private final int cameraButton = R.drawable.ic_camera_alt_white_24dp;
@Inject Activity activity;
@Inject DialogBuilder dialogBuilder;
@Inject Device device;
@ -113,6 +114,7 @@ public class CommentBarFragment extends TaskEditControlFragment {
commentBar.setVisibility(View.GONE);
}
resetPictureButton();
return view;
}
@ -184,7 +186,7 @@ public class CommentBarFragment extends TaskEditControlFragment {
@Override
public void clearImage() {
pendingCommentPicture = null;
pictureButton.setImageResource(cameraButton);
resetPictureButton();
}
});
}
@ -233,10 +235,18 @@ public class CommentBarFragment extends TaskEditControlFragment {
}
pendingCommentPicture = null;
pictureButton.setImageResource(cameraButton);
resetPictureButton();
callback.addComment(message, actionCode, picture);
}
private void resetPictureButton() {
TypedValue typedValue = new TypedValue();
getContext().getTheme().resolveAttribute(R.attr.actionBarPrimaryText, typedValue, true);
Drawable drawable = DrawableCompat.wrap(getResources().getDrawable(R.drawable.ic_camera_alt_black_24dp));
drawable.setTint(typedValue.data);
pictureButton.setImageDrawable(drawable);
}
private void showPictureLauncher(final ClearImageCallback clearImageOption) {
final List<Runnable> runnables = new ArrayList<>();
List<String> options = new ArrayList<>();

@ -1,11 +1,9 @@
package org.tasks.injection;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.preference.Preference;
import android.preference.PreferenceCategory;
import android.preference.PreferenceGroup;
import android.support.v4.graphics.drawable.DrawableCompat;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.view.ViewGroup;
@ -15,6 +13,7 @@ import org.tasks.R;
import org.tasks.analytics.Tracker;
import org.tasks.preferences.AppCompatPreferenceActivity;
import org.tasks.themes.Theme;
import org.tasks.ui.MenuColorizer;
import javax.inject.Inject;
@ -48,15 +47,14 @@ public abstract class InjectingPreferenceActivity extends AppCompatPreferenceAct
toolbar = (Toolbar) toolbarContainer.findViewById(R.id.toolbar);
toolbar.setTitle(getTitle());
Drawable drawable = DrawableCompat.wrap(getResources().getDrawable(R.drawable.ic_arrow_back_24dp));
DrawableCompat.setTint(drawable, getResources().getColor(android.R.color.white));
toolbar.setNavigationIcon(drawable);
toolbar.setNavigationIcon(getResources().getDrawable(R.drawable.ic_arrow_back_24dp));
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
MenuColorizer.colorToolbar(this, toolbar);
}
@Override

@ -35,7 +35,9 @@ public class ThemeCache {
colorNames[i],
i,
resolveAttribute(theme, R.attr.colorPrimary),
resolveAttribute(theme, R.attr.colorPrimaryDark)));
resolveAttribute(theme, R.attr.colorPrimaryDark),
resolveAttribute(theme, R.attr.actionBarPrimaryText),
resolveBoolean(theme, R.attr.dark_status_bar)));
}
String[] accentNames = resources.getStringArray(R.array.accents);
for (int i = 0 ; i < ThemeAccent.ACCENTS.length ; i++) {
@ -64,4 +66,10 @@ public class ThemeCache {
theme.resolveAttribute(attribute, typedValue, true);
return typedValue.data;
}
private boolean resolveBoolean(Resources.Theme theme, int attribute) {
TypedValue typedValue = new TypedValue();
theme.resolveAttribute(attribute, typedValue, false);
return typedValue.data != 0;
}
}

@ -5,8 +5,12 @@ import android.app.ActivityManager;
import android.content.Context;
import android.content.res.Resources;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.view.Window;
import org.tasks.R;
import org.tasks.ui.MenuColorizer;
import static com.todoroo.andlib.utility.AndroidUtilities.atLeastLollipop;
@ -37,30 +41,46 @@ public class ThemeColor {
private final String name;
private final int index;
private final int actionBarTint;
private final int style;
private final int colorPrimary;
private final int colorPrimaryDark;
private final boolean isDark;
public ThemeColor(String name, int index, int colorPrimary, int colorPrimaryDark) {
public ThemeColor(String name, int index, int colorPrimary, int colorPrimaryDark, int actionBarTint, boolean isDark) {
this.name = name;
this.index = index;
this.actionBarTint = actionBarTint;
this.style = COLORS[index];
this.colorPrimary = colorPrimary;
this.colorPrimaryDark = colorPrimaryDark;
this.isDark = isDark;
}
public void applyStatusBarColor(Activity activity) {
if (atLeastLollipop()) {
activity.getWindow().setStatusBarColor(getColorPrimaryDark());
Window window = activity.getWindow();
window.setStatusBarColor(getColorPrimaryDark());
View decorView = window.getDecorView();
int systemUiVisibility = applyLightStatusBarFlag(decorView.getSystemUiVisibility());
decorView.setSystemUiVisibility(systemUiVisibility);
}
}
public void applyStatusBarColor(DrawerLayout drawerLayout) {
if (atLeastLollipop()) {
drawerLayout.setStatusBarBackgroundColor(getColorPrimaryDark());
int systemUiVisibility = applyLightStatusBarFlag(drawerLayout.getSystemUiVisibility());
drawerLayout.setSystemUiVisibility(systemUiVisibility);
}
}
private int applyLightStatusBarFlag(int flag) {
return isDark
? flag | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
: flag & ~View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR;
}
public void applyStyle(Context context) {
applyStyle(context.getTheme());
}
@ -87,7 +107,16 @@ public class ThemeColor {
return colorPrimary;
}
public int getActionBarTint() {
return actionBarTint;
}
public int getColorPrimaryDark() {
return colorPrimaryDark;
}
public void apply(Toolbar toolbar) {
toolbar.setBackgroundColor(getPrimaryColor());
MenuColorizer.colorToolbar(toolbar, actionBarTint);
}
}

@ -15,17 +15,17 @@
*/
package org.tasks.ui;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Context;
import android.graphics.PorterDuff;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.support.v4.graphics.drawable.DrawableCompat;
import android.support.v7.widget.Toolbar;
import android.util.TypedValue;
import android.view.Menu;
import android.view.MenuItem;
import android.view.SubMenu;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageButton;
import org.tasks.R;
/**
* Helper class to set the color and transparency for menu icons in an ActionBar/Toolbar.</p>
@ -52,105 +52,42 @@ public class MenuColorizer {
private MenuColorizer() {
}
/** Sets a color filter on all menu icons, including the overflow button (if it exists) */
public static void colorMenu(final Activity activity, final Menu menu, final int color) {
colorMenu(activity, menu, color, 0);
public static void colorToolbar(Context context, Toolbar toolbar) {
TypedValue typedValue = new TypedValue();
context.getTheme().resolveAttribute(R.attr.actionBarPrimaryText, typedValue, true);
colorToolbar(toolbar, typedValue.data);
}
public static void colorToolbar(Toolbar toolbar, int color) {
Drawable wrapped = DrawableCompat.wrap(toolbar.getNavigationIcon());
wrapped.setTint(color);
toolbar.setNavigationIcon(wrapped);
toolbar.setTitleTextColor(color);
colorMenu(toolbar.getMenu(), color);
}
/** Sets a color filter on all menu icons, including the overflow button (if it exists) */
public static void colorMenu(final Activity activity, final Menu menu, final int color,
final int alpha) {
private static void colorMenu(final Menu menu, final int color) {
for (int i = 0, size = menu.size(); i < size; i++) {
final MenuItem menuItem = menu.getItem(i);
colorMenuItem(menuItem, color, alpha);
colorMenuItem(menuItem, color);
if (menuItem.hasSubMenu()) {
final SubMenu subMenu = menuItem.getSubMenu();
for (int j = 0; j < subMenu.size(); j++) {
colorMenuItem(subMenu.getItem(j), color, alpha);
colorMenuItem(subMenu.getItem(j), color);
}
}
}
final View home = activity.findViewById(android.R.id.home);
if (home != null) {
home.post(new Runnable() {
@Override
public void run() {
colorOverflow(activity, color, alpha);
}
});
}
}
/** Sets a color filter on a {@link MenuItem} */
public static void colorMenuItem(final MenuItem menuItem, final int color) {
colorMenuItem(menuItem, color, 0);
}
/** Sets a color filter on a {@link MenuItem} */
public static void colorMenuItem(final MenuItem menuItem, final int color, final int alpha) {
private static void colorMenuItem(final MenuItem menuItem, final int color) {
final Drawable drawable = menuItem.getIcon();
if (drawable != null) {
// If we don't mutate the drawable, then all drawable's with this id will have a color
// filter applied to it.
drawable.mutate();
drawable.setColorFilter(color, PorterDuff.Mode.SRC_ATOP);
if (alpha > 0) {
drawable.setAlpha(alpha);
}
}
}
/** Sets a color filter on the OverflowMenuButton in an ActionBar or Toolbar */
public static void colorOverflow(final Activity activity, final int color) {
colorOverflow(activity, color, 0);
}
/** Sets a color filter on the OverflowMenuButton in an ActionBar or Toolbar */
@SuppressLint("NewApi")
@SuppressWarnings("deprecation")
public static void colorOverflow(final Activity activity, final int color, final int alpha) {
final ImageButton overflow = getOverflowMenu(activity);
if (overflow != null) {
overflow.setColorFilter(color);
if (alpha > 0) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
overflow.setImageAlpha(alpha);
} else {
overflow.setAlpha(alpha);
}
}
drawable.setColorFilter(color, PorterDuff.Mode.SRC_IN);
}
}
/* Find that OverflowMenuButton */
private static ImageButton getOverflowMenu(final Activity activity,
final ViewGroup... viewGroup) {
final ViewGroup group;
if (viewGroup == null || viewGroup.length == 0) {
final int resId = activity.getResources().getIdentifier("action_bar", "id", "android");
if (resId != 0) {
group = (ViewGroup) activity.findViewById(resId);
} else {
group = (ViewGroup) activity.findViewById(android.R.id.content).getRootView();
}
} else {
group = viewGroup[0];
}
ImageButton overflow = null;
for (int i = 0, l = group.getChildCount(); i < l; i++) {
final View v = group.getChildAt(i);
if (v instanceof ImageButton
&& v.getClass().getSimpleName().equals("OverflowMenuButton")) {
overflow = (ImageButton) v;
} else if (v instanceof ViewGroup) {
overflow = getOverflowMenu(activity, (ViewGroup) v);
}
if (overflow != null) {
break;
}
}
return overflow;
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 364 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 446 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 666 B

@ -0,0 +1,6 @@
<vector android:autoMirrored="true" android:height="24dp"
android:viewportHeight="24.0" android:viewportWidth="24.0"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#FF000000" android:pathData="M12,12m-3.2,0a3.2,3.2 0,1 1,6.4 0a3.2,3.2 0,1 1,-6.4 0"/>
<path android:fillColor="#FF000000" android:pathData="M9,2L7.17,4L4,4c-1.1,0 -2,0.9 -2,2v12c0,1.1 0.9,2 2,2h16c1.1,0 2,-0.9 2,-2L22,6c0,-1.1 -0.9,-2 -2,-2h-3.17L15,2L9,2zM12,17c-2.76,0 -5,-2.24 -5,-5s2.24,-5 5,-5 5,2.24 5,5 -2.24,5 -5,5z"/>
</vector>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 240 B

@ -19,7 +19,6 @@
android:layout_height="24dp"
android:layout_gravity="center_vertical"
android:layout_weight="1"
android:src="@drawable/ic_camera_alt_white_24dp"
tools:ignore="ContentDescription" />
<EditText
@ -35,8 +34,8 @@
android:inputType="textCapSentences"
android:paddingLeft="@dimen/keyline_second"
android:paddingStart="@dimen/keyline_second"
android:textColor="@color/white_text"
android:textColorHint="@color/white_text_hint"
android:textColor="?attr/actionBarPrimaryText"
android:textColorHint="?attr/actionBarSecondaryText"
android:textCursorDrawable="@null"
android:textSize="16sp" />
@ -48,7 +47,7 @@
android:layout_weight="1"
android:scaleType="center"
android:src="@drawable/ic_add_24dp"
android:tint="@android:color/white"
android:tint="?attr/actionBarPrimaryText"
android:visibility="gone" />
</LinearLayout>

@ -5,7 +5,6 @@
android:layout_height="wrap_content"
android:background="?attr/colorPrimary"
android:elevation="@dimen/elevation_toolbar"
app:toolbarStyle="@style/Toolbar"
app:toolbarStyle="@style/Widget.AppCompat.Toolbar"
app:popupTheme="?attr/popup_theme"
app:theme="@style/ActionBarThemeOverlay"
app:titleTextAppearance="@style/ActionBar.TitleText" />
app:theme="?attr/overlay_theme" />

@ -8,10 +8,4 @@
android:icon="@drawable/ic_save_24dp"
app:showAsAction="always"/>
<item
android:id="@+id/delete"
android:title="@string/delete"
android:icon="@drawable/ic_delete_24dp"
app:showAsAction="ifRoom" />
</menu>

@ -13,6 +13,10 @@
<attr name="asTextColorHint" format="color" />
<attr name="icon_tint" format="color"/>
<attr name="popup_theme" format="reference" />
<attr name="overlay_theme" format="reference" />
<attr name="actionBarPrimaryText" format="color" />
<attr name="actionBarSecondaryText" format="color" />
<attr name="dark_status_bar" format="boolean" />
<attr name="alpha_primary" format="dimension" />
<attr name="alpha_secondary" format="dimension" />

@ -102,9 +102,16 @@
<color name="white_text">#fff</color>
<color name="white_text_hint">#eee</color>
<color name="black_text">#000</color>
<color name="black_text_hint">#535353</color>
<color name="black_87">#df000000</color>
<color name="black_54">#8c000000</color>
<color name="black_38">#60000000</color>
<color name="black_12">#1e000000</color>
<color name="white_100">#ffffff</color>
<color name="white_70">#b2ffffff</color>
<color name="importance_1">@color/red_500</color>
<color name="importance_2">@color/amber_500</color>
<color name="importance_3">@color/blue_500</color>
@ -114,7 +121,6 @@
<color name="snackbar_background">@color/grey_800</color>
<!-- deprecated -->
<color name="dark_blue_theme_color">#1f78b4</color>
<color name="reminder_background">#262626</color>
</resources>

@ -1,5 +1,4 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<!-- ========================================================== General -->
@ -25,10 +24,28 @@
<item name="android:textColor">?attr/asTextColor</item>
</style>
<style name="ActionBarThemeOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar">
<item name="android:textColorPrimary">#fff</item>
<item name="colorControlNormal">#fff</item>
<item name="colorControlHighlight">#3fff</item>
<style name="WhiteToolbarTheme">
<item name="dark_status_bar">false</item>
<item name="overlay_theme">@style/WhiteToolbarOverlay</item>
<item name="actionBarPrimaryText">@color/white_100</item>
<item name="actionBarSecondaryText">@color/white_70</item>
</style>
<style name="BlackToolbarTheme">
<item name="dark_status_bar">true</item>
<item name="overlay_theme">@style/BlackToolbarOverlay</item>
<item name="actionBarPrimaryText">@color/black_87</item>
<item name="actionBarSecondaryText">@color/black_54</item>
</style>
<style name="WhiteToolbarOverlay" parent="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<!--<item name="android:textColorPrimary">@color/white_100</item>-->
<item name="colorControlNormal">@color/white_100</item>
</style>
<style name="BlackToolbarOverlay" parent="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<!--<item name="android:textColorPrimary">@color/black_87</item>-->
<item name="colorControlNormal">@color/black_87</item>
</style>
<style name="TagSettingsRow">
@ -115,7 +132,7 @@
</style>
<style name="FilePickerTheme" parent="NNF_BaseTheme.Light">
<item name="nnf_toolbarTheme">@style/ActionBarThemeOverlay</item>
<item name="nnf_toolbarTheme">?attr/overlay_theme</item>
</style>
<!-- ========================================================= Premium == -->

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="Amber">
<style name="Amber" parent="BlackToolbarTheme">
<item name="colorPrimary">@color/amber_500</item>
<item name="colorPrimaryDark">@color/amber_700</item>
</style>

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="Blue">
<style name="Blue" parent="WhiteToolbarTheme">
<item name="colorPrimary">@color/blue_500</item>
<item name="colorPrimaryDark">@color/blue_700</item>
</style>

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="BlueGrey">
<style name="BlueGrey" parent="WhiteToolbarTheme">
<item name="colorPrimary">@color/blue_grey_500</item>
<item name="colorPrimaryDark">@color/blue_grey_700</item>
</style>

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="Brown">
<style name="Brown" parent="WhiteToolbarTheme">
<item name="colorPrimary">@color/brown_500</item>
<item name="colorPrimaryDark">@color/brown_700</item>
</style>

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="Cyan">
<style name="Cyan" parent="BlackToolbarTheme">
<item name="colorPrimary">@color/cyan_500</item>
<item name="colorPrimaryDark">@color/cyan_700</item>
</style>

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="DarkGrey">
<style name="DarkGrey" parent="WhiteToolbarTheme">
<item name="colorPrimary">@color/grey_900</item>
<item name="colorPrimaryDark">@android:color/black</item>
</style>

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="DeepOrange">
<style name="DeepOrange" parent="WhiteToolbarTheme">
<item name="colorPrimary">@color/deep_orange_500</item>
<item name="colorPrimaryDark">@color/deep_orange_700</item>
</style>

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="DeepPurple">
<style name="DeepPurple" parent="WhiteToolbarTheme">
<item name="colorPrimary">@color/deep_purple_500</item>
<item name="colorPrimaryDark">@color/deep_purple_700</item>
</style>

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="Green">
<style name="Green" parent="BlackToolbarTheme">
<item name="colorPrimary">@color/green_500</item>
<item name="colorPrimaryDark">@color/green_700</item>
</style>

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="Grey">
<style name="Grey" parent="BlackToolbarTheme">
<item name="colorPrimary">@color/grey_500</item>
<item name="colorPrimaryDark">@color/grey_700</item>
</style>

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="Indigo">
<style name="Indigo" parent="WhiteToolbarTheme">
<item name="colorPrimary">@color/indigo_500</item>
<item name="colorPrimaryDark">@color/indigo_700</item>
</style>

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="LightBlue">
<style name="LightBlue" parent="BlackToolbarTheme">
<item name="colorPrimary">@color/light_blue_500</item>
<item name="colorPrimaryDark">@color/light_blue_700</item>
</style>

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="LightGreen">
<style name="LightGreen" parent="BlackToolbarTheme">
<item name="colorPrimary">@color/light_green_500</item>
<item name="colorPrimaryDark">@color/light_green_700</item>
</style>

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="Lime">
<style name="Lime" parent="BlackToolbarTheme">
<item name="colorPrimary">@color/lime_500</item>
<item name="colorPrimaryDark">@color/lime_700</item>
</style>

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="Orange">
<style name="Orange" parent="BlackToolbarTheme">
<item name="colorPrimary">@color/orange_500</item>
<item name="colorPrimaryDark">@color/orange_700</item>
</style>

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="Pink">
<style name="Pink" parent="WhiteToolbarTheme">
<item name="colorPrimary">@color/pink_500</item>
<item name="colorPrimaryDark">@color/pink_700</item>
</style>

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="Purple">
<style name="Purple" parent="WhiteToolbarTheme">
<item name="colorPrimary">@color/purple_500</item>
<item name="colorPrimaryDark">@color/purple_700</item>
</style>

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="Red">
<style name="Red" parent="WhiteToolbarTheme">
<item name="colorPrimary">@color/red_500</item>
<item name="colorPrimaryDark">@color/red_700</item>
</style>

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="Teal">
<style name="Teal" parent="WhiteToolbarTheme">
<item name="colorPrimary">@color/teal_500</item>
<item name="colorPrimaryDark">@color/teal_700</item>
</style>

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="Yellow">
<style name="Yellow" parent="BlackToolbarTheme">
<item name="colorPrimary">@color/yellow_500</item>
<item name="colorPrimaryDark">@color/yellow_700</item>
</style>

Loading…
Cancel
Save