diff --git a/app/src/main/java/com/keylesspalace/tusky/MainActivity.java b/app/src/main/java/com/keylesspalace/tusky/MainActivity.java index 5ef86cbfc..b74a62478 100644 --- a/app/src/main/java/com/keylesspalace/tusky/MainActivity.java +++ b/app/src/main/java/com/keylesspalace/tusky/MainActivity.java @@ -64,7 +64,7 @@ public class MainActivity extends AppCompatActivity { setSupportActionBar(toolbar); // Setup the tabs and timeline pager. - TimelinePagerAdapter adapter = new TimelinePagerAdapter(getSupportFragmentManager()); + TimelinePagerAdapter adapter = new TimelinePagerAdapter(getSupportFragmentManager(), this); String[] pageTitles = { getString(R.string.title_home), getString(R.string.title_notifications), @@ -72,13 +72,18 @@ public class MainActivity extends AppCompatActivity { }; adapter.setPageTitles(pageTitles); ViewPager viewPager = (ViewPager) findViewById(R.id.pager); - int pageMargin = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 8, - getResources().getDisplayMetrics()); + int pageMargin = getResources().getDimensionPixelSize(R.dimen.tab_page_margin); viewPager.setPageMargin(pageMargin); viewPager.setPageMarginDrawable(R.drawable.tab_page_margin); viewPager.setAdapter(adapter); TabLayout tabLayout = (TabLayout) findViewById(R.id.tab_layout); tabLayout.setupWithViewPager(viewPager); + for (int i = 0; i < tabLayout.getTabCount(); i++) { + TabLayout.Tab tab = tabLayout.getTabAt(i); + if (tab != null) { + tab.setCustomView(adapter.getTabView(i)); + } + } // Retrieve notification update preference. SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this); diff --git a/app/src/main/java/com/keylesspalace/tusky/NotificationsFragment.java b/app/src/main/java/com/keylesspalace/tusky/NotificationsFragment.java index b815a7cd1..b14ff2113 100644 --- a/app/src/main/java/com/keylesspalace/tusky/NotificationsFragment.java +++ b/app/src/main/java/com/keylesspalace/tusky/NotificationsFragment.java @@ -19,6 +19,7 @@ import android.content.Context; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.support.annotation.Nullable; +import android.support.design.widget.TabLayout; import android.support.v4.content.ContextCompat; import android.support.v4.widget.SwipeRefreshLayout; import android.support.v7.widget.DividerItemDecoration; @@ -47,7 +48,10 @@ public class NotificationsFragment extends SFragment implements private SwipeRefreshLayout swipeRefreshLayout; private RecyclerView recyclerView; + private LinearLayoutManager layoutManager; + private EndlessOnScrollListener scrollListener; private NotificationsAdapter adapter; + private TabLayout.OnTabSelectedListener onTabSelectedListener; public static NotificationsFragment newInstance() { NotificationsFragment fragment = new NotificationsFragment(); @@ -69,14 +73,14 @@ public class NotificationsFragment extends SFragment implements // Setup the RecyclerView. recyclerView = (RecyclerView) rootView.findViewById(R.id.recycler_view); recyclerView.setHasFixedSize(true); - LinearLayoutManager layoutManager = new LinearLayoutManager(context); + layoutManager = new LinearLayoutManager(context); recyclerView.setLayoutManager(layoutManager); DividerItemDecoration divider = new DividerItemDecoration( context, layoutManager.getOrientation()); Drawable drawable = ContextCompat.getDrawable(context, R.drawable.status_divider); divider.setDrawable(drawable); recyclerView.addItemDecoration(divider); - EndlessOnScrollListener scrollListener = new EndlessOnScrollListener(layoutManager) { + scrollListener = new EndlessOnScrollListener(layoutManager) { @Override public void onLoadMore(int page, int totalItemsCount, RecyclerView view) { NotificationsAdapter adapter = (NotificationsAdapter) view.getAdapter(); @@ -92,11 +96,38 @@ public class NotificationsFragment extends SFragment implements adapter = new NotificationsAdapter(this, this); recyclerView.setAdapter(adapter); + TabLayout layout = (TabLayout) getActivity().findViewById(R.id.tab_layout); + onTabSelectedListener = new TabLayout.OnTabSelectedListener() { + @Override + public void onTabSelected(TabLayout.Tab tab) {} + + @Override + public void onTabUnselected(TabLayout.Tab tab) {} + + @Override + public void onTabReselected(TabLayout.Tab tab) { + jumpToTop(); + } + }; + layout.addOnTabSelectedListener(onTabSelectedListener); + sendFetchNotificationsRequest(); return rootView; } + @Override + public void onDestroyView() { + TabLayout tabLayout = (TabLayout) getActivity().findViewById(R.id.tab_layout); + tabLayout.removeOnTabSelectedListener(onTabSelectedListener); + super.onDestroyView(); + } + + private void jumpToTop() { + layoutManager.scrollToPosition(0); + scrollListener.reset(); + } + private void sendFetchNotificationsRequest(final String fromId) { String endpoint = getString(R.string.endpoint_notifications); String url = "https://" + domain + endpoint; diff --git a/app/src/main/java/com/keylesspalace/tusky/PullNotificationService.java b/app/src/main/java/com/keylesspalace/tusky/PullNotificationService.java index d69189c5f..94862aded 100644 --- a/app/src/main/java/com/keylesspalace/tusky/PullNotificationService.java +++ b/app/src/main/java/com/keylesspalace/tusky/PullNotificationService.java @@ -182,7 +182,7 @@ public class PullNotificationService extends IntentService { mentions.get(0).displayName); } NotificationCompat.Builder builder = new NotificationCompat.Builder(this) - .setSmallIcon(R.drawable.ic_notify_mention) + .setSmallIcon(R.mipmap.ic_notify) .setContentTitle(title); if (icon != null) { builder.setLargeIcon(icon); diff --git a/app/src/main/java/com/keylesspalace/tusky/SFragment.java b/app/src/main/java/com/keylesspalace/tusky/SFragment.java index a4652ec78..a139c5efc 100644 --- a/app/src/main/java/com/keylesspalace/tusky/SFragment.java +++ b/app/src/main/java/com/keylesspalace/tusky/SFragment.java @@ -82,7 +82,7 @@ public class SFragment extends Fragment { new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { - Log.e(TAG, error.getMessage()); + Log.e(TAG, "Request Failed: " + error.getMessage()); } }) { @Override diff --git a/app/src/main/java/com/keylesspalace/tusky/StatusButton.java b/app/src/main/java/com/keylesspalace/tusky/StatusButton.java new file mode 100644 index 000000000..926c1224d --- /dev/null +++ b/app/src/main/java/com/keylesspalace/tusky/StatusButton.java @@ -0,0 +1,54 @@ +/* Copyright 2017 Andrew Dawson + * + * This file is part of Tusky. + * + * Tusky is free software: you can redistribute it and/or modify it under the terms of the GNU + * General Public License as published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * Tusky is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even + * the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General + * Public License for more details. + * + * You should have received a copy of the GNU General Public License along with Tusky. If not, see + * . */ + +package com.keylesspalace.tusky; + +import android.content.Context; +import android.content.res.TypedArray; +import android.support.v7.widget.AppCompatImageButton; +import android.util.AttributeSet; + +public class StatusButton extends AppCompatImageButton { + private static final int[] STATE_MARKED = { R.attr.state_marked }; + + private boolean marked; + + public StatusButton(Context context, AttributeSet attributeSet) { + super(context, attributeSet); + TypedArray array = context.getTheme().obtainStyledAttributes( + attributeSet, R.styleable.StatusButton, 0, 0); + try { + marked = array.getBoolean(R.styleable.StatusButton_state_marked, false); + } finally { + array.recycle(); + } + } + + @Override + public int[] onCreateDrawableState(int extraSpace) { + if (marked) { + extraSpace += 1; + } + int[] drawableState = super.onCreateDrawableState(extraSpace); + if (marked) { + mergeDrawableStates(drawableState, STATE_MARKED); + } + return drawableState; + } + + public void setMarked(boolean marked) { + this.marked = marked; + } +} diff --git a/app/src/main/java/com/keylesspalace/tusky/StatusViewHolder.java b/app/src/main/java/com/keylesspalace/tusky/StatusViewHolder.java index 62f488253..7383214f4 100644 --- a/app/src/main/java/com/keylesspalace/tusky/StatusViewHolder.java +++ b/app/src/main/java/com/keylesspalace/tusky/StatusViewHolder.java @@ -42,11 +42,11 @@ public class StatusViewHolder extends RecyclerView.ViewHolder { private TextView sinceCreated; private TextView content; private NetworkImageView avatar; - private ImageView boostedIcon; - private TextView boostedByUsername; + private View rebloggedBar; + private TextView rebloggedByUsername; private ImageButton replyButton; - private ImageButton reblogButton; - private ImageButton favouriteButton; + private StatusButton reblogButton; + private StatusButton favouriteButton; private ImageButton moreButton; private boolean favourited; private boolean reblogged; @@ -69,11 +69,11 @@ public class StatusViewHolder extends RecyclerView.ViewHolder { avatar = (NetworkImageView) itemView.findViewById(R.id.status_avatar); avatar.setDefaultImageResId(R.drawable.avatar_default); avatar.setErrorImageResId(R.drawable.avatar_error); - boostedIcon = (ImageView) itemView.findViewById(R.id.status_boosted_icon); - boostedByUsername = (TextView) itemView.findViewById(R.id.status_boosted); + rebloggedBar = itemView.findViewById(R.id.status_reblogged_bar); + rebloggedByUsername = (TextView) itemView.findViewById(R.id.status_reblogged); replyButton = (ImageButton) itemView.findViewById(R.id.status_reply); - reblogButton = (ImageButton) itemView.findViewById(R.id.status_reblog); - favouriteButton = (ImageButton) itemView.findViewById(R.id.status_favourite); + reblogButton = (StatusButton) itemView.findViewById(R.id.status_reblog); + favouriteButton = (StatusButton) itemView.findViewById(R.id.status_favourite); moreButton = (ImageButton) itemView.findViewById(R.id.status_more); reblogged = false; favourited = false; @@ -175,40 +175,34 @@ public class StatusViewHolder extends RecyclerView.ViewHolder { } public void setRebloggedByUsername(String name) { - Context context = boostedByUsername.getContext(); + Context context = rebloggedByUsername.getContext(); String format = context.getString(R.string.status_boosted_format); String boostedText = String.format(format, name); - boostedByUsername.setText(boostedText); - boostedIcon.setVisibility(View.VISIBLE); - boostedByUsername.setVisibility(View.VISIBLE); + rebloggedByUsername.setText(boostedText); + rebloggedBar.setVisibility(View.VISIBLE); } public void hideRebloggedByUsername() { - boostedIcon.setVisibility(View.GONE); - boostedByUsername.setVisibility(View.GONE); + rebloggedBar.setVisibility(View.GONE); } public void setReblogged(boolean reblogged) { this.reblogged = reblogged; - if (!reblogged) { - reblogButton.setImageResource(R.drawable.ic_reblog_off); - } else { - reblogButton.setImageResource(R.drawable.ic_reblog_on); - } + reblogButton.setMarked(reblogged); } - public void disableReblogging() { - reblogButton.setEnabled(false); - reblogButton.setImageResource(R.drawable.ic_reblog_disabled); + public void setRebloggingEnabled(boolean enabled) { + reblogButton.setEnabled(enabled); + if (enabled) { + reblogButton.setImageResource(R.drawable.ic_reblog); + } else { + reblogButton.setImageResource(R.drawable.ic_reblog_disabled); + } } public void setFavourited(boolean favourited) { this.favourited = favourited; - if (!favourited) { - favouriteButton.setImageResource(R.drawable.ic_favourite_off); - } else { - favouriteButton.setImageResource(R.drawable.ic_favourite_on); - } + favouriteButton.setMarked(favourited); } public void setMediaPreviews(final Status.MediaAttachment[] attachments, @@ -353,9 +347,7 @@ public class StatusViewHolder extends RecyclerView.ViewHolder { hideSensitiveMediaWarning(); } setupButtons(listener, position); - if (status.getVisibility() == Status.Visibility.PRIVATE) { - disableReblogging(); - } + setRebloggingEnabled(status.getVisibility() != Status.Visibility.PRIVATE); if (status.getSpoilerText().isEmpty()) { hideSpoilerText(); } else { diff --git a/app/src/main/java/com/keylesspalace/tusky/TimelineFragment.java b/app/src/main/java/com/keylesspalace/tusky/TimelineFragment.java index dcef65534..8fe9ad47c 100644 --- a/app/src/main/java/com/keylesspalace/tusky/TimelineFragment.java +++ b/app/src/main/java/com/keylesspalace/tusky/TimelineFragment.java @@ -157,7 +157,7 @@ public class TimelineFragment extends SFragment implements } private void jumpToTop() { - layoutManager.scrollToPositionWithOffset(0, 0); + layoutManager.scrollToPosition(0); scrollListener.reset(); } @@ -241,7 +241,7 @@ public class TimelineFragment extends SFragment implements public void onFetchTimelineFailure(Exception exception) { setFetchTimelineState(FooterViewHolder.State.RETRY); swipeRefreshLayout.setRefreshing(false); - Log.e(TAG, exception.getMessage()); + Log.e(TAG, "Fetch Failure: " + exception.getMessage()); } private void setFetchTimelineState(FooterViewHolder.State state) { diff --git a/app/src/main/java/com/keylesspalace/tusky/TimelinePagerAdapter.java b/app/src/main/java/com/keylesspalace/tusky/TimelinePagerAdapter.java index 35e5921e4..3ce1b4bd8 100644 --- a/app/src/main/java/com/keylesspalace/tusky/TimelinePagerAdapter.java +++ b/app/src/main/java/com/keylesspalace/tusky/TimelinePagerAdapter.java @@ -15,15 +15,21 @@ package com.keylesspalace.tusky; +import android.content.Context; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter; +import android.view.LayoutInflater; +import android.view.View; +import android.widget.TextView; public class TimelinePagerAdapter extends FragmentPagerAdapter { private String[] pageTitles; + private Context context; - public TimelinePagerAdapter(FragmentManager manager) { + public TimelinePagerAdapter(FragmentManager manager, Context context) { super(manager); + this.context = context; } public void setPageTitles(String[] titles) { @@ -57,4 +63,11 @@ public class TimelinePagerAdapter extends FragmentPagerAdapter { public CharSequence getPageTitle(int position) { return pageTitles[position]; } + + public View getTabView(int position) { + View view = LayoutInflater.from(context).inflate(R.layout.tab_main, null); + TextView title = (TextView) view.findViewById(R.id.title); + title.setText(pageTitles[position]); + return view; + } } diff --git a/app/src/main/res/color/favourite_button_dark.xml b/app/src/main/res/color/favourite_button_dark.xml new file mode 100644 index 000000000..fe6dc5a86 --- /dev/null +++ b/app/src/main/res/color/favourite_button_dark.xml @@ -0,0 +1,7 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/color/reblog_button_dark.xml b/app/src/main/res/color/reblog_button_dark.xml new file mode 100644 index 000000000..cd05a725a --- /dev/null +++ b/app/src/main/res/color/reblog_button_dark.xml @@ -0,0 +1,8 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_extra.xml b/app/src/main/res/drawable/ic_extra.xml index a87c95d53..62fddb87f 100644 --- a/app/src/main/res/drawable/ic_extra.xml +++ b/app/src/main/res/drawable/ic_extra.xml @@ -1,15 +1,7 @@ - - - - + + diff --git a/app/src/main/res/drawable/ic_favourite.xml b/app/src/main/res/drawable/ic_favourite.xml new file mode 100644 index 000000000..24478b8b5 --- /dev/null +++ b/app/src/main/res/drawable/ic_favourite.xml @@ -0,0 +1,7 @@ + + + diff --git a/app/src/main/res/drawable/ic_favourite_off.xml b/app/src/main/res/drawable/ic_favourite_off.xml deleted file mode 100644 index 7a171bea2..000000000 --- a/app/src/main/res/drawable/ic_favourite_off.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_favourite_on.xml b/app/src/main/res/drawable/ic_favourite_on.xml deleted file mode 100644 index 7ebaaee58..000000000 --- a/app/src/main/res/drawable/ic_favourite_on.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_favourited.xml b/app/src/main/res/drawable/ic_favourited.xml index 62dc11019..fe780bc2b 100644 --- a/app/src/main/res/drawable/ic_favourited.xml +++ b/app/src/main/res/drawable/ic_favourited.xml @@ -1,7 +1,7 @@ - diff --git a/app/src/main/res/drawable/ic_followed.xml b/app/src/main/res/drawable/ic_followed.xml index a586267b6..bdef7ee81 100644 --- a/app/src/main/res/drawable/ic_followed.xml +++ b/app/src/main/res/drawable/ic_followed.xml @@ -1,6 +1,6 @@ - diff --git a/app/src/main/res/drawable/ic_media.xml b/app/src/main/res/drawable/ic_media.xml index 536586573..ee873111f 100644 --- a/app/src/main/res/drawable/ic_media.xml +++ b/app/src/main/res/drawable/ic_media.xml @@ -2,30 +2,30 @@ android:viewportWidth="1134.6519" android:width="48dp" xmlns:android="http://schemas.android.com/apk/res/android"> diff --git a/app/src/main/res/drawable/ic_options.xml b/app/src/main/res/drawable/ic_options.xml index 7981620bc..b4f39bea5 100644 --- a/app/src/main/res/drawable/ic_options.xml +++ b/app/src/main/res/drawable/ic_options.xml @@ -2,6 +2,6 @@ android:viewportWidth="1133.8583" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android"> diff --git a/app/src/main/res/drawable/ic_reblog.xml b/app/src/main/res/drawable/ic_reblog.xml new file mode 100644 index 000000000..3666855fa --- /dev/null +++ b/app/src/main/res/drawable/ic_reblog.xml @@ -0,0 +1,7 @@ + + + diff --git a/app/src/main/res/drawable/ic_reblog_disabled.xml b/app/src/main/res/drawable/ic_reblog_disabled.xml index 8d1960db3..afafe08e4 100644 --- a/app/src/main/res/drawable/ic_reblog_disabled.xml +++ b/app/src/main/res/drawable/ic_reblog_disabled.xml @@ -1,11 +1,7 @@ - - - + + diff --git a/app/src/main/res/drawable/ic_reblog_off.xml b/app/src/main/res/drawable/ic_reblog_off.xml deleted file mode 100644 index bae42451b..000000000 --- a/app/src/main/res/drawable/ic_reblog_off.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - diff --git a/app/src/main/res/drawable/ic_reblog_on.xml b/app/src/main/res/drawable/ic_reblog_on.xml deleted file mode 100644 index 516a346be..000000000 --- a/app/src/main/res/drawable/ic_reblog_on.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - diff --git a/app/src/main/res/drawable/ic_reblogged.xml b/app/src/main/res/drawable/ic_reblogged.xml index 18fcfcd65..1f9d8b640 100644 --- a/app/src/main/res/drawable/ic_reblogged.xml +++ b/app/src/main/res/drawable/ic_reblogged.xml @@ -1,7 +1,7 @@ - diff --git a/app/src/main/res/drawable/ic_reply.xml b/app/src/main/res/drawable/ic_reply.xml index 03247650f..3df673b9c 100644 --- a/app/src/main/res/drawable/ic_reply.xml +++ b/app/src/main/res/drawable/ic_reply.xml @@ -1,7 +1,7 @@ - - + + diff --git a/app/src/main/res/drawable/splash_background.xml b/app/src/main/res/drawable/splash_background.xml index a52d78a04..fb783fdf3 100644 --- a/app/src/main/res/drawable/splash_background.xml +++ b/app/src/main/res/drawable/splash_background.xml @@ -1,6 +1,6 @@ - + - + \ No newline at end of file diff --git a/app/src/main/res/drawable/tab_page_margin.xml b/app/src/main/res/drawable/tab_page_margin.xml index ebad62bde..cc7950441 100644 --- a/app/src/main/res/drawable/tab_page_margin.xml +++ b/app/src/main/res/drawable/tab_page_margin.xml @@ -1,5 +1,5 @@ - + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_account.xml b/app/src/main/res/layout/activity_account.xml index 5169d5964..02f73c956 100644 --- a/app/src/main/res/layout/activity_account.xml +++ b/app/src/main/res/layout/activity_account.xml @@ -23,7 +23,7 @@ android:layout_height="wrap_content" android:orientation="vertical" android:layout_marginTop="?attr/actionBarSize" - android:background="@color/account_header_background"> + android:background="?attr/account_header_background_color"> diff --git a/app/src/main/res/layout/activity_compose.xml b/app/src/main/res/layout/activity_compose.xml index 4e1d5468d..8238b6c0a 100644 --- a/app/src/main/res/layout/activity_compose.xml +++ b/app/src/main/res/layout/activity_compose.xml @@ -15,7 +15,7 @@ android:layout_width="48dp" android:layout_height="48dp" app:srcCompat="@drawable/media_selector" - style="?android:attr/borderlessButtonStyle" + style="?attr/image_button_style" android:id="@+id/compose_photo_pick" android:layout_marginLeft="8dp" /> @@ -24,7 +24,7 @@ android:layout_height="48dp" android:id="@+id/compose_options" app:srcCompat="@drawable/ic_options" - style="?android:attr/borderlessButtonStyle" + style="?attr/image_button_style" android:layout_marginLeft="8dp" /> diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml index e7d97d290..b913af609 100644 --- a/app/src/main/res/layout/activity_login.xml +++ b/app/src/main/res/layout/activity_login.xml @@ -1,7 +1,6 @@ + android:background="@color/colorPrimary" + android:elevation="4dp" /> + android:background="@color/colorPrimary" + android:elevation="4dp" /> + android:background="@color/colorPrimary" + android:elevation="4dp" /> + android:background="@color/colorPrimary" + android:elevation="4dp" /> - - - - - + android:id="@+id/follow_icon" + app:srcCompat="@drawable/ic_followed" + android:paddingTop="@dimen/notification_icon_vertical_padding" + android:paddingBottom="@dimen/notification_icon_vertical_padding" + android:paddingRight="@dimen/status_avatar_padding" + android:paddingLeft="@dimen/follow_icon_left_padding" + android:tint="?attr/notification_icon_tint" /> + android:layout_centerVertical="true" + android:layout_toRightOf="@id/follow_icon" /> \ No newline at end of file diff --git a/app/src/main/res/layout/item_status.xml b/app/src/main/res/layout/item_status.xml index a89d54302..98459f67a 100644 --- a/app/src/main/res/layout/item_status.xml +++ b/app/src/main/res/layout/item_status.xml @@ -5,38 +5,37 @@ android:layout_height="wrap_content" android:id="@+id/status_container"> - + android:layout_alignParentLeft="true" + android:layout_marginTop="@dimen/status_reblogged_bar_top_padding"> - + + + + + + android:layout_below="@+id/status_reblogged_bar" + android:layout_width="wrap_content" + android:paddingTop="@dimen/status_avatar_padding"> + android:paddingLeft="@dimen/status_username_left_margin" + android:textColor="?attr/status_text_color_secondary" /> + android:paddingLeft="@dimen/status_since_created_left_margin" + android:textColor="?attr/status_text_color_secondary" /> @@ -92,7 +94,7 @@ android:id="@+id/status_content_warning_button" android:textOn="@string/status_content_warning_show_less" android:textOff="@string/status_content_warning_show_more" - android:background="@drawable/toggle_small" + android:background="?attr/content_warning_button" android:padding="4dp" /> @@ -196,7 +198,7 @@ @@ -205,10 +207,10 @@ android:layout_height="match_parent" android:layout_weight="1" /> - @@ -217,12 +219,12 @@ android:layout_height="match_parent" android:layout_weight="1" /> - + style="?attr/favourite_button_style" + app:srcCompat="@drawable/ic_favourite" + android:id="@+id/status_favourite" /> diff --git a/app/src/main/res/layout/item_status_notification.xml b/app/src/main/res/layout/item_status_notification.xml index 3e6bc7c49..02f630f6f 100644 --- a/app/src/main/res/layout/item_status_notification.xml +++ b/app/src/main/res/layout/item_status_notification.xml @@ -1,13 +1,13 @@ - + android:id="@+id/notification_top_bar"> + android:tint="?attr/notification_icon_tint" /> + + - - - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/tab_main.xml b/app/src/main/res/layout/tab_main.xml new file mode 100644 index 000000000..d0e481be3 --- /dev/null +++ b/app/src/main/res/layout/tab_main.xml @@ -0,0 +1,15 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-hdpi/ic_notify.png b/app/src/main/res/mipmap-hdpi/ic_notify.png new file mode 100644 index 000000000..14b0e5e7d Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/ic_notify.png differ diff --git a/app/src/main/res/mipmap-ldpi/ic_notify.png b/app/src/main/res/mipmap-ldpi/ic_notify.png new file mode 100644 index 000000000..af1bb099d Binary files /dev/null and b/app/src/main/res/mipmap-ldpi/ic_notify.png differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_notify.png b/app/src/main/res/mipmap-xhdpi/ic_notify.png new file mode 100644 index 000000000..7e7fce56a Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/ic_notify.png differ diff --git a/app/src/main/res/values/attrs.xml b/app/src/main/res/values/attrs.xml index bab03a567..541c3228c 100644 --- a/app/src/main/res/values/attrs.xml +++ b/app/src/main/res/values/attrs.xml @@ -1,7 +1,25 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 6259a4548..003920a1f 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -1,13 +1,21 @@ - #3F51B5 - #303F9F - #FF4081 - #4F4F4F + #44A673 + #2C996E + #3F8A65 + #3C4945 + #191E1E + #4F4F4F + #3F8A65 + #CFCFCF #000000 #303030 - #DFDFDF - #4F5F6F + #2F2F2F + #AFBFCF #9F9F9F - #FFFFFF + #CFCFCF + #A4B4BC + #000000 + #4C534B + #000000 diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index cb38da87f..96aad150e 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -3,9 +3,9 @@ 0dp 4dp 4dp - 56dp 8dp - 5dp + 8dp + 40dp 4dp 96dp 8dp @@ -13,7 +13,11 @@ 16dp 48dp 8dp - 4dp + 8dp + 40dp + 64dp + 40dp 8dp 8dp + 8dp diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index f3b6bd2a6..4f5fbbfc4 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -1,10 +1,51 @@ - - + + + + + + + +