diff --git a/src/main/res/xml/pref_all.xml b/src/main/res/xml/pref_all.xml index 8382cabc..f08763e8 100644 --- a/src/main/res/xml/pref_all.xml +++ b/src/main/res/xml/pref_all.xml @@ -18,23 +18,19 @@ android:title="@string/proxy_cat"> @@ -65,7 +58,6 @@ android:title="@string/feature_cat"> diff --git a/src/main/scala/com/github/shadowsocks/ProfileManagerActivity.scala b/src/main/scala/com/github/shadowsocks/ProfileManagerActivity.scala index 1f2d9583..544e2dd4 100644 --- a/src/main/scala/com/github/shadowsocks/ProfileManagerActivity.scala +++ b/src/main/scala/com/github/shadowsocks/ProfileManagerActivity.scala @@ -61,7 +61,7 @@ class ProfileManagerActivity extends AppCompatActivity with OnMenuItemClickListe } def onClick(v: View) = { - ShadowsocksApplication.profileId(item.id) + ShadowsocksApplication.switchProfile(item.id) finish } } @@ -168,7 +168,7 @@ class ProfileManagerActivity extends AppCompatActivity with OnMenuItemClickListe true case R.id.manual_settings => ShadowsocksApplication.profileManager.reload(-1) - ShadowsocksApplication.profileId(ShadowsocksApplication.profileManager.save.id) + ShadowsocksApplication.switchProfile(ShadowsocksApplication.profileManager.save.id) finish true case _ => false diff --git a/src/main/scala/com/github/shadowsocks/Shadowsocks.scala b/src/main/scala/com/github/shadowsocks/Shadowsocks.scala index 853cef0f..ec139b3a 100644 --- a/src/main/scala/com/github/shadowsocks/Shadowsocks.scala +++ b/src/main/scala/com/github/shadowsocks/Shadowsocks.scala @@ -55,12 +55,12 @@ import android.support.v4.content.ContextCompat import android.support.v7.app.AppCompatActivity import android.support.v7.widget.Toolbar import android.util.Log -import android.view.{View, ViewGroup, ViewParent} +import android.view.{ViewGroup, View, ViewParent} import android.widget._ import com.github.jorgecastilloprz.FABProgressCircle import com.github.shadowsocks.aidl.{IShadowsocksService, IShadowsocksServiceCallback} import com.github.shadowsocks.database._ -import com.github.shadowsocks.preferences.{NumberPickerPreference, DropDownPreference, PasswordEditTextPreference, SummaryEditTextPreference} +import com.github.shadowsocks.preferences.{DropDownPreference, NumberPickerPreference, PasswordEditTextPreference, SummaryEditTextPreference} import com.github.shadowsocks.utils._ import com.google.android.gms.ads.{AdRequest, AdSize, AdView} @@ -197,6 +197,7 @@ class Shadowsocks private lazy val preferences = getFragmentManager.findFragmentById(android.R.id.content).asInstanceOf[ShadowsocksSettings] + private var adView: AdView = _ private lazy val greyTint = ContextCompat.getColorStateList(this, R.color.material_blue_grey_700) private lazy val greenTint = ContextCompat.getColorStateList(this, R.color.material_green_700) @@ -349,22 +350,7 @@ class Shadowsocks override def onCreate(savedInstanceState: Bundle) { super.onCreate(savedInstanceState) - - // Initialize the profile - currentProfile = { - ShadowsocksApplication.currentProfile getOrElse currentProfile - } - ShadowsocksApplication.profileManager.load(currentProfile.id) - setContentView(R.layout.layout_main) - if (ShadowsocksApplication.proxy == "198.199.101.152") { - val adView = new AdView(this) - adView.setAdUnitId("ca-app-pub-9097031975646651/7760346322") - adView.setAdSize(AdSize.SMART_BANNER) - preferences.getView.asInstanceOf[ViewGroup].addView(adView, 0) - adView.loadAd(new AdRequest.Builder().build()) - } - // Initialize action bar val toolbar = findViewById(R.id.toolbar).asInstanceOf[Toolbar] toolbar.setTitle(getString(R.string.screen_name)) @@ -429,7 +415,8 @@ class Shadowsocks case Some(profile) => profile // updated case None => // removed val profiles = ShadowsocksApplication.profileManager.getAllProfiles.getOrElse(List[Profile]()) - ShadowsocksApplication.profileId(if (profiles.isEmpty) -1 else profiles.head.id) + if (profiles.isEmpty) ShadowsocksApplication.profileManager.createDefault() + else ShadowsocksApplication.switchProfile(profiles.head.id) } updatePreferenceScreen() @@ -509,6 +496,14 @@ class Shadowsocks } private def updatePreferenceScreen() { + if (ShadowsocksApplication.proxy == "198.199.101.152" && adView == null) { + adView = new AdView(this) + adView.setAdUnitId("ca-app-pub-9097031975646651/7760346322") + adView.setAdSize(AdSize.SMART_BANNER) + preferences.getView.asInstanceOf[ViewGroup].addView(adView, 0) + adView.loadAd(new AdRequest.Builder().build()) + } + val profile = currentProfile for (name <- Shadowsocks.PROXY_PREFS) { val pref = preferences.findPreference(name) diff --git a/src/main/scala/com/github/shadowsocks/ShadowsocksApplication.scala b/src/main/scala/com/github/shadowsocks/ShadowsocksApplication.scala index f63114e0..a267eb1b 100644 --- a/src/main/scala/com/github/shadowsocks/ShadowsocksApplication.scala +++ b/src/main/scala/com/github/shadowsocks/ShadowsocksApplication.scala @@ -77,12 +77,14 @@ object ShadowsocksApplication { .build()) def profileId = settings.getInt(Key.profileId, -1) - def profileId(i: Int) = { - settings.edit.putInt(Key.profileId, i).apply - profileManager.load(i) - } + def profileId(i: Int) = settings.edit.putInt(Key.profileId, i).apply def proxy = settings.getString(Key.proxy, "") def currentProfile = profileManager.getProfile(profileId) + + def switchProfile(id: Int) = { + profileId(id) + profileManager.load(id) + } } class ShadowsocksApplication extends Application { diff --git a/src/main/scala/com/github/shadowsocks/database/ProfileManager.scala b/src/main/scala/com/github/shadowsocks/database/ProfileManager.scala index 2370153f..58d3e3a8 100644 --- a/src/main/scala/com/github/shadowsocks/database/ProfileManager.scala +++ b/src/main/scala/com/github/shadowsocks/database/ProfileManager.scala @@ -163,4 +163,15 @@ class ProfileManager(settings: SharedPreferences, dbHelper: DBHelper) { updateProfile(profile) profile } + + def createDefault(): Profile = { + val profile = new Profile { + name = "Default" + host = "198.199.101.152" + remotePort = 443 + password = "u1rRWTssNv0p" + } + createOrUpdateProfile(profile) + profile + } }