From 53fcba30b03ef194e1df81a0d2875497342b34a8 Mon Sep 17 00:00:00 2001 From: Max Lv Date: Sun, 22 Sep 2013 10:52:44 +0800 Subject: [PATCH] WiP, drawer works now --- build.sbt | 10 +++- project/Build.scala | 8 +-- project/plugins.sbt | 2 +- src/main/res/drawable-hdpi/ic_drawer.png | Bin 0 -> 963 bytes src/main/res/drawable-mdpi/ic_drawer.png | Bin 0 -> 955 bytes src/main/res/drawable-xhdpi/ic_drawer.png | Bin 0 -> 979 bytes src/main/res/layout/layout_switch.xml | 3 +- .../com/github/shadowsocks/Shadowsocks.scala | 52 +++++++++++++----- .../shadowsocks/database/DBHelper.scala | 22 ++++++++ .../github/shadowsocks/database/Profile.scala | 47 ++++++++++++++++ 10 files changed, 120 insertions(+), 24 deletions(-) create mode 100644 src/main/res/drawable-hdpi/ic_drawer.png create mode 100644 src/main/res/drawable-mdpi/ic_drawer.png create mode 100644 src/main/res/drawable-xhdpi/ic_drawer.png create mode 100644 src/main/scala/com/github/shadowsocks/database/DBHelper.scala create mode 100644 src/main/scala/com/github/shadowsocks/database/Profile.scala diff --git a/build.sbt b/build.sbt index db33d8df..0a01f5e0 100644 --- a/build.sbt +++ b/build.sbt @@ -2,7 +2,6 @@ libraryDependencies ++= Seq( "com.google.android" % "support-v4" % "r12", "com.google.android.analytics" % "analytics" % "2.0beta4", "dnsjava" % "dnsjava" % "2.1.5", - "com.nostra13.universalimageloader" % "universal-image-loader" % "1.8.4", "com.google.android.admob" % "admob" % "6.3.1" ) @@ -10,6 +9,13 @@ libraryDependencies ++= Seq( "com.actionbarsherlock" % "actionbarsherlock" % "4.4.0" artifacts(Artifact("actionbarsherlock", "apklib", "apklib")), "net.saik0.android.unifiedpreference" % "unifiedpreference" % "0.0.2" artifacts(Artifact("unifiedpreference", "apklib", "apklib")), "org.jraf" % "android-switch-backport" % "1.0" artifacts(Artifact("android-switch-backport", "apklib", "apklib")), - "de.keyboardsurfer.android.widget" % "crouton" % "1.7" + "net.simonvt.menudrawer" % "menudrawer" % "3.0.4" artifacts(Artifact("menudrawer", "apklib", "apklib")) +) + +libraryDependencies ++= Seq( + "de.keyboardsurfer.android.widget" % "crouton" % "1.7", + "com.nostra13.universalimageloader" % "universal-image-loader" % "1.8.4", + "com.j256.ormlite" % "ormlite-core" % "4.47", + "com.j256.ormlite" % "ormlite-android" % "4.47" ) diff --git a/project/Build.scala b/project/Build.scala index 822738a0..55aa12fb 100644 --- a/project/Build.scala +++ b/project/Build.scala @@ -5,8 +5,8 @@ import sbtandroid._ import sbtandroid.AndroidPlugin._ object App { - val version = "1.8.3" - val versionCode = 48 + val version = "1.9.0" + val versionCode = 50 } object General { @@ -28,6 +28,7 @@ object General { "-keep interface com.actionbarsherlock.** { *; }", "-keep class org.jraf.android.backport.** { *; }", "-keep class com.github.shadowsocks.** { *; }", + "-keep class * extends com.j256.ormlite.** { *; }", "-keepattributes *Annotation*") val proguardSettings = Seq ( @@ -36,8 +37,7 @@ object General { ) val miscSettings = Seq ( - cachePasswords := true, - publicServer := "127.0.0.1" + cachePasswords := true ) lazy val fullAndroidSettings = diff --git a/project/plugins.sbt b/project/plugins.sbt index b17b415f..3bbacfde 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -6,4 +6,4 @@ resolvers += Resolver.url("madeye private releases", new URL("http://madeye-mave addSbtPlugin("org.scala-sbt" % "sbt-android" % "0.7.1-SNAPSHOT") -addSbtPlugin("com.github.mpeltonen" % "sbt-idea" % "1.4.0") +addSbtPlugin("com.github.mpeltonen" % "sbt-idea" % "1.5.1") diff --git a/src/main/res/drawable-hdpi/ic_drawer.png b/src/main/res/drawable-hdpi/ic_drawer.png new file mode 100644 index 0000000000000000000000000000000000000000..ec8c51f87f7db9cc7556a95a757716b114a51dda GIT binary patch literal 963 zcmaJ=zi-n(78Qu~a3!A@8Z z8$$;E0))CSF|sfe7Nm}>ObiTcObDbRm2;Y;3;!>rf# z^akCpr)%{x{eOwoUv%3f)i!D3E{UxWF*^?KAW-wH9%>-V89h2dWroSHZmUh&=6%J+ z9%rQ(F7X1&W|(p%2`qbn2#OYdcgHMn9hH5MH=!A5sPFELL)0Aax9su2E;(#v z8it{W9ExmD%&R{PfeL@`Sd z*=XbwE6MuN)?7hHksZ1Laj_3lMXQ5{L}h8D=P7u>Le`IFWugV+6D!~a4yGy1fu{L? zsOK%v5ow@{c>gIJwMGHr8z{oV(58*+Zl$gQMGKKdaM;55a9+iF9}^t)aR9Vt9+;Nx z`l&s|o2F9pBVzeBs_80A6*$**6eC}hBq-;0Ww9y#wWaY}n%U5@gPoAD0e0%u5 u__g`z^`)atPdb`>{LnXUPBI(JDrB~wT)lnz;^*7+S=Flh`kUQ@XMX?__$)^N literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-mdpi/ic_drawer.png b/src/main/res/drawable-mdpi/ic_drawer.png new file mode 100644 index 0000000000000000000000000000000000000000..7420a68df97b5f14f3c4256f29e8658f2218ad03 GIT binary patch literal 955 zcmaJ=O^ee&7!KBzW!b`l7e5XTSv&~aWRh*#ZD=gJN#hnwDQ(3bJUC6JZRjQwlc`O6 zS`|S-5zqbtFM?+eiU+}yHxHit2ZA2F2zAnJst0ReGV>14^Sqz)xKY2B-MFy9aa^`` zXf)Zrm8|tM?0@OU46*Gzt#)XO^ynCcnA>+q7lWFI`nZXaGr98-mpLxOyX_9`Sl3mX zcmhf=LhJ>M&2i;Q93Xp$Dd^(9>udbCH*b01IvRgdv7i;`c;FsRL)@Cy+xB#5mmI!w z6_jI@33!+y5PL^{q{bRQ*Hzg$xfXdahtQ$Mp9Iyh8bBu@28sZ4HY`9;kOXNrUn~}P zfD9!lLRpmLoK#eIWfelO_;}_mbb4yjFc-d&s(D28e1`kq;kC74gS2C+vT z_G!v>mfRv-$xTMV3z%mEhwfeMm?81NJZ05g9gDG2Z^3m|#!{%RfrYM-yA|FuK)l5 literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xhdpi/ic_drawer.png b/src/main/res/drawable-xhdpi/ic_drawer.png new file mode 100644 index 0000000000000000000000000000000000000000..7ffbe5c507bafb3f08c25d37dd002c5e486557d4 GIT binary patch literal 979 zcmaJ=L2J}N7)>pdQf-e~dvQp?lbcMkn@uw|t!=Vt7fdPJ1s6eRHko$AHkmk?b<@R@ zhl1eMUr>+g#iIumLGUPg@<%9wH-$Rc?rwY78kl@D!+Y<0-^@2px3@NCXBK7zL71&> z+BF_QKBlMmKkfB?^KhM28f=H`v93q4uojRe2Gz*h$2IH)hYvsFWkHw}!+L`?+`Gsp zk>uqVDT@-$7KG*1Eb;s{W}u1p!`KvmzI`WxFfhe?nhV{;!mV(#NAXT?tM2#Oz7dG4 zD_}W8Tp+^C16gzsrzkVUzAobPd|MVlAHv$EcxtNQZUc)@3^WNAd{~B{tVl|+r0e=E zph5-8P?Z(6py;TmA_&3Y6L~fo?4g?N407?6DYh6(kSuq*U8!4?2;G+z!!U9URV{Et zAw7(lmlfi4aj0P9)Td#>LK1^q(QA?pGez$7w1g-b$;Rp6nD~LonU~0l1oM)HK-c|0 zG>S&(l-2N=-?74J{V>6D4X30-eSUF!i+QR9SrmJW&^jRp!&BUD5k}G$Nr1JZ0oU`x zIA8biu8XR1%DmXeRofJ~f)s`UD#CT$Hq@ncU3Cr#`r@XDF+i#xpC$Ukr*Xr5#=HHW()sJ^B-8`C@n*1SL z1uGUVy3X { + EasyTracker.getTracker.sendEvent(Shadowsocks.TAG, "home", getVersionName, 0L) + drawer.toggleMenu() + return true + } case 0 => { EasyTracker.getTracker.sendEvent(Shadowsocks.TAG, "reset", getVersionName, 0L) recovery() diff --git a/src/main/scala/com/github/shadowsocks/database/DBHelper.scala b/src/main/scala/com/github/shadowsocks/database/DBHelper.scala new file mode 100644 index 00000000..654c0acb --- /dev/null +++ b/src/main/scala/com/github/shadowsocks/database/DBHelper.scala @@ -0,0 +1,22 @@ +package com.github.shadowsocks.database + +import com.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper +import android.content.Context +import android.database.sqlite.SQLiteDatabase +import com.j256.ormlite.support.ConnectionSource +import com.j256.ormlite.table.TableUtils +import com.j256.ormlite.dao.Dao + +class DBHelper(implicit val context: Context) extends OrmLiteSqliteOpenHelper(context, "postnauka", null, 3) { + + lazy val profileDao:Dao[Profile,Int] = getDao(classOf[Profile]) + + def onCreate(database: SQLiteDatabase, connectionSource: ConnectionSource) { + TableUtils.createTable(connectionSource, classOf[Profile]) + } + + def onUpgrade(database: SQLiteDatabase, connectionSource: ConnectionSource, oldVersion: Int, newVersion: Int) { + TableUtils.dropTable(connectionSource, classOf[Profile], true) + onCreate(database, connectionSource) + } +} diff --git a/src/main/scala/com/github/shadowsocks/database/Profile.scala b/src/main/scala/com/github/shadowsocks/database/Profile.scala new file mode 100644 index 00000000..b034aab0 --- /dev/null +++ b/src/main/scala/com/github/shadowsocks/database/Profile.scala @@ -0,0 +1,47 @@ +package com.github.shadowsocks.database + +import com.j256.ormlite.field.{DataType, DatabaseField} + +class Profile { + @DatabaseField(id = true) + var id: Int = 0 + + @DatabaseField + var name: String = null + + @DatabaseField(foreign = true, canBeNull = false) + var host: String = null + + @DatabaseField + var localPort: Int = 0 + + @DatabaseField + var remotePort: Int = 0 + + @DatabaseField + var password: String = null + + @DatabaseField + var method: String = null + + @DatabaseField + var date: String = null + + @DatabaseField + var upload: Int = 0 + + @DatabaseField + var download: Int = 0 + + @DatabaseField + var chnroute: Boolean = false + + @DatabaseField + var global: Boolean = false + + @DatabaseField(dataType = DataType.LONG_STRING) + var individual: String = null + + @DatabaseField(dataType = DataType.LONG_STRING) + var description: String = null +}