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 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"