Merge branch 'Gargron-master'

This commit is contained in:
Vavassor 2017-03-07 22:35:02 -05:00
commit 7519ad5455
15 changed files with 130 additions and 51 deletions

View file

@ -32,5 +32,7 @@ dependencies {
compile 'com.android.volley:volley:1.0.0' compile 'com.android.volley:volley:1.0.0'
compile 'com.squareup.picasso:picasso:2.5.2' compile 'com.squareup.picasso:picasso:2.5.2'
compile 'com.pkmmte.view:circularimageview:1.1' compile 'com.pkmmte.view:circularimageview:1.1'
compile 'com.github.peter9870:sparkbutton:master'
testCompile 'junit:junit:4.12' testCompile 'junit:junit:4.12'
compile 'com.mikhaellopez:circularfillableloaders:1.2.0'
} }

View file

@ -14,7 +14,7 @@
android:theme="@style/AppTheme"> android:theme="@style/AppTheme">
<activity <activity
android:name=".SplashActivity" android:name=".SplashActivity"
android:theme="@style/SplashTheme"> android:theme="@android:style/Theme.Black.NoTitleBar">
<intent-filter> <intent-filter>
<action android:name="android.intent.action.MAIN" /> <action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" /> <category android:name="android.intent.category.LAUNCHER" />

View file

@ -15,29 +15,43 @@
package com.keylesspalace.tusky; package com.keylesspalace.tusky;
import android.app.Activity;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler;
import android.support.v7.app.AppCompatActivity; import android.support.v7.app.AppCompatActivity;
public class SplashActivity extends AppCompatActivity { public class SplashActivity extends Activity {
private static int SPLASH_TIME_OUT = 2000;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash);
/* Determine whether the user is currently logged in, and if so go ahead and load the /* Determine whether the user is currently logged in, and if so go ahead and load the
* timeline. Otherwise, start the activity_login screen. */ * timeline. Otherwise, start the activity_login screen. */
SharedPreferences preferences = getSharedPreferences( SharedPreferences preferences = getSharedPreferences(
getString(R.string.preferences_file_key), Context.MODE_PRIVATE); getString(R.string.preferences_file_key), Context.MODE_PRIVATE);
String domain = preferences.getString("domain", null); String domain = preferences.getString("domain", null);
String accessToken = preferences.getString("accessToken", null); String accessToken = preferences.getString("accessToken", null);
Intent intent;
final Intent intent;
if (domain != null && accessToken != null) { if (domain != null && accessToken != null) {
intent = new Intent(this, MainActivity.class); intent = new Intent(this, MainActivity.class);
} else { } else {
intent = new Intent(this, LoginActivity.class); intent = new Intent(this, LoginActivity.class);
} }
startActivity(intent);
finish(); new Handler().postDelayed(new Runnable() {
@Override
public void run() {
startActivity(intent);
finish();
}
}, SPLASH_TIME_OUT);
} }
} }

View file

@ -34,6 +34,9 @@ import android.widget.ToggleButton;
import com.android.volley.toolbox.ImageLoader; import com.android.volley.toolbox.ImageLoader;
import com.android.volley.toolbox.NetworkImageView; import com.android.volley.toolbox.NetworkImageView;
import com.squareup.picasso.Picasso; import com.squareup.picasso.Picasso;
import com.varunest.sparkbutton.SparkButton;
import com.varunest.sparkbutton.SparkButtonBuilder;
import com.varunest.sparkbutton.SparkEventListener;
import java.util.Date; import java.util.Date;
@ -47,8 +50,8 @@ class StatusViewHolder extends RecyclerView.ViewHolder {
private View rebloggedBar; private View rebloggedBar;
private TextView rebloggedByDisplayName; private TextView rebloggedByDisplayName;
private ImageButton replyButton; private ImageButton replyButton;
private ImageButton reblogButton; private SparkButton reblogButton;
private ImageButton favouriteButton; private SparkButton favouriteButton;
private ImageButton moreButton; private ImageButton moreButton;
private boolean favourited; private boolean favourited;
private boolean reblogged; private boolean reblogged;
@ -72,8 +75,8 @@ class StatusViewHolder extends RecyclerView.ViewHolder {
rebloggedBar = itemView.findViewById(R.id.status_reblogged_bar); rebloggedBar = itemView.findViewById(R.id.status_reblogged_bar);
rebloggedByDisplayName = (TextView) itemView.findViewById(R.id.status_reblogged); rebloggedByDisplayName = (TextView) itemView.findViewById(R.id.status_reblogged);
replyButton = (ImageButton) itemView.findViewById(R.id.status_reply); replyButton = (ImageButton) itemView.findViewById(R.id.status_reply);
reblogButton = (ImageButton) itemView.findViewById(R.id.status_reblog); reblogButton = (SparkButton) itemView.findViewById(R.id.status_reblog);
favouriteButton = (ImageButton) itemView.findViewById(R.id.status_favourite); favouriteButton = (SparkButton) itemView.findViewById(R.id.status_favourite);
moreButton = (ImageButton) itemView.findViewById(R.id.status_more); moreButton = (ImageButton) itemView.findViewById(R.id.status_more);
reblogged = false; reblogged = false;
favourited = false; favourited = false;
@ -187,35 +190,25 @@ class StatusViewHolder extends RecyclerView.ViewHolder {
private void setReblogged(boolean reblogged) { private void setReblogged(boolean reblogged) {
this.reblogged = reblogged; this.reblogged = reblogged;
int attribute; reblogButton.setChecked(reblogged);
if (reblogged) {
attribute = R.attr.status_reblog_button_marked_tint;
} else {
attribute = R.attr.status_reblog_button_tint;
}
ThemeUtils.setImageViewTint(reblogButton, attribute);
} }
/** This should only be called after setReblogged, in order to override the tint correctly. */ /** This should only be called after setReblogged, in order to override the tint correctly. */
private void setRebloggingEnabled(boolean enabled) { private void setRebloggingEnabled(boolean enabled) {
reblogButton.setEnabled(enabled); reblogButton.setEnabled(enabled);
if (enabled) { if (enabled) {
reblogButton.setImageResource(R.drawable.ic_repeat_24dp); reblogButton.setInactiveImage(R.drawable.reblog_inactive);
reblogButton.setActiveImage(R.drawable.reblog_active);
} else { } else {
ThemeUtils.setImageViewTint(reblogButton, R.attr.status_reblog_button_disabled_tint); reblogButton.setInactiveImage(R.drawable.reblog_disabled);
reblogButton.setImageResource(R.drawable.ic_lock_24dp); reblogButton.setActiveImage(R.drawable.reblog_disabled);
} }
} }
private void setFavourited(boolean favourited) { private void setFavourited(boolean favourited) {
this.favourited = favourited; this.favourited = favourited;
int attribute; favouriteButton.setChecked(favourited);
if (favourited) {
attribute = R.attr.status_favourite_button_marked_tint;
} else {
attribute = R.attr.status_favourite_button_tint;
}
ThemeUtils.setImageViewTint(favouriteButton, attribute);
} }
private void setMediaPreviews(final Status.MediaAttachment[] attachments, private void setMediaPreviews(final Status.MediaAttachment[] attachments,
@ -313,15 +306,15 @@ class StatusViewHolder extends RecyclerView.ViewHolder {
listener.onReply(getAdapterPosition()); listener.onReply(getAdapterPosition());
} }
}); });
reblogButton.setOnClickListener(new View.OnClickListener() { reblogButton.setEventListener(new SparkEventListener() {
@Override @Override
public void onClick(View v) { public void onEvent(ImageView button, boolean buttonState) {
listener.onReblog(!reblogged, getAdapterPosition()); listener.onReblog(!reblogged, getAdapterPosition());
} }
}); });
favouriteButton.setOnClickListener(new View.OnClickListener() { favouriteButton.setEventListener(new SparkEventListener() {
@Override @Override
public void onClick(View v) { public void onEvent(ImageView button, boolean buttonState) {
listener.onFavourite(!favourited, getAdapterPosition()); listener.onFavourite(!favourited, getAdapterPosition());
} }
}); });

View file

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="@color/status_favourite_button_marked_dark"
android:pathData="M12,17.27L18.18,21l-1.64,-7.03L22,9.24l-7.19,-0.61L12,2 9.19,8.63 2,9.24l5.46,4.73L5.82,21z"/>
</vector>

View file

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="@color/status_favourite_button_dark"
android:pathData="M12,17.27L18.18,21l-1.64,-7.03L22,9.24l-7.19,-0.61L12,2 9.19,8.63 2,9.24l5.46,4.73L5.82,21z"/>
</vector>

View file

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="@color/status_reblog_button_marked_dark"
android:pathData="M7,7h10v3l4,-4 -4,-4v3L5,5v6h2L7,7zM17,17L7,17v-3l-4,4 4,4v-3h12v-6h-2v4z"/>
</vector>

View file

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="@color/status_reblog_button_disabled_dark"
android:pathData="M18,8h-1L17,6c0,-2.76 -2.24,-5 -5,-5S7,3.24 7,6v2L6,8c-1.1,0 -2,0.9 -2,2v10c0,1.1 0.9,2 2,2h12c1.1,0 2,-0.9 2,-2L20,10c0,-1.1 -0.9,-2 -2,-2zM12,17c-1.1,0 -2,-0.9 -2,-2s0.9,-2 2,-2 2,0.9 2,2 -0.9,2 -2,2zM15.1,8L8.9,8L8.9,6c0,-1.71 1.39,-3.1 3.1,-3.1 1.71,0 3.1,1.39 3.1,3.1v2z"/>
</vector>

View file

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="@color/status_reblog_button_dark"
android:pathData="M7,7h10v3l4,-4 -4,-4v3L5,5v6h2L7,7zM17,17L7,17v-3l-4,4 4,4v-3h12v-6h-2v4z"/>
</vector>

View file

@ -1,9 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/splash_background" />
<item>
<bitmap
android:src="@mipmap/ic_logo"
android:gravity="center"/>
</item>
</layer-list>

View file

@ -0,0 +1,27 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:gravity="center"
android:orientation="vertical"
android:background="@color/color_background_dark"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:orientation="vertical"
android:gravity="center"
android:layout_weight="1"
android:layout_height="0dp">
<com.mikhaellopez.circularfillableloaders.CircularFillableLoaders
android:id="@+id/circularFillableLoaders"
android:layout_width="200dp"
android:layout_height="200dp"
android:src="@mipmap/ic_logo"
app:cfl_border="true"
app:cfl_border_width="4dp"
app:cfl_progress="80"
app:cfl_wave_amplitude="0.08"
app:cfl_wave_color="@color/color_primary_dark" />
</LinearLayout>
</LinearLayout>

View file

@ -231,6 +231,8 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_below="@id/status_media_preview_container" android:layout_below="@id/status_media_preview_container"
android:layout_toRightOf="@+id/status_avatar" android:layout_toRightOf="@+id/status_avatar"
android:clipChildren="false"
android:clipToPadding="false"
android:paddingBottom="8dp" android:paddingBottom="8dp"
android:paddingTop="6dp"> android:paddingTop="6dp">
@ -246,10 +248,14 @@
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_weight="1" /> android:layout_weight="1" />
<ImageButton <com.varunest.sparkbutton.SparkButton
app:srcCompat="@drawable/ic_repeat_24dp"
android:id="@+id/status_reblog" android:id="@+id/status_reblog"
style="?attr/image_button_style" app:sparkbutton_activeImage="@drawable/reblog_active"
app:sparkbutton_inActiveImage="@drawable/reblog_inactive"
app:sparkbutton_iconSize="28dp"
android:layout_gravity="center"
app:sparkbutton_primaryColor="@color/status_reblog_button_marked_dark"
app:sparkbutton_secondaryColor="@color/status_reblog_button_marked_light"
android:layout_width="32dp" android:layout_width="32dp"
android:layout_height="32dp" /> android:layout_height="32dp" />
@ -258,11 +264,15 @@
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_weight="1" /> android:layout_weight="1" />
<ImageButton <com.varunest.sparkbutton.SparkButton
android:layout_width="32dp" android:layout_width="32dp"
android:layout_height="32dp" android:layout_height="32dp"
style="?attr/image_button_style" app:sparkbutton_activeImage="@drawable/favourite_active"
app:srcCompat="@drawable/ic_star_24dp" app:sparkbutton_inActiveImage="@drawable/favourite_inactive"
app:sparkbutton_iconSize="28dp"
android:layout_gravity="center"
app:sparkbutton_primaryColor="@color/status_favourite_button_marked_light"
app:sparkbutton_secondaryColor="?attr/status_favourite_button_marked_tint"
android:id="@+id/status_favourite" /> android:id="@+id/status_favourite" />
<Space <Space

View file

@ -57,10 +57,10 @@
<color name="toolbar_icon_light">#000000</color> <color name="toolbar_icon_light">#000000</color>
<color name="image_button_light">#2F2F2F</color> <color name="image_button_light">#2F2F2F</color>
<color name="status_reblog_button_light">#4F4F4F</color> <color name="status_reblog_button_light">#4F4F4F</color>
<color name="status_reblog_button_marked_light">#009F6F</color> <color name="status_reblog_button_marked_light">#56a7e1</color>
<color name="status_reblog_button_disabled_light">#BFBFBF</color> <color name="status_reblog_button_disabled_light">#BFBFBF</color>
<color name="status_favourite_button_light">#4F4F4F</color> <color name="status_favourite_button_light">#4F4F4F</color>
<color name="status_favourite_button_marked_light">#ffec21</color> <color name="status_favourite_button_marked_light">#fab207</color>
<color name="sensitive_media_warning_background_light">#B0B0B0</color> <color name="sensitive_media_warning_background_light">#B0B0B0</color>
<color name="media_preview_unloaded_background_light">#CFCFCF</color> <color name="media_preview_unloaded_background_light">#CFCFCF</color>
<color name="status_text_secondary_light">#34444C</color> <color name="status_text_secondary_light">#34444C</color>

View file

@ -1,9 +1,5 @@
<resources> <resources>
<style name="SplashTheme" parent="Theme.AppCompat.NoActionBar">
<item name="android:windowBackground">@drawable/splash_background</item>
</style>
<style name="TabLayoutTextStyle" parent="TextAppearance.Design.Tab"> <style name="TabLayoutTextStyle" parent="TextAppearance.Design.Tab">
<item name="android:textStyle">normal|bold</item> <item name="android:textStyle">normal|bold</item>
</style> </style>

View file

@ -15,6 +15,7 @@ buildscript {
allprojects { allprojects {
repositories { repositories {
jcenter() jcenter()
maven { url "https://jitpack.io" }
} }
} }