[WIP] Started realization initPeer in MVP Arch (and added Global Message Bus)

This commit is contained in:
ChronosX88 2019-03-12 17:50:12 +04:00
parent 33f4f7bedf
commit 8194b27c2e
11 changed files with 113 additions and 3 deletions

View File

@ -3,9 +3,6 @@
<component name="GradleSettings">
<option name="linkedExternalProjectsSettings">
<GradleProjectSettings>
<compositeConfiguration>
<compositeBuild compositeDefinitionSource="SCRIPT" />
</compositeConfiguration>
<option name="distributionType" value="DEFAULT_WRAPPED" />
<option name="externalProjectPath" value="$PROJECT_DIR$" />
<option name="modules">

View File

@ -3,20 +3,26 @@ package io.github.chronosx88.influence;
import android.app.Application;
import android.content.Context;
import io.github.chronosx88.influence.observable.MainObservable;
/**
* Extended Application class which designed for getting Context from anywhere in the application.
*/
public class AppHelper extends Application {
private static Application instance;
private static MainObservable observable;
@Override
public void onCreate() {
super.onCreate();
instance = this;
observable = new MainObservable();
}
public static Context getContext() {
return instance.getApplicationContext();
}
public static MainObservable getObservable() { return observable; }
}

View File

@ -0,0 +1,5 @@
package io.github.chronosx88.influence.contracts;
public interface MainActivityContract {
//
}

View File

@ -0,0 +1,5 @@
package io.github.chronosx88.influence.contracts;
public interface MainActivityModelContact {
void initPeer();
}

View File

@ -0,0 +1,5 @@
package io.github.chronosx88.influence.contracts;
public interface MainActivityPresenterContract {
void initPeer();
}

View File

@ -0,0 +1,9 @@
package io.github.chronosx88.influence.contracts.observer;
import org.json.JSONObject;
public interface Observable {
void register(Observer observer);
void unregister(Observer observer);
void notifyObservers(JSONObject jsonObject);
}

View File

@ -0,0 +1,7 @@
package io.github.chronosx88.influence.contracts.observer;
import org.json.JSONObject;
public interface Observer {
void handleEvent(JSONObject object);
}

View File

@ -0,0 +1,10 @@
package io.github.chronosx88.influence.models;
import io.github.chronosx88.influence.contracts.MainActivityModelContact;
public class MainActivityModel implements MainActivityModelContact {
@Override
public void initPeer() {
// TODO
}
}

View File

@ -0,0 +1,33 @@
package io.github.chronosx88.influence.observable;
import org.json.JSONObject;
import java.util.ArrayList;
import io.github.chronosx88.influence.contracts.observer.Observable;
import io.github.chronosx88.influence.contracts.observer.Observer;
public class MainObservable implements Observable {
private ArrayList<Observer> observers;
public MainObservable() {
this.observers = new ArrayList<>();
}
@Override
public void register(Observer observer) {
observers.add(observer);
}
@Override
public void unregister(Observer observer) {
observers.remove(observer);
}
@Override
public void notifyObservers(JSONObject jsonObject) {
for (Observer observer : observers) {
observer.handleEvent(jsonObject);
}
}
}

View File

@ -0,0 +1,10 @@
package io.github.chronosx88.influence.presenters;
import io.github.chronosx88.influence.contracts.MainActivityPresenterContract;
public class MainActivityPresenter implements MainActivityPresenterContract {
@Override
public void initPeer() {
//TODO
}
}

View File

@ -8,4 +8,27 @@
<item name="colorAccent">@color/colorAccent</item>
</style>
<style name="AlertDialogTheme" parent="Base.Theme.AppCompat.Dialog">
<item name="alertDialogStyle">@style/CustomAlertStyle</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:textColorPrimary">#FFFFFF</item>
<item name="android:backgroundDimEnabled">false</item>
<item name="android:textColor">#FFFFFF</item>
<item name="android:textStyle">normal</item>
<item name="android:textSize">12sp</item>
</style>
<style name="CustomAlertStyle">
<item name="android:bottomBright">@android:color/transparent</item>
<item name="android:bottomDark">@android:color/transparent</item>
<item name="android:bottomMedium">@android:color/transparent</item>
<item name="android:centerBright">@android:color/transparent</item>
<item name="android:centerDark">@android:color/transparent</item>
<item name="android:centerMedium">@android:color/transparent</item>
<item name="android:fullBright">@android:color/transparent</item>
<item name="android:fullDark">@android:color/transparent</item>
<item name="android:topBright">@android:color/transparent</item>
<item name="android:topDark">@android:color/transparent</item>
</style>
</resources>