Refactor: split into modules autojs, common, app and automator

This commit is contained in:
hyb1996
2017-04-03 00:43:15 +08:00
parent e7500e6e21
commit bfabef6a0e
182 changed files with 2521 additions and 5840 deletions

View File

@@ -1,129 +0,0 @@
package com.stardust.hover;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.IBinder;
import android.support.annotation.Nullable;
import android.util.Log;
import io.mattcarroll.hover.HoverMenu;
import io.mattcarroll.hover.HoverMenuAdapter;
import io.mattcarroll.hover.Navigator;
/**
* Created by Stardust on 2017/3/11.
*/
public abstract class HoverMenuService extends Service {
private static final String TAG = "HoverMenuService";
private static final String PREF_FILE = "hover_menu";
private static final String PREF_HOVER_MENU_VISUAL_STATE = "hover_menu_visual_state";
private HoverMenu mHoverMenu;
private boolean mIsRunning;
private SharedPreferences mPrefs;
private HoverMenu.OnExitListener mWindowHoverMenuMenuExitListener = new HoverMenu.OnExitListener() {
@Override
public void onExitByUserRequest() {
Log.d(TAG, "Menu exit requested.");
savePreferredLocation();
mHoverMenu.hide();
onHoverMenuExitingByUserRequest();
stopSelf();
}
};
@Override
public void onCreate() {
Log.d(TAG, "onCreate()");
mPrefs = getSharedPreferences(PREF_FILE, Context.MODE_PRIVATE);
mHoverMenu = new HoverMenuBuilder(getContextForHoverMenu())
.displayWithinWindow()
.useNavigator(createNavigator())
.useAdapter(createHoverMenuAdapter())
.restoreVisualState(loadPreferredLocation())
.build();
mHoverMenu.addOnExitListener(mWindowHoverMenuMenuExitListener);
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
if (!mIsRunning) {
Log.d(TAG, "onStartCommand() - showing Hover menu.");
mIsRunning = true;
mHoverMenu.show();
}
return START_STICKY;
}
@Override
public void onDestroy() {
Log.d(TAG, "onDestroy()");
mHoverMenu.hide();
mIsRunning = false;
}
public HoverMenu getHoverMenu() {
return mHoverMenu;
}
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
/**
* Hook for subclasses to return a custom Context to be used in the creation of the {@code HoverMenu}.
* For example, subclasses might choose to provide a ContextThemeWrapper.
*
* @return context for HoverMenu initialization
*/
protected Context getContextForHoverMenu() {
return this;
}
/**
* Subclasses can use this hook method to return a customized {@link Navigator} to be used
* throughout the entire Hover menu. This {@link Navigator} will be used for every tab in the
* Hover menu, so only supply a {@code Navigator} if you truly want every screen to display it.
* <p>
* If you want only a portion of the screens in the Hover menu to look different, then consider
* using composition of {@link NavigatorContent} to achieve the desired effect. For example,
* if you want a {@code Toolbar} to appear on one or more screens, consider placing your content
* within a {@link ToolbarNavigatorContent}, and then add the {@code ToolbarNavigatorContent}
* as the content of the default {@code Navigator}.
*
* @return Custom Navigator to use on every screen in the Hover menu
*/
protected Navigator createNavigator() {
return null; // Subclasses can override this to provide a custom Navigator.
}
abstract protected HoverMenuAdapter createHoverMenuAdapter();
/**
* Hook method for subclasses to take action when the user exits the HoverMenu. This method runs
* just before this {@code HoverMenuService} calls {@code stopSelf()}.
*/
protected void onHoverMenuExitingByUserRequest() {
// Hook for subclasses.
}
private void savePreferredLocation() {
String memento = mHoverMenu.getVisualState();
mPrefs.edit().putString(PREF_HOVER_MENU_VISUAL_STATE, memento).apply();
}
private String loadPreferredLocation() {
return mPrefs.getString(PREF_HOVER_MENU_VISUAL_STATE, null);
}
}

File diff suppressed because it is too large Load Diff