hyb1996
2017-06-20 23:41:49 +08:00
parent 174d053fe3
commit 7699dc66a1
11 changed files with 108 additions and 50 deletions

View File

@@ -0,0 +1,2 @@
### text(文件控件)

View File

@@ -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<App> 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;
}
}

View File

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

View File

@@ -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<MyScriptListFragment>() {
@Override
public void call(MyScriptListFragment myScriptListFragment) {
myScriptListFragment.newScriptFile();
}
});
}
@ViewBinding.Click(R.id.create_new_directory)
private void createNewDirectory() {
getMyScriptListFragment().newDirectory();
doWithMyScriptListFragment(new Callback<MyScriptListFragment>() {
@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<MyScriptListFragment>() {
@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<MyScriptListFragment>() {
@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<MyScriptListFragment>() {
@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<MyScriptListFragment> 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;

View File

@@ -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;
}
}

View File

@@ -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')

View File

@@ -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')
}

View File

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

View File

@@ -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'
}

View File

@@ -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;
}
}
}

View File

@@ -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<SwitchCompat> 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);