fix: user login; refactor: move package widget to package ui

This commit is contained in:
hyb1996 2017-10-26 13:16:34 +08:00
parent 6cee2def6e
commit 1e5c05efb9
65 changed files with 843 additions and 607 deletions

View File

@ -1,19 +1,15 @@
package com.stardust.scriptdroid.network;
import com.google.gson.GsonBuilder;
import com.jakewharton.retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;
import android.util.Log;
import com.stardust.scriptdroid.network.api.ConfigApi;
import com.stardust.scriptdroid.network.api.UserApi;
import com.stardust.scriptdroid.network.entity.TokenResponse;
import com.stardust.scriptdroid.network.entity.VerifyResponse;
import java.util.Collections;
import io.reactivex.Observable;
import io.reactivex.ObservableSource;
import io.reactivex.annotations.NonNull;
import io.reactivex.functions.Consumer;
import io.reactivex.functions.Function;
import io.reactivex.schedulers.Schedulers;
import okhttp3.ResponseBody;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;
/**
* Created by Stardust on 2017/9/20.
@ -28,20 +24,19 @@ public class UserService {
mRetrofit = NodeBB.getInstance().getRetrofit();
}
public static UserService getInstance() {
return sInstance;
}
public Observable<TokenResponse> login(String userName, final String password) {
final UserApi userApi = mRetrofit.create(UserApi.class);
return userApi.verify(userName, password)
.subscribeOn(Schedulers.io())
.flatMap(new Function<VerifyResponse, ObservableSource<TokenResponse>>() {
@Override
public ObservableSource<TokenResponse> apply(@NonNull VerifyResponse verifyResponse) throws Exception {
if (verifyResponse.isSuccessful()) {
return userApi.generateToken(verifyResponse.getUid(), password);
} else {
return Observable.error(new Exception(verifyResponse.getMessage()));
}
}
public Observable<ResponseBody> login(String userName, final String password) {
return mRetrofit.create(ConfigApi.class)
.getConfig()
.flatMap(config -> {
Log.d("login", config.toString());
return mRetrofit.create(UserApi.class)
.login(Collections.singletonMap("x-csrf-token", config.getCsrfToken()),
userName, password);
});
}
}

View File

@ -0,0 +1,17 @@
package com.stardust.scriptdroid.network.api;
import com.stardust.scriptdroid.network.entity.config.Config;
import io.reactivex.Observable;
import retrofit2.http.GET;
/**
* Created by Stardust on 2017/10/26.
*/
public interface ConfigApi {
@GET("/api/config")
Observable<Config> getConfig();
}

View File

@ -1,15 +1,16 @@
package com.stardust.scriptdroid.network.api;
import com.stardust.scriptdroid.network.entity.VerifyResponse;
import com.stardust.scriptdroid.network.entity.TokenResponse;
import com.stardust.scriptdroid.network.entity.User;
import com.stardust.scriptdroid.network.entity.user.User;
import java.util.Map;
import io.reactivex.Observable;
import okhttp3.ResponseBody;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.HeaderMap;
import retrofit2.http.POST;
import retrofit2.http.Path;
/**
* Created by Stardust on 2017/9/20.
@ -21,14 +22,8 @@ public interface UserApi {
Observable<User> me();
@FormUrlEncoded
@POST("/api/ns/login")
Observable<VerifyResponse> verify(@Field("username") String userName, @Field("password") String password);
@FormUrlEncoded
@POST("/api/v2/{uid}/tokens")
Observable<TokenResponse> generateToken(@Path("uid") String uid, @Field("password") String password);
@POST("/login")
Observable<ResponseBody> login(@HeaderMap Map<String, String> csrfToken, @Field("username") String userName, @Field("password") String password);
}

View File

@ -1,17 +0,0 @@
package com.stardust.scriptdroid.network.entity;
/**
* Created by Stardust on 2017/9/21.
*/
public class TokenResponse {
public String code;
public static class Payload {
public String token;
}
}

View File

@ -1,376 +0,0 @@
package com.stardust.scriptdroid.network.entity;
import com.google.gson.annotations.SerializedName;
public class VerifyResponse {
@SerializedName("message")
private String message;
@SerializedName("birthday")
private String birthday;
@SerializedName("lastposttime")
private String lastposttime;
@SerializedName("signature")
private String signature;
@SerializedName("icon:bgColor")
private String iconBgColor;
@SerializedName("groupTitle")
private String groupTitle;
@SerializedName("reputation")
private String reputation;
@SerializedName("followingCount")
private String followingCount;
@SerializedName("lastonlineISO")
private String lastonlineISO;
@SerializedName("uid")
private String uid;
@SerializedName("profileviews")
private String profileviews;
@SerializedName("icon:text")
private String iconText;
@SerializedName("banned")
private String banned;
@SerializedName("userslug")
private String userslug;
@SerializedName("followerCount")
private String followerCount;
@SerializedName("email")
private String email;
@SerializedName("joindate")
private String joindate;
@SerializedName("website")
private String website;
@SerializedName("uploadedpicture")
private String uploadedpicture;
@SerializedName("passwordExpiry")
private String passwordExpiry;
@SerializedName("lastonline")
private String lastonline;
@SerializedName("picture")
private String picture;
@SerializedName("joindateISO")
private String joindateISO;
@SerializedName("email:confirmed")
private Object emailConfirmed;
@SerializedName("postcount")
private String postcount;
@SerializedName("location")
private String location;
@SerializedName("fullname")
private String fullname;
@SerializedName("topiccount")
private String topiccount;
@SerializedName("username")
private String username;
@SerializedName("status")
private String status;
public boolean isSuccessful() {
return message == null;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public void setBirthday(String birthday) {
this.birthday = birthday;
}
public String getBirthday() {
return birthday;
}
public void setLastposttime(String lastposttime) {
this.lastposttime = lastposttime;
}
public String getLastposttime() {
return lastposttime;
}
public void setSignature(String signature) {
this.signature = signature;
}
public String getSignature() {
return signature;
}
public void setIconBgColor(String iconBgColor) {
this.iconBgColor = iconBgColor;
}
public String getIconBgColor() {
return iconBgColor;
}
public void setGroupTitle(String groupTitle) {
this.groupTitle = groupTitle;
}
public String getGroupTitle() {
return groupTitle;
}
public void setReputation(String reputation) {
this.reputation = reputation;
}
public String getReputation() {
return reputation;
}
public void setFollowingCount(String followingCount) {
this.followingCount = followingCount;
}
public String getFollowingCount() {
return followingCount;
}
public void setLastonlineISO(String lastonlineISO) {
this.lastonlineISO = lastonlineISO;
}
public String getLastonlineISO() {
return lastonlineISO;
}
public void setUid(String uid) {
this.uid = uid;
}
public String getUid() {
return uid;
}
public void setProfileviews(String profileviews) {
this.profileviews = profileviews;
}
public String getProfileviews() {
return profileviews;
}
public void setIconText(String iconText) {
this.iconText = iconText;
}
public String getIconText() {
return iconText;
}
public void setBanned(String banned) {
this.banned = banned;
}
public String getBanned() {
return banned;
}
public void setUserslug(String userslug) {
this.userslug = userslug;
}
public String getUserslug() {
return userslug;
}
public void setFollowerCount(String followerCount) {
this.followerCount = followerCount;
}
public String getFollowerCount() {
return followerCount;
}
public void setEmail(String email) {
this.email = email;
}
public String getEmail() {
return email;
}
public void setJoindate(String joindate) {
this.joindate = joindate;
}
public String getJoindate() {
return joindate;
}
public void setWebsite(String website) {
this.website = website;
}
public String getWebsite() {
return website;
}
public void setUploadedpicture(String uploadedpicture) {
this.uploadedpicture = uploadedpicture;
}
public String getUploadedpicture() {
return uploadedpicture;
}
public void setPasswordExpiry(String passwordExpiry) {
this.passwordExpiry = passwordExpiry;
}
public String getPasswordExpiry() {
return passwordExpiry;
}
public void setLastonline(String lastonline) {
this.lastonline = lastonline;
}
public String getLastonline() {
return lastonline;
}
public void setPicture(String picture) {
this.picture = picture;
}
public String getPicture() {
return picture;
}
public void setJoindateISO(String joindateISO) {
this.joindateISO = joindateISO;
}
public String getJoindateISO() {
return joindateISO;
}
public void setEmailConfirmed(Object emailConfirmed) {
this.emailConfirmed = emailConfirmed;
}
public Object getEmailConfirmed() {
return emailConfirmed;
}
public void setPostcount(String postcount) {
this.postcount = postcount;
}
public String getPostcount() {
return postcount;
}
public void setLocation(String location) {
this.location = location;
}
public String getLocation() {
return location;
}
public void setFullname(String fullname) {
this.fullname = fullname;
}
public String getFullname() {
return fullname;
}
public void setTopiccount(String topiccount) {
this.topiccount = topiccount;
}
public String getTopiccount() {
return topiccount;
}
public void setUsername(String username) {
this.username = username;
}
public String getUsername() {
return username;
}
public void setStatus(String status) {
this.status = status;
}
public String getStatus() {
return status;
}
@Override
public String toString() {
return
"VerifyResponse{" +
"birthday = '" + birthday + '\'' +
",lastposttime = '" + lastposttime + '\'' +
",signature = '" + signature + '\'' +
",icon:bgColor = '" + iconBgColor + '\'' +
",groupTitle = '" + groupTitle + '\'' +
",reputation = '" + reputation + '\'' +
",followingCount = '" + followingCount + '\'' +
",lastonlineISO = '" + lastonlineISO + '\'' +
",uid = '" + uid + '\'' +
",profileviews = '" + profileviews + '\'' +
",icon:text = '" + iconText + '\'' +
",banned = '" + banned + '\'' +
",userslug = '" + userslug + '\'' +
",followerCount = '" + followerCount + '\'' +
",email = '" + email + '\'' +
",joindate = '" + joindate + '\'' +
",website = '" + website + '\'' +
",uploadedpicture = '" + uploadedpicture + '\'' +
",passwordExpiry = '" + passwordExpiry + '\'' +
",lastonline = '" + lastonline + '\'' +
",picture = '" + picture + '\'' +
",joindateISO = '" + joindateISO + '\'' +
",email:confirmed = '" + emailConfirmed + '\'' +
",postcount = '" + postcount + '\'' +
",location = '" + location + '\'' +
",fullname = '" + fullname + '\'' +
",topiccount = '" + topiccount + '\'' +
",username = '" + username + '\'' +
",status = '" + status + '\'' +
"}";
}
}

View File

@ -0,0 +1,617 @@
package com.stardust.scriptdroid.network.entity.config;
import java.util.List;
import com.google.gson.annotations.SerializedName;
public class Config{
@SerializedName("socketioTransports")
private List<String> socketioTransports;
@SerializedName("allowGuestSearching")
private boolean allowGuestSearching;
@SerializedName("hasImageUploadPlugin")
private boolean hasImageUploadPlugin;
@SerializedName("showSiteTitle")
private boolean showSiteTitle;
@SerializedName("websocketAddress")
private String websocketAddress;
@SerializedName("maximumFileSize")
private String maximumFileSize;
@SerializedName("usePagination")
private boolean usePagination;
@SerializedName("minimumPostLength")
private String minimumPostLength;
@SerializedName("allowGuestUserSearching")
private boolean allowGuestUserSearching;
@SerializedName("allowTopicsThumbnail")
private boolean allowTopicsThumbnail;
@SerializedName("allowGuestHandles")
private boolean allowGuestHandles;
@SerializedName("disableChatMessageEditing")
private boolean disableChatMessageEditing;
@SerializedName("version")
private String version;
@SerializedName("minimumTitleLength")
private String minimumTitleLength;
@SerializedName("maximumTagsPerTopic")
private int maximumTagsPerTopic;
@SerializedName("topicPostSort")
private String topicPostSort;
@SerializedName("defaultBootswatchSkin")
private String defaultBootswatchSkin;
@SerializedName("allowFileUploads")
private boolean allowFileUploads;
@SerializedName("maximumPostLength")
private String maximumPostLength;
@SerializedName("loggedIn")
private boolean loggedIn;
@SerializedName("postsPerPage")
private String postsPerPage;
@SerializedName("relative_path")
private String relativePath;
@SerializedName("requireEmailConfirmation")
private boolean requireEmailConfirmation;
@SerializedName("defaultLang")
private String defaultLang;
@SerializedName("disableChat")
private boolean disableChat;
@SerializedName("userLang")
private String userLang;
@SerializedName("maxReconnectionAttempts")
private int maxReconnectionAttempts;
@SerializedName("timeagoCutoff")
private String timeagoCutoff;
@SerializedName("browserTitle")
private String browserTitle;
@SerializedName("siteTitle")
private String siteTitle;
@SerializedName("csrf_token")
private String csrfToken;
@SerializedName("categoryTopicSort")
private String categoryTopicSort;
@SerializedName("disableMasonry")
private boolean disableMasonry;
@SerializedName("theme:src")
private String themeSrc;
@SerializedName("cookies")
private Cookies cookies;
@SerializedName("markdown")
private Markdown markdown;
@SerializedName("minimumTagLength")
private String minimumTagLength;
@SerializedName("maximumTagLength")
private String maximumTagLength;
@SerializedName("maximumTitleLength")
private String maximumTitleLength;
@SerializedName("topicsPerPage")
private String topicsPerPage;
@SerializedName("useOutgoingLinksPage")
private boolean useOutgoingLinksPage;
@SerializedName("bootswatchSkin")
private String bootswatchSkin;
@SerializedName("minimumTagsPerTopic")
private int minimumTagsPerTopic;
@SerializedName("delayImageLoading")
private boolean delayImageLoading;
@SerializedName("cache-buster")
private String cacheBuster;
@SerializedName("titleLayout")
private String titleLayout;
@SerializedName("theme:id")
private String themeId;
@SerializedName("topicSearchEnabled")
private boolean topicSearchEnabled;
@SerializedName("searchEnabled")
private boolean searchEnabled;
@SerializedName("reconnectionDelay")
private int reconnectionDelay;
public void setSocketioTransports(List<String> socketioTransports){
this.socketioTransports = socketioTransports;
}
public List<String> getSocketioTransports(){
return socketioTransports;
}
public void setAllowGuestSearching(boolean allowGuestSearching){
this.allowGuestSearching = allowGuestSearching;
}
public boolean isAllowGuestSearching(){
return allowGuestSearching;
}
public void setHasImageUploadPlugin(boolean hasImageUploadPlugin){
this.hasImageUploadPlugin = hasImageUploadPlugin;
}
public boolean isHasImageUploadPlugin(){
return hasImageUploadPlugin;
}
public void setShowSiteTitle(boolean showSiteTitle){
this.showSiteTitle = showSiteTitle;
}
public boolean isShowSiteTitle(){
return showSiteTitle;
}
public void setWebsocketAddress(String websocketAddress){
this.websocketAddress = websocketAddress;
}
public String getWebsocketAddress(){
return websocketAddress;
}
public void setMaximumFileSize(String maximumFileSize){
this.maximumFileSize = maximumFileSize;
}
public String getMaximumFileSize(){
return maximumFileSize;
}
public void setUsePagination(boolean usePagination){
this.usePagination = usePagination;
}
public boolean isUsePagination(){
return usePagination;
}
public void setMinimumPostLength(String minimumPostLength){
this.minimumPostLength = minimumPostLength;
}
public String getMinimumPostLength(){
return minimumPostLength;
}
public void setAllowGuestUserSearching(boolean allowGuestUserSearching){
this.allowGuestUserSearching = allowGuestUserSearching;
}
public boolean isAllowGuestUserSearching(){
return allowGuestUserSearching;
}
public void setAllowTopicsThumbnail(boolean allowTopicsThumbnail){
this.allowTopicsThumbnail = allowTopicsThumbnail;
}
public boolean isAllowTopicsThumbnail(){
return allowTopicsThumbnail;
}
public void setAllowGuestHandles(boolean allowGuestHandles){
this.allowGuestHandles = allowGuestHandles;
}
public boolean isAllowGuestHandles(){
return allowGuestHandles;
}
public void setDisableChatMessageEditing(boolean disableChatMessageEditing){
this.disableChatMessageEditing = disableChatMessageEditing;
}
public boolean isDisableChatMessageEditing(){
return disableChatMessageEditing;
}
public void setVersion(String version){
this.version = version;
}
public String getVersion(){
return version;
}
public void setMinimumTitleLength(String minimumTitleLength){
this.minimumTitleLength = minimumTitleLength;
}
public String getMinimumTitleLength(){
return minimumTitleLength;
}
public void setMaximumTagsPerTopic(int maximumTagsPerTopic){
this.maximumTagsPerTopic = maximumTagsPerTopic;
}
public int getMaximumTagsPerTopic(){
return maximumTagsPerTopic;
}
public void setTopicPostSort(String topicPostSort){
this.topicPostSort = topicPostSort;
}
public String getTopicPostSort(){
return topicPostSort;
}
public void setDefaultBootswatchSkin(String defaultBootswatchSkin){
this.defaultBootswatchSkin = defaultBootswatchSkin;
}
public String getDefaultBootswatchSkin(){
return defaultBootswatchSkin;
}
public void setAllowFileUploads(boolean allowFileUploads){
this.allowFileUploads = allowFileUploads;
}
public boolean isAllowFileUploads(){
return allowFileUploads;
}
public void setMaximumPostLength(String maximumPostLength){
this.maximumPostLength = maximumPostLength;
}
public String getMaximumPostLength(){
return maximumPostLength;
}
public void setLoggedIn(boolean loggedIn){
this.loggedIn = loggedIn;
}
public boolean isLoggedIn(){
return loggedIn;
}
public void setPostsPerPage(String postsPerPage){
this.postsPerPage = postsPerPage;
}
public String getPostsPerPage(){
return postsPerPage;
}
public void setRelativePath(String relativePath){
this.relativePath = relativePath;
}
public String getRelativePath(){
return relativePath;
}
public void setRequireEmailConfirmation(boolean requireEmailConfirmation){
this.requireEmailConfirmation = requireEmailConfirmation;
}
public boolean isRequireEmailConfirmation(){
return requireEmailConfirmation;
}
public void setDefaultLang(String defaultLang){
this.defaultLang = defaultLang;
}
public String getDefaultLang(){
return defaultLang;
}
public void setDisableChat(boolean disableChat){
this.disableChat = disableChat;
}
public boolean isDisableChat(){
return disableChat;
}
public void setUserLang(String userLang){
this.userLang = userLang;
}
public String getUserLang(){
return userLang;
}
public void setMaxReconnectionAttempts(int maxReconnectionAttempts){
this.maxReconnectionAttempts = maxReconnectionAttempts;
}
public int getMaxReconnectionAttempts(){
return maxReconnectionAttempts;
}
public void setTimeagoCutoff(String timeagoCutoff){
this.timeagoCutoff = timeagoCutoff;
}
public String getTimeagoCutoff(){
return timeagoCutoff;
}
public void setBrowserTitle(String browserTitle){
this.browserTitle = browserTitle;
}
public String getBrowserTitle(){
return browserTitle;
}
public void setSiteTitle(String siteTitle){
this.siteTitle = siteTitle;
}
public String getSiteTitle(){
return siteTitle;
}
public void setCsrfToken(String csrfToken){
this.csrfToken = csrfToken;
}
public String getCsrfToken(){
return csrfToken;
}
public void setCategoryTopicSort(String categoryTopicSort){
this.categoryTopicSort = categoryTopicSort;
}
public String getCategoryTopicSort(){
return categoryTopicSort;
}
public void setDisableMasonry(boolean disableMasonry){
this.disableMasonry = disableMasonry;
}
public boolean isDisableMasonry(){
return disableMasonry;
}
public void setThemeSrc(String themeSrc){
this.themeSrc = themeSrc;
}
public String getThemeSrc(){
return themeSrc;
}
public void setCookies(Cookies cookies){
this.cookies = cookies;
}
public Cookies getCookies(){
return cookies;
}
public void setMarkdown(Markdown markdown){
this.markdown = markdown;
}
public Markdown getMarkdown(){
return markdown;
}
public void setMinimumTagLength(String minimumTagLength){
this.minimumTagLength = minimumTagLength;
}
public String getMinimumTagLength(){
return minimumTagLength;
}
public void setMaximumTagLength(String maximumTagLength){
this.maximumTagLength = maximumTagLength;
}
public String getMaximumTagLength(){
return maximumTagLength;
}
public void setMaximumTitleLength(String maximumTitleLength){
this.maximumTitleLength = maximumTitleLength;
}
public String getMaximumTitleLength(){
return maximumTitleLength;
}
public void setTopicsPerPage(String topicsPerPage){
this.topicsPerPage = topicsPerPage;
}
public String getTopicsPerPage(){
return topicsPerPage;
}
public void setUseOutgoingLinksPage(boolean useOutgoingLinksPage){
this.useOutgoingLinksPage = useOutgoingLinksPage;
}
public boolean isUseOutgoingLinksPage(){
return useOutgoingLinksPage;
}
public void setBootswatchSkin(String bootswatchSkin){
this.bootswatchSkin = bootswatchSkin;
}
public String getBootswatchSkin(){
return bootswatchSkin;
}
public void setMinimumTagsPerTopic(int minimumTagsPerTopic){
this.minimumTagsPerTopic = minimumTagsPerTopic;
}
public int getMinimumTagsPerTopic(){
return minimumTagsPerTopic;
}
public void setDelayImageLoading(boolean delayImageLoading){
this.delayImageLoading = delayImageLoading;
}
public boolean isDelayImageLoading(){
return delayImageLoading;
}
public void setCacheBuster(String cacheBuster){
this.cacheBuster = cacheBuster;
}
public String getCacheBuster(){
return cacheBuster;
}
public void setTitleLayout(String titleLayout){
this.titleLayout = titleLayout;
}
public String getTitleLayout(){
return titleLayout;
}
public void setThemeId(String themeId){
this.themeId = themeId;
}
public String getThemeId(){
return themeId;
}
public void setTopicSearchEnabled(boolean topicSearchEnabled){
this.topicSearchEnabled = topicSearchEnabled;
}
public boolean isTopicSearchEnabled(){
return topicSearchEnabled;
}
public void setSearchEnabled(boolean searchEnabled){
this.searchEnabled = searchEnabled;
}
public boolean isSearchEnabled(){
return searchEnabled;
}
public void setReconnectionDelay(int reconnectionDelay){
this.reconnectionDelay = reconnectionDelay;
}
public int getReconnectionDelay(){
return reconnectionDelay;
}
@Override
public String toString(){
return
"Config{" +
",socketioTransports = '" + socketioTransports + '\'' +
",allowGuestSearching = '" + allowGuestSearching + '\'' +
",hasImageUploadPlugin = '" + hasImageUploadPlugin + '\'' +
",showSiteTitle = '" + showSiteTitle + '\'' +
",websocketAddress = '" + websocketAddress + '\'' +
",maximumFileSize = '" + maximumFileSize + '\'' +
",usePagination = '" + usePagination + '\'' +
",minimumPostLength = '" + minimumPostLength + '\'' +
",allowGuestUserSearching = '" + allowGuestUserSearching + '\'' +
",allowTopicsThumbnail = '" + allowTopicsThumbnail + '\'' +
",allowGuestHandles = '" + allowGuestHandles + '\'' +
",disableChatMessageEditing = '" + disableChatMessageEditing + '\'' +
",version = '" + version + '\'' +
",minimumTitleLength = '" + minimumTitleLength + '\'' +
",maximumTagsPerTopic = '" + maximumTagsPerTopic + '\'' +
",topicPostSort = '" + topicPostSort + '\'' +
",defaultBootswatchSkin = '" + defaultBootswatchSkin + '\'' +
",allowFileUploads = '" + allowFileUploads + '\'' +
",maximumPostLength = '" + maximumPostLength + '\'' +
",loggedIn = '" + loggedIn + '\'' +
",postsPerPage = '" + postsPerPage + '\'' +
",relative_path = '" + relativePath + '\'' +
",requireEmailConfirmation = '" + requireEmailConfirmation + '\'' +
",defaultLang = '" + defaultLang + '\'' +
",disableChat = '" + disableChat + '\'' +
",userLang = '" + userLang + '\'' +
",maxReconnectionAttempts = '" + maxReconnectionAttempts + '\'' +
",timeagoCutoff = '" + timeagoCutoff + '\'' +
",browserTitle = '" + browserTitle + '\'' +
",siteTitle = '" + siteTitle + '\'' +
",csrf_token = '" + csrfToken + '\'' +
",categoryTopicSort = '" + categoryTopicSort + '\'' +
",disableMasonry = '" + disableMasonry + '\'' +
",theme:src = '" + themeSrc + '\'' +
",cookies = '" + cookies + '\'' +
",markdown = '" + markdown + '\'' +
",minimumTagLength = '" + minimumTagLength + '\'' +
",maximumTagLength = '" + maximumTagLength + '\'' +
",maximumTitleLength = '" + maximumTitleLength + '\'' +
",topicsPerPage = '" + topicsPerPage + '\'' +
",useOutgoingLinksPage = '" + useOutgoingLinksPage + '\'' +
",bootswatchSkin = '" + bootswatchSkin + '\'' +
",minimumTagsPerTopic = '" + minimumTagsPerTopic + '\'' +
",delayImageLoading = '" + delayImageLoading + '\'' +
",cache-buster = '" + cacheBuster + '\'' +
",titleLayout = '" + titleLayout + '\'' +
",theme:id = '" + themeId + '\'' +
",topicSearchEnabled = '" + topicSearchEnabled + '\'' +
",searchEnabled = '" + searchEnabled + '\'' +
",reconnectionDelay = '" + reconnectionDelay + '\'' +
"}";
}
}

View File

@ -0,0 +1,62 @@
package com.stardust.scriptdroid.network.entity.config;
import com.google.gson.annotations.SerializedName;
public class Cookies {
@SerializedName("link")
private String link;
@SerializedName("dismiss")
private String dismiss;
@SerializedName("message")
private String message;
@SerializedName("enabled")
private boolean enabled;
public void setLink(String link) {
this.link = link;
}
public String getLink() {
return link;
}
public void setDismiss(String dismiss) {
this.dismiss = dismiss;
}
public String getDismiss() {
return dismiss;
}
public void setMessage(String message) {
this.message = message;
}
public String getMessage() {
return message;
}
public void setEnabled(boolean enabled) {
this.enabled = enabled;
}
public boolean isEnabled() {
return enabled;
}
@Override
public String toString() {
return
"Cookies{" +
"link = '" + link + '\'' +
",dismiss = '" + dismiss + '\'' +
",message = '" + message + '\'' +
",enabled = '" + enabled + '\'' +
"}";
}
}

View File

@ -0,0 +1,37 @@
package com.stardust.scriptdroid.network.entity.config;
import com.google.gson.annotations.SerializedName;
public class Markdown{
@SerializedName("highlight")
private int highlight;
@SerializedName("theme")
private String theme;
public void setHighlight(int highlight){
this.highlight = highlight;
}
public int getHighlight(){
return highlight;
}
public void setTheme(String theme){
this.theme = theme;
}
public String getTheme(){
return theme;
}
@Override
public String toString(){
return
"Markdown{" +
"highlight = '" + highlight + '\'' +
",theme = '" + theme + '\'' +
"}";
}
}

View File

@ -1,4 +1,4 @@
package com.stardust.scriptdroid.network.entity;
package com.stardust.scriptdroid.network.entity.user;
import com.google.gson.annotations.SerializedName;

View File

@ -1,4 +1,4 @@
package com.stardust.scriptdroid.network.entity;
package com.stardust.scriptdroid.network.entity.user;
import java.util.List;
import com.google.gson.annotations.SerializedName;

View File

@ -1,13 +1,11 @@
package com.stardust.scriptdroid.ui.doc;
import android.app.Activity;
import android.webkit.WebView;
import com.stardust.scriptdroid.Pref;
import com.stardust.scriptdroid.R;
import com.stardust.scriptdroid.ui.BaseActivity;
import com.stardust.util.BackPressedHandler;
import com.stardust.widget.EWebView;
import com.stardust.scriptdroid.ui.widget.EWebView;
import org.androidannotations.annotations.AfterViews;
import org.androidannotations.annotations.EActivity;

View File

@ -9,7 +9,7 @@ import android.widget.TextView;
import com.afollestad.materialdialogs.MaterialDialog;
import com.stardust.scriptdroid.R;
import com.stardust.widget.EWebView;
import com.stardust.scriptdroid.ui.widget.EWebView;
import butterknife.BindView;
import butterknife.ButterKnife;

View File

@ -1,19 +1,15 @@
package com.stardust.scriptdroid.ui.doc;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager;
import android.view.View;
import android.webkit.WebView;
import com.stardust.scriptdroid.Pref;
import com.stardust.scriptdroid.R;
import com.stardust.scriptdroid.ui.main.ViewPagerFragment;
import com.stardust.util.BackPressedHandler;
import com.stardust.widget.EWebView;
import com.stardust.scriptdroid.ui.widget.EWebView;
import org.androidannotations.annotations.AfterViews;
import org.androidannotations.annotations.EFragment;

View File

@ -2,20 +2,13 @@ package com.stardust.scriptdroid.ui.edit;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.widget.DrawerLayout;
import android.view.Menu;
import android.view.MenuItem;
import com.afollestad.materialdialogs.DialogAction;
import com.afollestad.materialdialogs.MaterialDialog;
import com.stardust.scriptdroid.Pref;
import com.stardust.scriptdroid.R;
import com.stardust.scriptdroid.model.script.ScriptFile;
import com.stardust.scriptdroid.ui.BaseActivity;
import com.stardust.theme.dialog.ThemeColorMaterialDialogBuilder;
import com.stardust.widget.EWebView;
import org.androidannotations.annotations.AfterViews;
import org.androidannotations.annotations.EActivity;

View File

@ -27,8 +27,8 @@ import com.stardust.scriptdroid.ui.edit.completion.CodeCompletions;
import com.stardust.scriptdroid.ui.edit.completion.CodeCompletionBar;
import com.stardust.scriptdroid.ui.edit.completion.InputMethodEnhancedBarColors;
import com.stardust.scriptdroid.ui.edit.completion.Symbols;
import com.stardust.widget.EWebView;
import com.stardust.widget.ToolbarMenuItem;
import com.stardust.scriptdroid.ui.widget.EWebView;
import com.stardust.scriptdroid.ui.widget.ToolbarMenuItem;
import com.stardust.widget.ViewSwitcher;
import org.androidannotations.annotations.AfterViews;

View File

@ -23,7 +23,7 @@ import com.stardust.scriptdroid.ui.common.ScriptOperations;
import com.stardust.theme.ThemeColorManager;
import com.stardust.util.AssetsCache;
import com.stardust.util.SparseArrayEntries;
import com.stardust.widget.ToolbarMenuItem;
import com.stardust.scriptdroid.ui.widget.ToolbarMenuItem;
import butterknife.ButterKnife;
import butterknife.OnClick;

View File

@ -9,7 +9,6 @@ import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CheckBox;
import android.widget.TextView;
import com.stardust.pio.PFile;
@ -17,8 +16,8 @@ import com.stardust.pio.PFiles;
import com.stardust.scriptdroid.R;
import com.stardust.scriptdroid.model.script.ScriptFile;
import com.stardust.scriptdroid.ui.main.scripts.ScriptListView;
import com.stardust.widget.BindableViewHolder;
import com.stardust.widget.CheckBoxCompat;
import com.stardust.scriptdroid.ui.widget.BindableViewHolder;
import com.stardust.scriptdroid.ui.widget.CheckBoxCompat;
import java.util.ArrayList;
import java.util.LinkedHashMap;

View File

@ -13,7 +13,7 @@ import com.stardust.enhancedfloaty.FloatyService;
import com.stardust.scriptdroid.R;
import com.stardust.scriptdroid.ui.floating.FullScreenFloatyWindow;
import com.stardust.view.accessibility.NodeInfo;
import com.stardust.widget.BubblePopupMenu;
import com.stardust.scriptdroid.ui.widget.BubblePopupMenu;
import java.util.Arrays;

View File

@ -11,10 +11,9 @@ import com.afollestad.materialdialogs.MaterialDialog;
import com.afollestad.materialdialogs.Theme;
import com.stardust.enhancedfloaty.FloatyService;
import com.stardust.scriptdroid.R;
import com.stardust.scriptdroid.autojs.AutoJs;
import com.stardust.scriptdroid.ui.floating.FullScreenFloatyWindow;
import com.stardust.view.accessibility.NodeInfo;
import com.stardust.widget.BubblePopupMenu;
import com.stardust.scriptdroid.ui.widget.BubblePopupMenu;
import java.util.Arrays;

View File

@ -16,7 +16,7 @@ import android.widget.TextView;
import com.stardust.scriptdroid.R;
import com.stardust.view.accessibility.NodeInfo;
import com.stardust.util.ViewUtil;
import com.stardust.widget.LevelBeamView;
import com.stardust.scriptdroid.ui.widget.LevelBeamView;
import java.util.Collections;
import java.util.HashSet;

View File

@ -1,13 +1,10 @@
package com.stardust.scriptdroid.ui.login;
import android.util.Log;
import android.widget.TextView;
import android.widget.Toast;
import com.stardust.scriptdroid.R;
import com.stardust.scriptdroid.network.NodeBB;
import com.stardust.scriptdroid.network.api.UserApi;
import com.stardust.scriptdroid.network.entity.VerifyResponse;
import com.stardust.scriptdroid.tool.SimpleObserver;
import com.stardust.scriptdroid.network.UserService;
import com.stardust.scriptdroid.ui.BaseActivity;
import org.androidannotations.annotations.AfterViews;
@ -16,7 +13,6 @@ import org.androidannotations.annotations.EActivity;
import org.androidannotations.annotations.ViewById;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.annotations.NonNull;
import io.reactivex.schedulers.Schedulers;
/**
@ -43,24 +39,16 @@ public class LoginActivity extends BaseActivity {
if (!checkNotEmpty(userName, password)) {
return;
}
NodeBB.getInstance().getRetrofit()
.create(UserApi.class)
.verify(userName, password)
UserService.getInstance().login(userName, password)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new SimpleObserver<VerifyResponse>() {
.subscribe(response -> {
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());
@Override
public void onNext(@NonNull VerifyResponse verifyResponse) {
Log.d("Login", verifyResponse.toString());
}
@Override
public void onError(@NonNull Throwable e) {
e.printStackTrace();
}
});
}
private boolean checkNotEmpty(String userName, String password) {

View File

@ -40,9 +40,9 @@ import com.stardust.scriptdroid.ui.BaseActivity;
import com.stardust.scriptdroid.ui.settings.SettingsActivity_;
import com.stardust.scriptdroid.ui.update.VersionGuard;
import com.stardust.util.BackPressedHandler;
import com.stardust.view.DrawerAutoClose;
import com.stardust.widget.CommonMarkdownView;
import com.stardust.widget.SearchViewItem;
import com.stardust.util.DrawerAutoClose;
import com.stardust.scriptdroid.ui.widget.CommonMarkdownView;
import com.stardust.scriptdroid.ui.widget.SearchViewItem;
import org.androidannotations.annotations.AfterViews;
import org.androidannotations.annotations.Click;

View File

@ -6,12 +6,10 @@ import android.support.annotation.Nullable;
import android.support.design.widget.FloatingActionButton;
import android.webkit.WebView;
import com.stardust.scriptdroid.Pref;
import com.stardust.scriptdroid.R;
import com.stardust.scriptdroid.ui.main.QueryEvent;
import com.stardust.scriptdroid.ui.main.ViewPagerFragment;
import com.stardust.util.BackPressedHandler;
import com.stardust.widget.EWebView;
import org.androidannotations.annotations.AfterViews;
import org.androidannotations.annotations.EFragment;
@ -20,7 +18,6 @@ import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import java.net.URLEncoder;
import java.util.regex.Pattern;
/**
* Created by Stardust on 2017/8/22.

View File

@ -1,25 +1,21 @@
package com.stardust.scriptdroid.ui.main.community;
import android.content.Context;
import android.content.DialogInterface;
import android.net.Uri;
import android.support.design.widget.BottomSheetDialog;
import android.support.design.widget.Snackbar;
import android.util.AttributeSet;
import android.webkit.ValueCallback;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import com.stardust.pio.PFile;
import com.stardust.scriptdroid.R;
import com.stardust.scriptdroid.io.StorageFileProvider;
import com.stardust.scriptdroid.model.script.ScriptFile;
import com.stardust.scriptdroid.model.script.Scripts;
import com.stardust.scriptdroid.network.download.DownloadManager;
import com.stardust.scriptdroid.ui.common.OptionListView;
import com.stardust.scriptdroid.ui.common.ScriptOperations;
import com.stardust.scriptdroid.ui.filechooser.FileChooserDialogBuilder;
import com.stardust.widget.EWebView;
import com.stardust.scriptdroid.ui.widget.EWebView;
import java.util.regex.Pattern;

View File

@ -1,15 +1,12 @@
package com.stardust.scriptdroid.ui.main.drawer;
import android.content.DialogInterface;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import com.afollestad.materialdialogs.DialogAction;
import com.afollestad.materialdialogs.MaterialDialog;
import com.stardust.scriptdroid.App;
import com.stardust.scriptdroid.Pref;
@ -19,7 +16,7 @@ import com.stardust.scriptdroid.ui.floating.FloatyWindowManger;
import com.stardust.scriptdroid.network.NodeBB;
import com.stardust.scriptdroid.network.VersionService;
import com.stardust.scriptdroid.network.api.UserApi;
import com.stardust.scriptdroid.network.entity.User;
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_;
@ -39,12 +36,9 @@ import org.androidannotations.annotations.ViewById;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import java.util.concurrent.Callable;
import io.reactivex.Observable;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import io.reactivex.functions.Consumer;
import io.reactivex.schedulers.Schedulers;

View File

@ -7,7 +7,6 @@ import android.support.annotation.Nullable;
import android.support.annotation.RequiresApi;
import android.util.AttributeSet;
import android.view.View;
import android.widget.AutoCompleteTextView;
import android.widget.CompoundButton;
import android.widget.FrameLayout;
import android.widget.ImageView;
@ -15,8 +14,8 @@ import android.widget.TextView;
import android.widget.Toast;
import com.stardust.scriptdroid.R;
import com.stardust.widget.PrefSwitch;
import com.stardust.widget.SwitchCompat;
import com.stardust.scriptdroid.ui.widget.PrefSwitch;
import com.stardust.scriptdroid.ui.widget.SwitchCompat;
import butterknife.BindView;
import butterknife.ButterKnife;

View File

@ -27,7 +27,7 @@ import com.stardust.scriptdroid.ui.common.ScriptLoopDialog;
import com.stardust.scriptdroid.ui.common.ScriptOperations;
import com.stardust.scriptdroid.ui.floating.EditorFloaty;
import com.stardust.scriptdroid.ui.viewmodel.ScriptList;
import com.stardust.widget.BindableViewHolder;
import com.stardust.scriptdroid.ui.widget.BindableViewHolder;
import org.greenrobot.eventbus.Subscribe;

View File

@ -13,7 +13,7 @@ import com.stardust.autojs.core.console.StardustConsole;
import com.stardust.scriptdroid.R;
import com.stardust.scriptdroid.autojs.AutoJs;
import com.stardust.scriptdroid.ui.main.ViewPagerFragment;
import com.stardust.widget.SimpleAdapterDataObserver;
import com.stardust.scriptdroid.ui.widget.SimpleAdapterDataObserver;
import org.androidannotations.annotations.AfterViews;
import org.androidannotations.annotations.Click;

View File

@ -21,7 +21,7 @@ import com.stardust.scriptdroid.io.StorageFileProvider;
import com.stardust.scriptdroid.tool.IntentTool;
import com.stardust.util.DownloadTask;
import com.stardust.util.IntentUtil;
import com.stardust.widget.CommonMarkdownView;
import com.stardust.scriptdroid.ui.widget.CommonMarkdownView;
/**
* Created by Stardust on 2017/4/9.

View File

@ -1,4 +1,4 @@
package com.stardust.widget;
package com.stardust.scriptdroid.ui.widget;
import android.app.Activity;
import android.content.Context;

View File

@ -1,4 +1,4 @@
package com.stardust.widget;
package com.stardust.scriptdroid.ui.widget;
import android.support.v7.widget.RecyclerView;
import android.view.ViewGroup;

View File

@ -1,4 +1,4 @@
package com.stardust.widget;
package com.stardust.scriptdroid.ui.widget;
import android.support.v7.widget.RecyclerView;
import android.view.View;

View File

@ -1,4 +1,4 @@
package com.stardust.widget;
package com.stardust.scriptdroid.ui.widget;
import android.content.Context;
import android.graphics.Color;

View File

@ -1,4 +1,4 @@
package com.stardust.widget;
package com.stardust.scriptdroid.ui.widget;
import android.content.Context;
import android.support.v7.widget.AppCompatCheckBox;

View File

@ -1,4 +1,4 @@
package com.stardust.widget;
package com.stardust.scriptdroid.ui.widget;
import android.content.Context;
import android.content.Intent;
@ -12,7 +12,6 @@ import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.FrameLayout;
import com.afollestad.materialdialogs.MaterialDialog;
import com.stardust.theme.dialog.ThemeColorMaterialDialogBuilder;
import org.commonmark.ext.heading.anchor.HeadingAnchorExtension;

View File

@ -1,4 +1,4 @@
package com.stardust.widget;
package com.stardust.scriptdroid.ui.widget;
import android.annotation.SuppressLint;
import android.content.Context;

View File

@ -1,4 +1,4 @@
package com.stardust.widget;
package com.stardust.scriptdroid.ui.widget;
import android.content.Context;
import android.support.annotation.Nullable;

View File

@ -1,4 +1,4 @@
package com.stardust.widget;
package com.stardust.scriptdroid.ui.widget;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.helper.ItemTouchHelper;

View File

@ -1,4 +1,4 @@
package com.stardust.widget;
package com.stardust.scriptdroid.ui.widget;
import android.content.Context;
import android.graphics.Canvas;

View File

@ -1,4 +1,4 @@
package com.stardust.widget;
package com.stardust.scriptdroid.ui.widget;
import android.support.v7.widget.RecyclerView;
import android.view.View;

View File

@ -1,12 +1,10 @@
package com.stardust.widget;
package com.stardust.scriptdroid.ui.widget;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.res.TypedArray;
import android.preference.PreferenceManager;
import android.support.annotation.IntDef;
import android.util.AttributeSet;
import android.view.View;
import com.stardust.scriptdroid.R;

View File

@ -1,4 +1,4 @@
package com.stardust.widget;
package com.stardust.scriptdroid.ui.widget;
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;

View File

@ -1,4 +1,4 @@
package com.stardust.widget;
package com.stardust.scriptdroid.ui.widget;
import android.app.Activity;
import android.app.SearchManager;

View File

@ -1,4 +1,4 @@
package com.stardust.widget;
package com.stardust.scriptdroid.ui.widget;
import android.support.v7.widget.RecyclerView;

View File

@ -1,4 +1,4 @@
package com.stardust.widget;
package com.stardust.scriptdroid.ui.widget;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;

View File

@ -1,4 +1,4 @@
package com.stardust.widget;
package com.stardust.scriptdroid.ui.widget;
import android.annotation.TargetApi;
import android.content.Context;

View File

@ -1,4 +1,4 @@
package com.stardust.widget;
package com.stardust.scriptdroid.ui.widget;
import android.content.Context;
import android.util.AttributeSet;

View File

@ -1,4 +1,4 @@
package com.stardust.widget;
package com.stardust.scriptdroid.ui.widget;
import android.annotation.TargetApi;
import android.content.Context;

View File

@ -1,4 +1,4 @@
package com.stardust.widget;
package com.stardust.scriptdroid.ui.widget;
import android.support.v7.widget.RecyclerView;
import android.view.ViewGroup;

View File

@ -1,4 +1,4 @@
package com.stardust.widget;
package com.stardust.scriptdroid.ui.widget;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
@ -6,7 +6,6 @@ import android.view.View;
import android.view.ViewGroup;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
/**
* Created by Stardust on 2017/4/8.

View File

@ -1,54 +0,0 @@
package com.stardust.view;
import android.view.View;
import java.util.Stack;
/**
* Created by Stardust on 2017/3/11.
*/
public class ViewStack {
public interface CurrentViewSetter {
void setCurrentView(View v);
}
public interface NavigableView {
void goBack();
}
private Stack<View> mStack = new Stack<>();
private CurrentViewSetter mCurrentViewSetter;
public ViewStack(CurrentViewSetter currentViewSetter) {
mCurrentViewSetter = currentViewSetter;
}
public void navigateTo(View v) {
mStack.push(v);
mCurrentViewSetter.setCurrentView(v);
}
public boolean canGoBack() {
return mStack.size() > 1;
}
public void goBack() {
mCurrentViewSetter.setCurrentView(mStack.pop());
}
public void goBackToFirst() {
while (mStack.size() > 1) {
mStack.pop();
}
mCurrentViewSetter.setCurrentView(mStack.peek());
}
public void setRootView(View view) {
mStack.clear();
mStack.push(view);
}
}

View File

@ -20,7 +20,7 @@
</android.support.design.widget.AppBarLayout>
<com.stardust.widget.EWebView
<com.stardust.scriptdroid.ui.widget.EWebView
android:id="@+id/eweb_view"
android:layout_width="match_parent"
android:layout_height="match_parent"/>

View File

@ -27,7 +27,7 @@
android:layout_gravity="right"
android:orientation="horizontal">
<com.stardust.widget.ToolbarMenuItem
<com.stardust.scriptdroid.ui.widget.ToolbarMenuItem
android:id="@+id/edit"
android:layout_width="40dp"
android:layout_height="match_parent"
@ -35,7 +35,7 @@
app:icon_color="@android:color/white"
app:text="@string/text_edit"/>
<com.stardust.widget.ToolbarMenuItem
<com.stardust.scriptdroid.ui.widget.ToolbarMenuItem
android:id="@+id/run"
android:layout_width="40dp"
android:layout_height="match_parent"

View File

@ -27,7 +27,7 @@
android:textColor="@android:color/primary_text_light"
android:textSize="18sp"/>
<com.stardust.widget.CommonMarkdownView
<com.stardust.scriptdroid.ui.widget.CommonMarkdownView
android:id="@+id/release_notes"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>

View File

@ -39,7 +39,7 @@
android:textSize="14sp"
tools:text="@string/text_auto_operate_service"/>
<com.stardust.widget.PrefSwitch
<com.stardust.scriptdroid.ui.widget.PrefSwitch
android:id="@+id/sw"
android:layout_width="wrap_content"
android:layout_height="wrap_content"

View File

@ -31,7 +31,7 @@
android:layout_gravity="right"
android:orientation="horizontal">
<com.stardust.widget.ToolbarMenuItem
<com.stardust.scriptdroid.ui.widget.ToolbarMenuItem
android:id="@+id/run"
android:layout_width="40dp"
android:layout_height="match_parent"
@ -39,21 +39,21 @@
app:icon_color="@android:color/white"
app:text="@string/text_run"/>
<com.stardust.widget.ToolbarMenuItem
<com.stardust.scriptdroid.ui.widget.ToolbarMenuItem
android:id="@+id/undo"
android:layout_width="40dp"
android:layout_height="match_parent"
app:icon="@drawable/ic_undo_white_48dp"
app:text="@string/text_undo"/>
<com.stardust.widget.ToolbarMenuItem
<com.stardust.scriptdroid.ui.widget.ToolbarMenuItem
android:id="@+id/redo"
android:layout_width="40dp"
android:layout_height="match_parent"
app:icon="@drawable/ic_redo_white_48dp"
app:text="@string/text_redo"/>
<com.stardust.widget.ToolbarMenuItem
<com.stardust.scriptdroid.ui.widget.ToolbarMenuItem
android:id="@+id/save"
android:layout_width="40dp"
android:layout_height="match_parent"
@ -70,21 +70,21 @@
android:layout_gravity="right"
android:orientation="horizontal">
<com.stardust.widget.ToolbarMenuItem
<com.stardust.scriptdroid.ui.widget.ToolbarMenuItem
android:id="@+id/replace"
android:layout_width="40dp"
android:layout_height="match_parent"
app:icon="@drawable/ic_ali_replace"
app:text="@string/text_replace"/>
<com.stardust.widget.ToolbarMenuItem
<com.stardust.scriptdroid.ui.widget.ToolbarMenuItem
android:id="@+id/find_prev"
android:layout_width="40dp"
android:layout_height="match_parent"
app:icon="@drawable/ic_ali_up"
app:text="@string/text_find_prev"/>
<com.stardust.widget.ToolbarMenuItem
<com.stardust.scriptdroid.ui.widget.ToolbarMenuItem
android:id="@+id/find_next"
android:layout_width="40dp"
android:layout_height="match_parent"
@ -92,7 +92,7 @@
app:text="@string/text_find_next"/>
<com.stardust.widget.ToolbarMenuItem
<com.stardust.scriptdroid.ui.widget.ToolbarMenuItem
android:id="@+id/cancel"
android:layout_width="40dp"
android:layout_height="match_parent"
@ -161,7 +161,7 @@
</LinearLayout>
<com.stardust.widget.EWebView
<com.stardust.scriptdroid.ui.widget.EWebView
android:id="@+id/docs"
android:layout_width="match_parent"
android:layout_height="match_parent"

View File

@ -20,7 +20,7 @@
android:paddingBottom="16dp"
android:paddingTop="16dp">
<com.stardust.widget.CheckBoxCompat
<com.stardust.scriptdroid.ui.widget.CheckBoxCompat
android:id="@+id/checkbox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"

View File

@ -20,7 +20,7 @@
android:orientation="horizontal"
android:padding="8dp">
<com.stardust.widget.CheckBoxCompat
<com.stardust.scriptdroid.ui.widget.CheckBoxCompat
android:id="@+id/checkbox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"

View File

@ -14,14 +14,14 @@
android:layout_height="wrap_content"
android:orientation="horizontal">
<com.stardust.widget.ToolbarMenuItem
<com.stardust.scriptdroid.ui.widget.ToolbarMenuItem
android:id="@+id/close"
android:layout_width="40dp"
android:layout_height="match_parent"
app:icon="@drawable/ic_close_white_48dp"
app:text="@string/text_close"/>
<com.stardust.widget.ToolbarMenuItem
<com.stardust.scriptdroid.ui.widget.ToolbarMenuItem
android:id="@+id/move_or_resize"
android:layout_width="40dp"
android:layout_height="match_parent"

View File

@ -63,7 +63,7 @@
android:background="#cccccc"/>
<com.stardust.widget.EWebView
<com.stardust.scriptdroid.ui.widget.EWebView
android:id="@+id/eweb_view"
android:layout_width="match_parent"
android:layout_height="match_parent"/>

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<com.stardust.widget.EWebView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/eweb_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"/>
<com.stardust.scriptdroid.ui.widget.EWebView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/eweb_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"/>

View File

@ -6,7 +6,7 @@
android:layout_height="32dp"
android:padding="5dp">
<com.stardust.widget.LevelBeamView
<com.stardust.scriptdroid.ui.widget.LevelBeamView
android:id="@+id/dataItemLevelBeam"
android:layout_width="wrap_content"
android:layout_height="32dp"/>

View File

@ -264,6 +264,8 @@
<string name="text_floating_edit">悬浮编辑</string>
<string name="text_select_icon">选择图标</string>
<string name="text_use_android_n_shortcut">添加到图标快捷方式</string>
<string name="text_login_succeed">登录成功</string>
<string name="text_login_fail">登录失败</string>
<string-array name="ad_showing_mode_keys">

View File

@ -20,6 +20,9 @@ import com.stardust.automator.simple_action.SimpleAction;
import com.stardust.util.DeveloperUtils;
import com.stardust.util.ScreenMetrics;
import org.mozilla.javascript.Context;
import org.mozilla.javascript.NativeJavaObject;
/**
* Created by Stardust on 2017/4/2.
*/

View File

@ -1,4 +1,4 @@
package com.stardust.view;
package com.stardust.util;
import android.app.Activity;
import android.support.v4.widget.DrawerLayout;