From 7699dc66a19dec17c27c6389f726817900b39e88 Mon Sep 17 00:00:00 2001 From: hyb1996 <946994919@qq.com> Date: Tue, 20 Jun 2017 23:41:49 +0800 Subject: [PATCH] fix hyb1996-guest/AutoJsIssueReport#3451 hyb1996-guest/AutoJsIssueReport#3455 --- .../assets/help/documentation/UI(用户界面).md | 2 + .../java/com/stardust/scriptdroid/App.java | 7 ++ .../menu/content/RecordNavigatorContent.java | 2 +- .../scriptdroid/ui/main/MainActivity.java | 78 +++++++++++++++---- .../com/stardust/view/DrawerAutoClose.java | 30 +++++++ autojs/build.gradle | 1 - automator/build.gradle | 1 + build.gradle | 2 +- common/build.gradle | 2 +- .../com/stardust/util/BackPressedHandler.java | 19 ----- .../java/com/stardust/util/StateObserver.java | 14 ---- 11 files changed, 108 insertions(+), 50 deletions(-) create mode 100644 app/src/main/java/com/stardust/view/DrawerAutoClose.java diff --git a/app/src/main/assets/help/documentation/UI(用户界面).md b/app/src/main/assets/help/documentation/UI(用户界面).md index e69de29b..be52b5f0 100644 --- a/app/src/main/assets/help/documentation/UI(用户界面).md +++ b/app/src/main/assets/help/documentation/UI(用户界面).md @@ -0,0 +1,2 @@ + +### text(文件控件) \ No newline at end of file diff --git a/app/src/main/java/com/stardust/scriptdroid/App.java b/app/src/main/java/com/stardust/scriptdroid/App.java index 822ad6b6..4f485756 100644 --- a/app/src/main/java/com/stardust/scriptdroid/App.java +++ b/app/src/main/java/com/stardust/scriptdroid/App.java @@ -18,6 +18,7 @@ import com.stardust.scriptdroid.ui.error.ErrorReportActivity; import com.stardust.theme.ThemeColor; import com.stardust.theme.ThemeColorManager; import com.stardust.util.ScreenMetrics; +import com.stardust.util.UiHandler; import java.lang.ref.WeakReference; @@ -30,6 +31,7 @@ public class App extends MultiDexApplication { private static final String TAG = "App"; private static WeakReference instance; + private UiHandler mUiHandler; public static App getApp() { return instance.get(); @@ -40,6 +42,7 @@ public class App extends MultiDexApplication { public void onCreate() { super.onCreate(); instance = new WeakReference<>(this); + mUiHandler = new UiHandler(this); setUpStaticsTool(); setUpDebugEnvironment(); init(); @@ -91,4 +94,8 @@ public class App extends MultiDexApplication { public VolumeChangeObserver getVolumeChangeObserver() { return mVolumeChangeObserver; } + + public UiHandler getUiHandler() { + return mUiHandler; + } } diff --git a/app/src/main/java/com/stardust/scriptdroid/external/floatingwindow/menu/content/RecordNavigatorContent.java b/app/src/main/java/com/stardust/scriptdroid/external/floatingwindow/menu/content/RecordNavigatorContent.java index 18f52231..80d8125a 100644 --- a/app/src/main/java/com/stardust/scriptdroid/external/floatingwindow/menu/content/RecordNavigatorContent.java +++ b/app/src/main/java/com/stardust/scriptdroid/external/floatingwindow/menu/content/RecordNavigatorContent.java @@ -188,7 +188,7 @@ public class RecordNavigatorContent implements NavigatorContent, Recorder.OnStat @Override public void onStart() { - Toast.makeText(mContext, R.string.text_start_record, Toast.LENGTH_SHORT).show(); + App.getApp().getUiHandler().toast(R.string.text_start_record); } @Override diff --git a/app/src/main/java/com/stardust/scriptdroid/ui/main/MainActivity.java b/app/src/main/java/com/stardust/scriptdroid/ui/main/MainActivity.java index de8e5799..eac78a05 100644 --- a/app/src/main/java/com/stardust/scriptdroid/ui/main/MainActivity.java +++ b/app/src/main/java/com/stardust/scriptdroid/ui/main/MainActivity.java @@ -9,6 +9,7 @@ import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.support.annotation.NonNull; +import android.support.annotation.Nullable; import android.support.design.widget.Snackbar; import android.support.design.widget.TabLayout; import android.support.v4.app.Fragment; @@ -49,7 +50,9 @@ import com.stardust.scriptdroid.ui.settings.SettingsActivity; import com.stardust.scriptdroid.ui.update.VersionGuard; import com.stardust.theme.dialog.ThemeColorMaterialDialogBuilder; import com.stardust.util.BackPressedHandler; +import com.stardust.util.Callback; import com.stardust.util.MessageEvent; +import com.stardust.view.DrawerAutoClose; import com.stardust.view.ViewBinder; import com.stardust.view.ViewBinding; import com.stardust.view.accessibility.AccessibilityServiceUtils; @@ -130,7 +133,7 @@ public class MainActivity extends BaseActivity implements OnActivityResultDelega return false; } }); - registerBackPressedHandler(new BackPressedHandler.DrawerAutoClose(mDrawerLayout, Gravity.START)); + registerBackPressedHandler(new DrawerAutoClose(mDrawerLayout, Gravity.START)); registerBackPressedHandler(new BackPressedHandler.DoublePressExit(this, R.string.text_press_again_to_exit)); } @@ -216,12 +219,22 @@ public class MainActivity extends BaseActivity implements OnActivityResultDelega @ViewBinding.Click(R.id.create_new_file) private void createScriptFile() { - getMyScriptListFragment().newScriptFile(); + doWithMyScriptListFragment(new Callback() { + @Override + public void call(MyScriptListFragment myScriptListFragment) { + myScriptListFragment.newScriptFile(); + } + }); } @ViewBinding.Click(R.id.create_new_directory) private void createNewDirectory() { - getMyScriptListFragment().newDirectory(); + doWithMyScriptListFragment(new Callback() { + @Override + public void call(MyScriptListFragment myScriptListFragment) { + myScriptListFragment.newDirectory(); + } + }); } @ViewBinding.Click(R.id.import_from_file) @@ -231,10 +244,15 @@ public class MainActivity extends BaseActivity implements OnActivityResultDelega .scriptProvider(provider) .fileCallback(new ScriptFileChooserDialogBuilder.FileCallback() { @Override - public void onFileSelection(MaterialDialog dialog, ScriptFile file) { + public void onFileSelection(MaterialDialog dialog, final ScriptFile file) { dialog.dismiss(); provider.clearCacheExceptInitialDirectory(); - getMyScriptListFragment().importFile(file.getPath()); + doWithMyScriptListFragment(new Callback() { + @Override + public void call(MyScriptListFragment myScriptListFragment) { + myScriptListFragment.importFile(file.getPath()); + } + }); } }) .title(R.string.text_please_choose_file_to_import) @@ -317,13 +335,18 @@ public class MainActivity extends BaseActivity implements OnActivityResultDelega if (fragment == null) { mIntentToHandle = intent; } else { - Sample sample = (Sample) intent.getSerializableExtra(ARGUMENT_SAMPLE); - try { - getMyScriptListFragment().importFile(sample.name, getAssets().open(sample.path)); - } catch (IOException e) { - e.printStackTrace(); - Snackbar.make(mDrawerLayout, R.string.text_import_fail, Snackbar.LENGTH_SHORT).show(); - } + final Sample sample = (Sample) intent.getSerializableExtra(ARGUMENT_SAMPLE); + doWithMyScriptListFragment(new Callback() { + @Override + public void call(MyScriptListFragment myScriptListFragment) { + try { + myScriptListFragment.importFile(sample.name, getAssets().open(sample.path)); + } catch (IOException e) { + e.printStackTrace(); + Snackbar.make(mDrawerLayout, R.string.text_import_fail, Snackbar.LENGTH_SHORT).show(); + } + } + }); } } @@ -335,7 +358,12 @@ public class MainActivity extends BaseActivity implements OnActivityResultDelega @Override public void onSelection(MaterialDialog dialog, View itemView, int position, CharSequence text) { if (position == 0) { - getMyScriptListFragment().newScriptFileForScript(script); + doWithMyScriptListFragment(new Callback() { + @Override + public void call(MyScriptListFragment myScriptListFragment) { + myScriptListFragment.newScriptFileForScript(script); + } + }); } else { ((ClipboardManager) getSystemService(CLIPBOARD_SERVICE)) .setPrimaryClip(ClipData.newPlainText("script", script)); @@ -369,7 +397,30 @@ public class MainActivity extends BaseActivity implements OnActivityResultDelega .putExtra(ARGUMENT_SAMPLE, sample)); } + public void doWithMyScriptListFragment(final Callback callback) { + MyScriptListFragment fragment = ((MyScriptListFragment) mPagerAdapter.getStoredFragment(0)); + if (fragment != null) { + callback.call(fragment); + return; + } + mViewPager.setCurrentItem(0); + mViewPager.addOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() { + @Override + public void onPageSelected(int position) { + if (position == 0) { + mViewPager.removeOnPageChangeListener(this); + doWithMyScriptListFragment(callback); + } + } + }); + } + + @Nullable public MyScriptListFragment getMyScriptListFragment() { + MyScriptListFragment fragment = ((MyScriptListFragment) mPagerAdapter.getStoredFragment(0)); + if (fragment == null) { + mViewPager.setCurrentItem(0); + } return ((MyScriptListFragment) mPagerAdapter.getStoredFragment(0)); } @@ -412,6 +463,7 @@ public class MainActivity extends BaseActivity implements OnActivityResultDelega context.startActivity(intent); } + @NonNull @Override public OnActivityResultDelegate.Mediator getOnActivityResultDelegateMediator() { return mActivityResultMediator; diff --git a/app/src/main/java/com/stardust/view/DrawerAutoClose.java b/app/src/main/java/com/stardust/view/DrawerAutoClose.java new file mode 100644 index 00000000..86c72f59 --- /dev/null +++ b/app/src/main/java/com/stardust/view/DrawerAutoClose.java @@ -0,0 +1,30 @@ +package com.stardust.view; + +import android.app.Activity; +import android.support.v4.widget.DrawerLayout; + +import com.stardust.util.BackPressedHandler; + +/** + * Created by Stardust on 2017/6/19. + */ + +public class DrawerAutoClose implements BackPressedHandler { + + private DrawerLayout mDrawerLayout; + private int mGravity; + + public DrawerAutoClose(DrawerLayout drawerLayout, int gravity){ + mDrawerLayout = drawerLayout; + mGravity = gravity; + } + + @Override + public boolean onBackPressed(Activity activity) { + if (mDrawerLayout.isDrawerOpen(mGravity)) { + mDrawerLayout.closeDrawer(mGravity); + return true; + } + return false; + } +} \ No newline at end of file diff --git a/autojs/build.gradle b/autojs/build.gradle index 048c1fc8..b7347382 100644 --- a/autojs/build.gradle +++ b/autojs/build.gradle @@ -37,7 +37,6 @@ dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.github.hyb1996:DynamicLayoutInflator:0.1' compile 'org.greenrobot:eventbus:3.0.0' - compile 'com.android.support:support-annotations:25.3.0' compile 'net.lingala.zip4j:zip4j:1.3.2' compile project(path: ':common') compile project(path: ':automator') diff --git a/automator/build.gradle b/automator/build.gradle index ff7cc3e4..97e8cf44 100644 --- a/automator/build.gradle +++ b/automator/build.gradle @@ -27,5 +27,6 @@ dependencies { }) androidTestCompile 'com.android.support.test.uiautomator:uiautomator-v18:2.1.2' testCompile 'junit:junit:4.12' + compile 'com.android.support:appcompat-v7:25.3.0' compile project(path: ':common') } diff --git a/build.gradle b/build.gradle index afaa9473..8e888d62 100644 --- a/build.gradle +++ b/build.gradle @@ -5,7 +5,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:2.3.2' + classpath 'com.android.tools.build:gradle:2.3.3' classpath 'com.getkeepsafe.dexcount:dexcount-gradle-plugin:0.6.4' // NOTE: Do not place your application dependencies here; they belong diff --git a/common/build.gradle b/common/build.gradle index b8009e44..165537d5 100644 --- a/common/build.gradle +++ b/common/build.gradle @@ -25,6 +25,6 @@ dependencies { androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) - compile 'com.android.support:appcompat-v7:25.3.0' testCompile 'junit:junit:4.12' + compile 'com.android.support:support-annotations:25.3.0' } diff --git a/common/src/main/java/com/stardust/util/BackPressedHandler.java b/common/src/main/java/com/stardust/util/BackPressedHandler.java index 6ea9d88e..7e60b861 100644 --- a/common/src/main/java/com/stardust/util/BackPressedHandler.java +++ b/common/src/main/java/com/stardust/util/BackPressedHandler.java @@ -1,7 +1,6 @@ package com.stardust.util; import android.app.Activity; -import android.support.v4.widget.DrawerLayout; import android.widget.Toast; @@ -68,23 +67,5 @@ public interface BackPressedHandler { } } - class DrawerAutoClose implements BackPressedHandler { - private DrawerLayout mDrawerLayout; - private int mGravity; - - public DrawerAutoClose(DrawerLayout drawerLayout, int gravity){ - mDrawerLayout = drawerLayout; - mGravity = gravity; - } - - @Override - public boolean onBackPressed(Activity activity) { - if (mDrawerLayout.isDrawerOpen(mGravity)) { - mDrawerLayout.closeDrawer(mGravity); - return true; - } - return false; - } - } } diff --git a/common/src/main/java/com/stardust/util/StateObserver.java b/common/src/main/java/com/stardust/util/StateObserver.java index 35aa469a..c97df231 100644 --- a/common/src/main/java/com/stardust/util/StateObserver.java +++ b/common/src/main/java/com/stardust/util/StateObserver.java @@ -1,7 +1,6 @@ package com.stardust.util; import android.content.SharedPreferences; -import android.support.v7.widget.SwitchCompat; import java.lang.ref.WeakReference; import java.util.HashMap; @@ -39,19 +38,6 @@ public class StateObserver { mSharedPreferences = sharedPreferences; } - public void register(final String key, SwitchCompat switchCompat) { - final WeakReference switchCompatWeakReference = new WeakReference<>(switchCompat); - register(key, new SimpleOnStateChangedListener() { - @Override - public void onStateChanged(boolean newState) { - if (switchCompatWeakReference.get() != null) { - switchCompatWeakReference.get().setChecked(newState); - } else { - unregister(key, this); - } - } - }); - } public void register(String key, OnStateChangedListener listener) { initState(key, listener);