diff --git a/.idea/misc.xml b/.idea/misc.xml
index 715986fb..3c7d3487 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -39,17 +39,7 @@
-
-
-
-
-
-
-
-
-
-
-
+
diff --git a/app/build.gradle b/app/build.gradle
index c2f56685..00b608e1 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -1,11 +1,10 @@
apply plugin: 'com.android.application'
apply plugin: 'com.getkeepsafe.dexcount'
-apply plugin: 'me.tatarka.retrolambda'
def AAVersion = '4.2.0'
android {
compileSdkVersion 25
- buildToolsVersion "25.0.2"
+ buildToolsVersion '26.0.2'
defaultConfig {
applicationId "com.stardust.scriptdroid"
minSdkVersion 17
@@ -40,9 +39,8 @@ android {
disable 'ExtraTranslation'
}
android.applicationVariants.all { variant ->
- variant.outputs.each { output ->
- def file = output.outputFile
- output.outputFile = new File(file.parent, file.name.replace(".apk", "-" + defaultConfig.versionName + ".apk"))
+ variant.outputs.all {
+ outputFileName = "${variant.name}-${variant.versionName}.apk"
}
}
@@ -55,6 +53,7 @@ repositories {
flatDir {
dirs 'libs'
}
+ google()
}
dependencies {
@@ -75,10 +74,10 @@ dependencies {
})
annotationProcessor 'com.jakewharton:butterknife-compiler:8.6.0'
// Android supports
- compile 'com.android.support:appcompat-v7:25.3.1'
- compile 'com.android.support:cardview-v7:25.3.1'
- compile 'com.android.support:design:25.3.1'
- compile 'com.android.support:multidex:1.0.1'
+ compile 'com.android.support:appcompat-v7:25.4.0'
+ compile 'com.android.support:cardview-v7:25.4.0'
+ compile 'com.android.support:design:25.4.0'
+ compile 'com.android.support:multidex:1.0.2'
// Personal libraries
compile 'com.github.hyb1996:MutableTheme:0.2.2'
// Material Dialogs
@@ -102,12 +101,12 @@ dependencies {
compile 'com.bignerdranch.android:expandablerecyclerview:3.0.0-RC1'
compile 'com.yqritc:recyclerview-flexibledivider:1.4.0'
compile 'com.wang.avi:library:2.1.3'
- compile 'org.apache.commons:commons-lang3:3.5'
+ compile 'org.apache.commons:commons-lang3:3.6'
compile 'com.github.hyb1996:FloatingCircularActionMenu:0.0.2'
compile(name: 'apkbuilder-release', ext: 'aar')
// RxJava
- compile "io.reactivex.rxjava2:rxjava:2.1.0"
+ compile "io.reactivex.rxjava2:rxjava:2.1.2"
compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
// RxDownload
compile('zlc.season:rxdownload3:1.0.8', {
@@ -120,15 +119,18 @@ dependencies {
compile 'com.jakewharton.retrofit:retrofit2-rxjava2-adapter:1.0.0'
//JDeferred
compile 'org.jdeferred:jdeferred-android-aar:1.2.6'
- //Picasso
- compile 'com.squareup.picasso:picasso:2.5.2'
+ //Glide
+ compile('com.github.bumptech.glide:glide:4.2.0', {
+ exclude group: 'com.android.support'
+ })
+ annotationProcessor 'com.github.bumptech.glide:compiler:4.2.0'
// Tasker Plugin
- compile 'com.twofortyfouram:android-plugin-client-sdk-for-locale:[4.0.2, 5.0['
+ compile 'com.twofortyfouram:android-plugin-client-sdk-for-locale:4.0.3'
compile 'com.flurry.android:analytics:7.0.0@aar'
compile('com.afollestad.material-dialogs:commons:0.9.2.3', {
exclude group: 'com.android.support'
})
- compile 'com.makeramen:roundedimageview:2.2.1'
+ compile 'com.makeramen:roundedimageview:2.3.0'
compile 'com.rengwuxian.materialedittext:library:2.0.3'
compile 'org.msgpack:msgpack-core:0.8.11'
compile project(':automator')
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index e96d6fe1..1542ef7d 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -78,7 +78,12 @@
-
+
+
diff --git a/app/src/main/java/com/stardust/scriptdroid/external/open/RunIntentActivity.java b/app/src/main/java/com/stardust/scriptdroid/external/open/RunIntentActivity.java
index 24f8dc1d..105ffb4f 100644
--- a/app/src/main/java/com/stardust/scriptdroid/external/open/RunIntentActivity.java
+++ b/app/src/main/java/com/stardust/scriptdroid/external/open/RunIntentActivity.java
@@ -44,10 +44,7 @@ public class RunIntentActivity extends Activity {
InputStream stream = getContentResolver().openInputStream(uri);
Scripts.run(new StringScriptSource(PFiles.read(stream)));
} else {
- final String path = intent.getData().getPath();
- if (!TextUtils.isEmpty(path)) {
- Scripts.run(new ScriptFile(path));
- }
+ CommonUtils.handleIntent(this, intent);
}
}
}
diff --git a/app/src/main/java/com/stardust/scriptdroid/network/Glides.java b/app/src/main/java/com/stardust/scriptdroid/network/Glides.java
new file mode 100644
index 00000000..21365e35
--- /dev/null
+++ b/app/src/main/java/com/stardust/scriptdroid/network/Glides.java
@@ -0,0 +1,11 @@
+package com.stardust.scriptdroid.network;
+
+import com.bumptech.glide.annotation.GlideModule;
+import com.bumptech.glide.module.AppGlideModule;
+
+/**
+ * Created by Stardust on 2017/10/26.
+ */
+@GlideModule
+public class Glides extends AppGlideModule {
+}
diff --git a/app/src/main/java/com/stardust/scriptdroid/network/NodeBB.java b/app/src/main/java/com/stardust/scriptdroid/network/NodeBB.java
index 254e6078..d8668ee7 100644
--- a/app/src/main/java/com/stardust/scriptdroid/network/NodeBB.java
+++ b/app/src/main/java/com/stardust/scriptdroid/network/NodeBB.java
@@ -2,8 +2,12 @@ package com.stardust.scriptdroid.network;
import com.google.gson.GsonBuilder;
import com.jakewharton.retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;
+import com.stardust.scriptdroid.network.api.ConfigApi;
+import com.stardust.scriptdroid.network.entity.config.Config;
import com.stardust.scriptdroid.network.util.WebkitCookieManagerProxy;
+import io.reactivex.Observable;
+import io.reactivex.Scheduler;
import okhttp3.OkHttpClient;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;
@@ -14,13 +18,16 @@ import retrofit2.converter.gson.GsonConverterFactory;
public class NodeBB {
+ public static final String BASE_URL = "http://www.autojs.org/";
private static final NodeBB sInstance = new NodeBB();
+ private Config mConfig;
+
private Retrofit mRetrofit;
NodeBB() {
mRetrofit = new Retrofit.Builder()
- .baseUrl("http://www.autojs.org/")
+ .baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create(new GsonBuilder()
.setLenient()
.create()))
@@ -38,4 +45,14 @@ public class NodeBB {
public Retrofit getRetrofit() {
return mRetrofit;
}
+
+ public Observable getConfig() {
+ if (mConfig == null) {
+ return mRetrofit.create(ConfigApi.class)
+ .getConfig()
+ .doOnNext(config -> mConfig = config);
+ }
+ return Observable.just(mConfig);
+
+ }
}
diff --git a/app/src/main/java/com/stardust/scriptdroid/network/UserService.java b/app/src/main/java/com/stardust/scriptdroid/network/UserService.java
index 58ce7ec6..ccf3c262 100644
--- a/app/src/main/java/com/stardust/scriptdroid/network/UserService.java
+++ b/app/src/main/java/com/stardust/scriptdroid/network/UserService.java
@@ -29,7 +29,7 @@ public class UserService {
}
public Observable login(String userName, final String password) {
- return mRetrofit.create(ConfigApi.class)
+ return NodeBB.getInstance()
.getConfig()
.flatMap(config -> {
Log.d("login", config.toString());
@@ -39,4 +39,15 @@ public class UserService {
});
}
+
+ public Observable register(String email, String userName, String password) {
+ return NodeBB.getInstance()
+ .getConfig()
+ .flatMap(config -> {
+ Log.d("login", config.toString());
+ return mRetrofit.create(UserApi.class)
+ .register(Collections.singletonMap("x-csrf-token", config.getCsrfToken()),
+ email, userName, password);
+ });
+ }
}
diff --git a/app/src/main/java/com/stardust/scriptdroid/network/api/UserApi.java b/app/src/main/java/com/stardust/scriptdroid/network/api/UserApi.java
index 2b4a909e..0b956522 100644
--- a/app/src/main/java/com/stardust/scriptdroid/network/api/UserApi.java
+++ b/app/src/main/java/com/stardust/scriptdroid/network/api/UserApi.java
@@ -25,5 +25,10 @@ public interface UserApi {
@POST("/login")
Observable login(@HeaderMap Map csrfToken, @Field("username") String userName, @Field("password") String password);
+ @FormUrlEncoded
+ @POST("/register")
+ Observable register(@HeaderMap Map csrfToken, @Field("email") String email,
+ @Field("username") String userName, @Field("password") String password);
+
}
diff --git a/app/src/main/java/com/stardust/scriptdroid/ui/main/community/CommunityWebView.java b/app/src/main/java/com/stardust/scriptdroid/ui/main/community/CommunityWebView.java
index 000ef095..32d4b6ee 100644
--- a/app/src/main/java/com/stardust/scriptdroid/ui/main/community/CommunityWebView.java
+++ b/app/src/main/java/com/stardust/scriptdroid/ui/main/community/CommunityWebView.java
@@ -120,7 +120,7 @@ public class CommunityWebView extends EWebView {
private class MyWebChromeClient extends EWebView.MyWebChromeClient {
@Override
- public void openFileChooser(ValueCallback callback) {
+ public void openFileChooser(ValueCallback callback, String[] acceptType, boolean isCaptureEnabled) {
new FileChooserDialogBuilder(getContext())
.title(R.string.text_select_file_to_upload)
.dir(StorageFileProvider.DEFAULT_DIRECTORY_PATH)
@@ -128,6 +128,5 @@ public class CommunityWebView extends EWebView {
.cancelListener(dialog -> callback.onReceiveValue(null))
.show();
}
-
}
}
diff --git a/app/src/main/java/com/stardust/scriptdroid/ui/main/drawer/DrawerFragment.java b/app/src/main/java/com/stardust/scriptdroid/ui/main/drawer/DrawerFragment.java
index fd0a74c2..67a66e25 100644
--- a/app/src/main/java/com/stardust/scriptdroid/ui/main/drawer/DrawerFragment.java
+++ b/app/src/main/java/com/stardust/scriptdroid/ui/main/drawer/DrawerFragment.java
@@ -1,16 +1,23 @@
package com.stardust.scriptdroid.ui.main.drawer;
+import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.support.annotation.Nullable;
+import android.text.TextUtils;
import android.view.View;
-import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import com.afollestad.materialdialogs.MaterialDialog;
+import com.bumptech.glide.Glide;
+import com.bumptech.glide.load.engine.DiskCacheStrategy;
+import com.bumptech.glide.request.target.SimpleTarget;
+import com.bumptech.glide.request.transition.Transition;
import com.stardust.scriptdroid.App;
import com.stardust.scriptdroid.Pref;
import com.stardust.scriptdroid.R;
+import com.stardust.scriptdroid.network.GlideApp;
+import com.stardust.scriptdroid.network.UserService;
import com.stardust.scriptdroid.ui.floating.CircularMenu;
import com.stardust.scriptdroid.ui.floating.FloatyWindowManger;
import com.stardust.scriptdroid.network.NodeBB;
@@ -19,10 +26,12 @@ import com.stardust.scriptdroid.network.api.UserApi;
import com.stardust.scriptdroid.network.entity.user.User;
import com.stardust.scriptdroid.network.entity.VersionInfo;
import com.stardust.scriptdroid.tool.SimpleObserver;
-import com.stardust.scriptdroid.ui.login.LoginActivity_;
+import com.stardust.scriptdroid.ui.user.LoginActivity_;
import com.stardust.scriptdroid.ui.settings.SettingsActivity;
import com.stardust.scriptdroid.ui.update.UpdateInfoDialogBuilder;
+import com.stardust.scriptdroid.ui.widget.AvatarView;
import com.stardust.theme.ThemeColorManager;
+import com.stardust.theme.ThemeColorManagerCompat;
import com.stardust.view.accessibility.AccessibilityService;
import com.stardust.scriptdroid.sublime.SublimePluginService;
import com.stardust.scriptdroid.tool.AccessibilityServiceTool;
@@ -69,7 +78,13 @@ public class DrawerFragment extends android.support.v4.app.Fragment {
TextView mUserName;
@ViewById(R.id.avatar)
- ImageView mAvatar;
+ AvatarView mAvatar;
+
+ @ViewById(R.id.shadow)
+ View mShadow;
+
+ @ViewById(R.id.default_cover)
+ View mDefaultCover;
private Disposable mConnectionStateDisposable;
@@ -108,21 +123,36 @@ public class DrawerFragment extends android.support.v4.app.Fragment {
.me()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
- .subscribe(new SimpleObserver() {
- @Override
- public void onNext(@io.reactivex.annotations.NonNull User user) {
- setUpUserInfo(user);
- }
-
- @Override
- public void onError(@io.reactivex.annotations.NonNull Throwable e) {
- e.printStackTrace();
- }
- });
+ .subscribe(this::setUpUserInfo, Throwable::printStackTrace);
}
private void setUpUserInfo(User user) {
mUserName.setText(user.getUsername());
+ mAvatar.setUser(user);
+ setCoverImage(user);
+
+
+ }
+
+ private void setCoverImage(User user) {
+ String coverUrl = user.getCoverUrl();
+ if (TextUtils.isEmpty(coverUrl) || coverUrl.equals("/assets/images/cover-default.png")) {
+ mDefaultCover.setVisibility(View.VISIBLE);
+ mShadow.setVisibility(View.GONE);
+ mHeaderView.setBackgroundColor(ThemeColorManagerCompat.getColorPrimary());
+ } else {
+ mDefaultCover.setVisibility(View.GONE);
+ mShadow.setVisibility(View.VISIBLE);
+ GlideApp.with(getContext())
+ .load(NodeBB.BASE_URL + coverUrl)
+ .diskCacheStrategy(DiskCacheStrategy.NONE)
+ .into(new SimpleTarget() {
+ @Override
+ public void onResourceReady(Drawable resource, Transition super Drawable> transition) {
+ mHeaderView.setBackground(resource);
+ }
+ });
+ }
}
@Click(R.id.avatar)
diff --git a/app/src/main/java/com/stardust/scriptdroid/ui/login/LoginActivity.java b/app/src/main/java/com/stardust/scriptdroid/ui/user/LoginActivity.java
similarity index 61%
rename from app/src/main/java/com/stardust/scriptdroid/ui/login/LoginActivity.java
rename to app/src/main/java/com/stardust/scriptdroid/ui/user/LoginActivity.java
index 611ad79c..ef8e7d05 100644
--- a/app/src/main/java/com/stardust/scriptdroid/ui/login/LoginActivity.java
+++ b/app/src/main/java/com/stardust/scriptdroid/ui/user/LoginActivity.java
@@ -1,8 +1,12 @@
-package com.stardust.scriptdroid.ui.login;
+package com.stardust.scriptdroid.ui.user;
+import android.content.Intent;
+import android.view.Menu;
+import android.view.MenuItem;
import android.widget.TextView;
import android.widget.Toast;
+import com.afollestad.materialdialogs.MaterialDialog;
import com.stardust.scriptdroid.R;
import com.stardust.scriptdroid.network.UserService;
import com.stardust.scriptdroid.ui.BaseActivity;
@@ -39,15 +43,29 @@ public class LoginActivity extends BaseActivity {
if (!checkNotEmpty(userName, password)) {
return;
}
+ MaterialDialog dialog = new MaterialDialog.Builder(this)
+ .progress(true, 0)
+ .content(R.string.text_logining)
+ .cancelable(false)
+ .show();
UserService.getInstance().login(userName, password)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(response -> {
+ dialog.dismiss();
Toast.makeText(getApplicationContext(), R.string.text_login_succeed, Toast.LENGTH_SHORT).show();
finish();
}
- , error ->
- Toast.makeText(getApplicationContext(), R.string.text_login_fail, Toast.LENGTH_SHORT).show());
+ , error -> {
+ dialog.dismiss();
+ mPassword.setError(getString(R.string.text_login_fail));
+ error.printStackTrace();
+ });
+
+ }
+
+ @Click(R.id.forgot_password)
+ void forgotPassword() {
}
@@ -62,4 +80,20 @@ public class LoginActivity extends BaseActivity {
}
return true;
}
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ getMenuInflater().inflate(R.menu.menu_login, menu);
+ return true;
+ }
+
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ if (item.getItemId() == R.id.action_register) {
+ RegisterActivity_.intent(this).start();
+ finish();
+ }
+ return super.onOptionsItemSelected(item);
+ }
}
diff --git a/app/src/main/java/com/stardust/scriptdroid/ui/user/RegisterActivity.java b/app/src/main/java/com/stardust/scriptdroid/ui/user/RegisterActivity.java
new file mode 100644
index 00000000..33aaad4a
--- /dev/null
+++ b/app/src/main/java/com/stardust/scriptdroid/ui/user/RegisterActivity.java
@@ -0,0 +1,93 @@
+package com.stardust.scriptdroid.ui.user;
+
+import android.util.Log;
+import android.util.Patterns;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import com.afollestad.materialdialogs.MaterialDialog;
+import com.stardust.scriptdroid.R;
+import com.stardust.scriptdroid.network.UserService;
+import com.stardust.scriptdroid.ui.BaseActivity;
+
+import org.androidannotations.annotations.AfterViews;
+import org.androidannotations.annotations.Click;
+import org.androidannotations.annotations.EActivity;
+import org.androidannotations.annotations.ViewById;
+
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.schedulers.Schedulers;
+
+/**
+ * Created by Stardust on 2017/10/26.
+ */
+@EActivity(R.layout.activity_register)
+public class RegisterActivity extends BaseActivity {
+
+ @ViewById(R.id.email)
+ TextView mEmail;
+
+ @ViewById(R.id.username)
+ TextView mUserName;
+
+ @ViewById(R.id.password)
+ TextView mPassword;
+
+ @AfterViews
+ void setUpViews() {
+ setToolbarAsBack(getString(R.string.text_register));
+ }
+
+ @Click(R.id.register)
+ void login() {
+ String email = mEmail.getText().toString();
+ String userName = mUserName.getText().toString();
+ String password = mPassword.getText().toString();
+ if (!validateInput(email, userName, password)) {
+ return;
+ }
+ MaterialDialog dialog = new MaterialDialog.Builder(this)
+ .progress(true, 0)
+ .content(R.string.text_registering)
+ .cancelable(false)
+ .show();
+ UserService.getInstance().register(email, userName, password)
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe(response -> {
+ dialog.dismiss();
+ onRegisterResponse(response.string());
+ }
+ , error -> {
+ dialog.dismiss();
+ mPassword.setError(getString(R.string.text_register_fail));
+ error.printStackTrace();
+ });
+
+ }
+
+ private void onRegisterResponse(String res) {
+ Toast.makeText(this, R.string.text_register_succeed, Toast.LENGTH_SHORT).show();
+ finish();
+ }
+
+ private boolean validateInput(String email, String userName, String password) {
+ if (email.isEmpty()) {
+ mEmail.setError(getString(R.string.text_email_cannot_be_empty));
+ return false;
+ }
+ if (!Patterns.EMAIL_ADDRESS.matcher(email).matches()) {
+ mEmail.setError(getString(R.string.text_email_format_error));
+ return false;
+ }
+ if (userName.isEmpty()) {
+ mUserName.setError(getString(R.string.text_username_cannot_be_empty));
+ return false;
+ }
+ if (password.isEmpty()) {
+ mUserName.setError(getString(R.string.text_password_cannot_be_empty));
+ return false;
+ }
+ return true;
+ }
+}
diff --git a/app/src/main/java/com/stardust/scriptdroid/ui/user/UserDetailActivity.java b/app/src/main/java/com/stardust/scriptdroid/ui/user/UserDetailActivity.java
new file mode 100644
index 00000000..5096ebca
--- /dev/null
+++ b/app/src/main/java/com/stardust/scriptdroid/ui/user/UserDetailActivity.java
@@ -0,0 +1,10 @@
+package com.stardust.scriptdroid.ui.user;
+
+import com.stardust.scriptdroid.ui.BaseActivity;
+
+/**
+ * Created by Stardust on 2017/10/26.
+ */
+
+public class UserDetailActivity extends BaseActivity {
+}
diff --git a/app/src/main/java/com/stardust/scriptdroid/ui/widget/AvatarView.java b/app/src/main/java/com/stardust/scriptdroid/ui/widget/AvatarView.java
new file mode 100644
index 00000000..13f4a834
--- /dev/null
+++ b/app/src/main/java/com/stardust/scriptdroid/ui/widget/AvatarView.java
@@ -0,0 +1,86 @@
+package com.stardust.scriptdroid.ui.widget;
+
+import android.content.Context;
+import android.graphics.Color;
+import android.graphics.drawable.Drawable;
+import android.graphics.drawable.GradientDrawable;
+import android.support.annotation.AttrRes;
+import android.support.annotation.NonNull;
+import android.support.annotation.Nullable;
+import android.text.TextUtils;
+import android.util.AttributeSet;
+import android.view.View;
+import android.widget.FrameLayout;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+
+import com.bumptech.glide.Glide;
+import com.bumptech.glide.load.engine.DiskCacheStrategy;
+import com.makeramen.roundedimageview.RoundedImageView;
+import com.nickandjerry.dynamiclayoutinflator.lib.DynamicLayoutInflator;
+import com.stardust.scriptdroid.R;
+import com.stardust.scriptdroid.network.GlideApp;
+import com.stardust.scriptdroid.network.Glides;
+import com.stardust.scriptdroid.network.NodeBB;
+import com.stardust.scriptdroid.network.entity.user.User;
+
+import butterknife.BindView;
+import butterknife.ButterKnife;
+
+/**
+ * Created by 婷 on 2017/9/29.
+ */
+
+public class AvatarView extends FrameLayout {
+
+ @BindView(R.id.icon_text)
+ TextView mIconText;
+
+ @BindView(R.id.icon)
+ RoundedImageView mIcon;
+
+ private GradientDrawable mIconTextBackground;
+
+
+ public AvatarView(@NonNull Context context) {
+ super(context);
+ init();
+ }
+
+ public AvatarView(@NonNull Context context, @Nullable AttributeSet attrs) {
+ super(context, attrs);
+ init();
+ }
+
+ public AvatarView(@NonNull Context context, @Nullable AttributeSet attrs, @AttrRes int defStyleAttr) {
+ super(context, attrs, defStyleAttr);
+ init();
+ }
+
+ private void init() {
+ inflate(getContext(), R.layout.avatar_view, this);
+ ButterKnife.bind(this);
+ mIconTextBackground = (GradientDrawable) mIconText.getBackground();
+ }
+
+ public void setUser(final User user) {
+ if (TextUtils.isEmpty(user.getPicture())) {
+ mIcon.setVisibility(View.GONE);
+ mIconText.setVisibility(View.VISIBLE);
+ mIconTextBackground.setColor(Color.parseColor(user.getIconBgColor()));
+ mIconTextBackground.setCornerRadius(getWidth() / 2);
+ mIconText.setText(user.getIconText());
+ } else {
+ mIcon.setVisibility(View.VISIBLE);
+ mIconText.setVisibility(View.GONE);
+ mIcon.setCornerRadius(getWidth() / 2);
+ GlideApp.with(getContext())
+ .load(NodeBB.BASE_URL + user.getPicture())
+ .diskCacheStrategy(DiskCacheStrategy.NONE)
+ .skipMemoryCache(true)
+ .into(mIcon);
+ }
+ }
+}
+
diff --git a/app/src/main/java/com/stardust/scriptdroid/ui/widget/EWebView.java b/app/src/main/java/com/stardust/scriptdroid/ui/widget/EWebView.java
index 5034bdf8..9e008e68 100644
--- a/app/src/main/java/com/stardust/scriptdroid/ui/widget/EWebView.java
+++ b/app/src/main/java/com/stardust/scriptdroid/ui/widget/EWebView.java
@@ -82,25 +82,19 @@ public class EWebView extends FrameLayout implements SwipeRefreshLayout.OnRefres
mProgressBar.setProgress(newProgress);
}
-
- // For Android < 3.0
- public void openFileChooser(ValueCallback valueCallback) {
-
- }
-
- // For Android >= 3.0
- @SuppressWarnings("unchecked")
- public void openFileChooser(ValueCallback valueCallback, String acceptType) {
- openFileChooser(valueCallback);
- }
-
//For Android >= 4.1
public void openFileChooser(ValueCallback valueCallback,
String acceptType, String capture) {
- openFileChooser(valueCallback);
+ openFileChooser(valueCallback, acceptType.split(","), capture.equals("true"));
+ }
+
+ public void openFileChooser(ValueCallback valueCallback,
+ String[] acceptType, boolean isCaptureEnabled) {
+
}
// For Android >= 5.0
+ @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
@Override
public boolean onShowFileChooser(WebView webView,
ValueCallback filePathCallback,
@@ -111,7 +105,7 @@ public class EWebView extends FrameLayout implements SwipeRefreshLayout.OnRefres
} else {
filePathCallback.onReceiveValue(new Uri[]{value});
}
- });
+ }, fileChooserParams.getAcceptTypes(), fileChooserParams.isCaptureEnabled());
return true;
}
}
diff --git a/app/src/main/res/drawable/avatar_view_bg.xml b/app/src/main/res/drawable/avatar_view_bg.xml
new file mode 100644
index 00000000..f757a93c
--- /dev/null
+++ b/app/src/main/res/drawable/avatar_view_bg.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/drawer_header_shadow.xml b/app/src/main/res/drawable/drawer_header_shadow.xml
new file mode 100644
index 00000000..29dda27b
--- /dev/null
+++ b/app/src/main/res/drawable/drawer_header_shadow.xml
@@ -0,0 +1,10 @@
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_ali_register.png b/app/src/main/res/drawable/ic_ali_register.png
new file mode 100644
index 00000000..37c19e84
Binary files /dev/null and b/app/src/main/res/drawable/ic_ali_register.png differ
diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml
index 7ef93775..f72d9e6b 100644
--- a/app/src/main/res/layout/activity_login.xml
+++ b/app/src/main/res/layout/activity_login.xml
@@ -1,158 +1,102 @@
-
+
-
-
+ android:orientation="vertical">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ android:theme="@style/AppTheme.AppBarOverlay">
+
+
+
+
-
\ No newline at end of file
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_register.xml b/app/src/main/res/layout/activity_register.xml
new file mode 100644
index 00000000..95c41ea3
--- /dev/null
+++ b/app/src/main/res/layout/activity_register.xml
@@ -0,0 +1,95 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/avatar_view.xml b/app/src/main/res/layout/avatar_view.xml
new file mode 100644
index 00000000..ca5adb83
--- /dev/null
+++ b/app/src/main/res/layout/avatar_view.xml
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_drawer.xml b/app/src/main/res/layout/fragment_drawer.xml
index ea5aef26..fe1175a3 100644
--- a/app/src/main/res/layout/fragment_drawer.xml
+++ b/app/src/main/res/layout/fragment_drawer.xml
@@ -16,18 +16,21 @@
android:layout_height="170dp"
android:layout_marginBottom="5dp">
-
+
+
+ android:layout_marginBottom="8dp"
+ android:layout_marginLeft="12dp"
+ android:scaleType="fitXY"/>
+ android:textSize="16sp"/>
-
diff --git a/app/src/main/res/menu/menu_login.xml b/app/src/main/res/menu/menu_login.xml
new file mode 100644
index 00000000..b90d6843
--- /dev/null
+++ b/app/src/main/res/menu/menu_login.xml
@@ -0,0 +1,10 @@
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 87afe904..b109daba 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -200,7 +200,7 @@
用户名
密码
登录
- 忘记密码
+ 忘记密码?
用户名不能为空
密码不能为空
时间
@@ -266,6 +266,15 @@
添加到图标快捷方式
登录成功
登录失败
+ 重置密码
+ 登录中
+ 注册
+ 邮箱
+ 邮箱不能为空
+ 邮箱格式错误
+ 注册中
+ 注册失败
+ 注册成功
diff --git a/autojs/build.gradle b/autojs/build.gradle
index 573b8d88..95efa15c 100644
--- a/autojs/build.gradle
+++ b/autojs/build.gradle
@@ -2,7 +2,7 @@ apply plugin: 'com.android.library'
android {
compileSdkVersion 25
- buildToolsVersion "25.0.2"
+ buildToolsVersion '26.0.2'
defaultConfig {
minSdkVersion 17
diff --git a/automator/build.gradle b/automator/build.gradle
index d0ad0721..d2353a6b 100644
--- a/automator/build.gradle
+++ b/automator/build.gradle
@@ -2,7 +2,7 @@ apply plugin: 'com.android.library'
android {
compileSdkVersion 25
- buildToolsVersion "25.0.2"
+ buildToolsVersion '26.0.2'
defaultConfig {
minSdkVersion 17
diff --git a/build.gradle b/build.gradle
index 84cd092b..a7f286b1 100644
--- a/build.gradle
+++ b/build.gradle
@@ -3,11 +3,11 @@
buildscript {
repositories {
jcenter()
+ google()
}
dependencies {
- classpath 'com.android.tools.build:gradle:2.3.3'
+ classpath 'com.android.tools.build:gradle:3.0.0'
classpath 'com.getkeepsafe.dexcount:dexcount-gradle-plugin:0.6.4'
- classpath 'me.tatarka:gradle-retrolambda:3.7.0'
}
}
diff --git a/common/build.gradle b/common/build.gradle
index 363d1962..e4de4dc3 100644
--- a/common/build.gradle
+++ b/common/build.gradle
@@ -2,7 +2,7 @@ apply plugin: 'com.android.library'
android {
compileSdkVersion 25
- buildToolsVersion "25.0.2"
+ buildToolsVersion '26.0.2'
defaultConfig {
minSdkVersion 17
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 35322ab9..2af64641 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
-#Sat Mar 04 22:18:28 CST 2017
+#Thu Oct 26 16:01:06 CST 2017
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip
diff --git a/inrt/build.gradle b/inrt/build.gradle
index 775bbec6..e257675c 100644
--- a/inrt/build.gradle
+++ b/inrt/build.gradle
@@ -2,7 +2,7 @@ apply plugin: 'com.android.application'
android {
compileSdkVersion 25
- buildToolsVersion "25.0.2"
+ buildToolsVersion '26.0.2'
defaultConfig {
applicationId "com.stardust.auojs.inrt"