├── app ├── .gitignore ├── src │ ├── main │ │ ├── res │ │ │ ├── raw │ │ │ │ └── books.db │ │ │ ├── mipmap-hdpi │ │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-mdpi │ │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xhdpi │ │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xxhdpi │ │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xxxhdpi │ │ │ │ └── ic_launcher.png │ │ │ ├── drawable-hdpi │ │ │ │ └── ic_shopping_cart_white_32dp.png │ │ │ ├── drawable-mdpi │ │ │ │ └── ic_shopping_cart_white_32dp.png │ │ │ ├── drawable-xhdpi │ │ │ │ └── ic_shopping_cart_white_32dp.png │ │ │ ├── drawable-xxhdpi │ │ │ │ └── ic_shopping_cart_white_32dp.png │ │ │ ├── drawable-xxxhdpi │ │ │ │ └── ic_shopping_cart_white_32dp.png │ │ │ ├── drawable │ │ │ │ ├── side_nav_bar.xml │ │ │ │ └── ic_shortcut_search.xml │ │ │ ├── values │ │ │ │ ├── colors.xml │ │ │ │ ├── dimens.xml │ │ │ │ ├── drawables.xml │ │ │ │ ├── styles.xml │ │ │ │ └── strings.xml │ │ │ ├── drawable-v21 │ │ │ │ ├── ic_menu_send.xml │ │ │ │ ├── ic_menu_slideshow.xml │ │ │ │ ├── ic_menu_gallery.xml │ │ │ │ ├── ic_menu_manage.xml │ │ │ │ ├── ic_menu_camera.xml │ │ │ │ └── ic_menu_share.xml │ │ │ ├── values-v21 │ │ │ │ └── styles.xml │ │ │ ├── menu │ │ │ │ ├── main.xml │ │ │ │ ├── menu_detail.xml │ │ │ │ └── activity_main_drawer.xml │ │ │ ├── values-w820dp │ │ │ │ └── dimens.xml │ │ │ ├── values-zh │ │ │ │ └── strings.xml │ │ │ ├── xml │ │ │ │ └── shortcuts.xml │ │ │ └── layout │ │ │ │ ├── content_detail.xml │ │ │ │ ├── drawer.xml │ │ │ │ ├── content_main.xml │ │ │ │ ├── activity_main.xml │ │ │ │ ├── app_bar_main.xml │ │ │ │ ├── nav_header_main.xml │ │ │ │ ├── item_book.xml │ │ │ │ └── activity_detail.xml │ │ ├── java │ │ │ └── org │ │ │ │ └── xdty │ │ │ │ └── kindle │ │ │ │ ├── contract │ │ │ │ ├── BaseView.java │ │ │ │ ├── BasePresenter.java │ │ │ │ ├── DetailContract.java │ │ │ │ └── MainContract.java │ │ │ │ ├── data │ │ │ │ ├── Mode.java │ │ │ │ ├── BookService.java │ │ │ │ ├── BookDataSource.java │ │ │ │ └── BookRepository.java │ │ │ │ ├── di │ │ │ │ ├── MainComponent.java │ │ │ │ ├── DetailComponent.java │ │ │ │ ├── modules │ │ │ │ │ ├── MainModule.java │ │ │ │ │ ├── DetailModule.java │ │ │ │ │ └── AppModule.java │ │ │ │ └── AppComponent.java │ │ │ │ ├── utils │ │ │ │ └── Constants.java │ │ │ │ ├── module │ │ │ │ ├── INodeRelation.java │ │ │ │ ├── INodeMap.java │ │ │ │ ├── database │ │ │ │ │ ├── Database.java │ │ │ │ │ └── DatabaseImpl.java │ │ │ │ ├── INode.java │ │ │ │ ├── IReview.java │ │ │ │ ├── Books.java │ │ │ │ └── IBook.java │ │ │ │ ├── application │ │ │ │ └── Application.java │ │ │ │ ├── presenter │ │ │ │ ├── DetailPresenter.java │ │ │ │ └── MainPresenter.java │ │ │ │ ├── DetailActivity.java │ │ │ │ ├── view │ │ │ │ └── BooksAdapter.java │ │ │ │ └── MainActivity.java │ │ └── AndroidManifest.xml │ ├── test │ │ ├── AndroidManifest.xml │ │ └── java │ │ │ └── org │ │ │ └── xdty │ │ │ └── kindle │ │ │ └── ExampleUnitTest.java │ ├── androidTest │ │ ├── AndroidManifest.xml │ │ └── java │ │ │ └── org │ │ │ └── xdty │ │ │ └── kindle │ │ │ └── ExampleInstrumentedTest.java │ └── debug │ │ ├── AndroidManifest.xml │ │ └── java │ │ └── org │ │ └── xdty │ │ └── kindle │ │ └── application │ │ └── DebugApplication.java ├── proguard-test-rules.pro ├── proguard-rules.pro └── build.gradle ├── settings.gradle ├── public.jks.enc ├── release.jks.enc ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── signing.properties.example ├── manifest.properties.example ├── README.md ├── gradle.properties ├── .gitignore ├── .travis └── env.sh ├── signing.gradle ├── manifest.gradle ├── gradlew.bat ├── gradlew ├── .travis.yml ├── LICENSE.md └── LICENSE.txt /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | -------------------------------------------------------------------------------- /public.jks.enc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xdtianyu/Kindle/master/public.jks.enc -------------------------------------------------------------------------------- /release.jks.enc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xdtianyu/Kindle/master/release.jks.enc -------------------------------------------------------------------------------- /app/src/main/res/raw/books.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xdtianyu/Kindle/master/app/src/main/res/raw/books.db -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xdtianyu/Kindle/master/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /app/src/main/java/org/xdty/kindle/contract/BaseView.java: -------------------------------------------------------------------------------- 1 | package org.xdty.kindle.contract; 2 | 3 | public interface BaseView { 4 | } 5 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xdtianyu/Kindle/master/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xdtianyu/Kindle/master/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xdtianyu/Kindle/master/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /signing.properties.example: -------------------------------------------------------------------------------- 1 | storeFile=release.jks 2 | storePassword=keystore_password 3 | keyAlias=key_alias 4 | keyPassword=key_password 5 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xdtianyu/Kindle/master/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xdtianyu/Kindle/master/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /manifest.properties.example: -------------------------------------------------------------------------------- 1 | API_KEY=YOUR_API_KEY 2 | JUHE_API_KEY=YOUR_API_KEY 3 | LEANCLOUD_APP_ID=YOUR_APP_ID 4 | LEANCLOUD_APP_KEY=YOUR_APP_KEY -------------------------------------------------------------------------------- /app/src/main/java/org/xdty/kindle/contract/BasePresenter.java: -------------------------------------------------------------------------------- 1 | package org.xdty.kindle.contract; 2 | 3 | public interface BasePresenter { 4 | void start(); 5 | } 6 | -------------------------------------------------------------------------------- /app/src/main/java/org/xdty/kindle/data/Mode.java: -------------------------------------------------------------------------------- 1 | package org.xdty.kindle.data; 2 | 3 | public enum Mode { 4 | DAILY_DEALS, 5 | FREE_CN, 6 | FREE_EN 7 | } 8 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_shopping_cart_white_32dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xdtianyu/Kindle/master/app/src/main/res/drawable-hdpi/ic_shopping_cart_white_32dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_shopping_cart_white_32dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xdtianyu/Kindle/master/app/src/main/res/drawable-mdpi/ic_shopping_cart_white_32dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_shopping_cart_white_32dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xdtianyu/Kindle/master/app/src/main/res/drawable-xhdpi/ic_shopping_cart_white_32dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_shopping_cart_white_32dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xdtianyu/Kindle/master/app/src/main/res/drawable-xxhdpi/ic_shopping_cart_white_32dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/ic_shopping_cart_white_32dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xdtianyu/Kindle/master/app/src/main/res/drawable-xxxhdpi/ic_shopping_cart_white_32dp.png -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Kindle 2 | 特惠书 - 一个用来查找 kindle 免费书及特惠书的 Android 应用 3 | 4 | [![Build Status](https://travis-ci.org/xdtianyu/Kindle.svg?branch=master)](https://travis-ci.org/xdtianyu/Kindle) 5 | -------------------------------------------------------------------------------- /app/src/test/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/androidTest/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Mon Dec 28 10:00:20 PST 2015 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip 7 | -------------------------------------------------------------------------------- /app/src/main/java/org/xdty/kindle/data/BookService.java: -------------------------------------------------------------------------------- 1 | package org.xdty.kindle.data; 2 | 3 | import org.xdty.kindle.module.Books; 4 | 5 | import retrofit2.Call; 6 | import retrofit2.http.GET; 7 | 8 | public interface BookService { 9 | 10 | @GET("kindle.json") 11 | Call getBooks(); 12 | 13 | } 14 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/side_nav_bar.xml: -------------------------------------------------------------------------------- 1 | 3 | 9 | -------------------------------------------------------------------------------- /app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 5 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #3F51B5 4 | #303F9F 5 | #FF4081 6 | #60000000 7 | #fff5f5f5 8 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-v21/ic_menu_send.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/values-v21/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/menu/main.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/values-w820dp/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 64dp 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/menu/menu_detail.xml: -------------------------------------------------------------------------------- 1 | 5 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/java/org/xdty/kindle/di/MainComponent.java: -------------------------------------------------------------------------------- 1 | package org.xdty.kindle.di; 2 | 3 | import org.xdty.kindle.MainActivity; 4 | import org.xdty.kindle.di.modules.AppModule; 5 | import org.xdty.kindle.di.modules.MainModule; 6 | 7 | import javax.inject.Singleton; 8 | 9 | import dagger.Component; 10 | 11 | @Singleton 12 | @Component(modules = { MainModule.class, AppModule.class }) 13 | public interface MainComponent { 14 | void inject(MainActivity mainActivity); 15 | } 16 | -------------------------------------------------------------------------------- /app/proguard-test-rules.pro: -------------------------------------------------------------------------------- 1 | # Proguard rules that are applied to your test apk/code. 2 | -dontobfuscate 3 | 4 | -ignorewarnings 5 | 6 | -keepattributes *Annotation* 7 | 8 | -dontnote junit.framework.** 9 | -dontnote junit.runner.** 10 | 11 | -dontwarn android.test.** 12 | -dontwarn android.support.test.** 13 | -dontwarn org.junit.** 14 | -dontwarn org.hamcrest.** 15 | -dontwarn com.squareup.javawriter.JavaWriter 16 | # Uncomment this if you use Mockito 17 | #-dontwarn org.mockito.** -------------------------------------------------------------------------------- /app/src/main/java/org/xdty/kindle/contract/DetailContract.java: -------------------------------------------------------------------------------- 1 | package org.xdty.kindle.contract; 2 | 3 | import org.xdty.kindle.module.Book; 4 | 5 | public interface DetailContract { 6 | 7 | interface View extends BaseView { 8 | void updateReview(String review); 9 | 10 | void openTab(String url); 11 | } 12 | 13 | interface Presenter extends BasePresenter { 14 | void start(Book itemId); 15 | 16 | void clickFab(); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /app/src/main/java/org/xdty/kindle/di/DetailComponent.java: -------------------------------------------------------------------------------- 1 | package org.xdty.kindle.di; 2 | 3 | import org.xdty.kindle.DetailActivity; 4 | import org.xdty.kindle.di.modules.AppModule; 5 | import org.xdty.kindle.di.modules.DetailModule; 6 | 7 | import javax.inject.Singleton; 8 | 9 | import dagger.Component; 10 | 11 | @Singleton 12 | @Component(modules = { DetailModule.class, AppModule.class }) 13 | public interface DetailComponent { 14 | 15 | void inject(DetailActivity detailActivity); 16 | } 17 | -------------------------------------------------------------------------------- /app/src/main/java/org/xdty/kindle/utils/Constants.java: -------------------------------------------------------------------------------- 1 | package org.xdty.kindle.utils; 2 | 3 | public class Constants { 4 | 5 | public final static String BASE_URL = "https://static-10049225.file.myqcloud.com/"; 6 | //public final static String BASE_URL = "http://oe1kgsvca.bkt.clouddn.com/kindle.json"; 7 | 8 | public final static String DB_NAME = "books.db"; 9 | public final static int DB_VERSION = 1; 10 | 11 | public final static long CACHE_TIME = 30 * 60 * 1000; 12 | 13 | } 14 | -------------------------------------------------------------------------------- /app/src/main/java/org/xdty/kindle/module/INodeRelation.java: -------------------------------------------------------------------------------- 1 | package org.xdty.kindle.module; 2 | 3 | import android.os.Parcelable; 4 | 5 | import io.requery.Entity; 6 | import io.requery.Generated; 7 | import io.requery.Key; 8 | import io.requery.Table; 9 | 10 | @Table(name = "node_relation") 11 | @Entity 12 | public interface INodeRelation extends Parcelable { 13 | @Key 14 | @Generated 15 | int getId(); 16 | 17 | long getDescendant(); 18 | 19 | long getAncestor(); 20 | 21 | } 22 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-v21/ic_menu_slideshow.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/test/java/org/xdty/kindle/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package org.xdty.kindle; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.*; 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * @see Testing documentation 11 | */ 12 | public class ExampleUnitTest { 13 | @Test 14 | public void addition_isCorrect() throws Exception { 15 | assertEquals(4, 2 + 2); 16 | } 17 | } -------------------------------------------------------------------------------- /app/src/main/res/drawable-v21/ic_menu_gallery.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-v21/ic_menu_manage.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | -------------------------------------------------------------------------------- /app/src/main/java/org/xdty/kindle/module/INodeMap.java: -------------------------------------------------------------------------------- 1 | package org.xdty.kindle.module; 2 | 3 | import android.os.Parcelable; 4 | 5 | import io.requery.Column; 6 | import io.requery.Entity; 7 | import io.requery.Generated; 8 | import io.requery.Key; 9 | import io.requery.Table; 10 | 11 | @Table(name = "node_map") 12 | @Entity 13 | public interface INodeMap extends Parcelable { 14 | 15 | @Key 16 | @Generated 17 | int getId(); 18 | 19 | @Column(name = "item_id") 20 | String getItemId(); 21 | 22 | @Column(name = "node_id") 23 | long getNodeId(); 24 | } 25 | -------------------------------------------------------------------------------- /app/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 16dp 4 | 160dp 5 | 6 | 16dp 7 | 16dp 8 | 16dp 9 | 180dp 10 | 16dp 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/java/org/xdty/kindle/module/database/Database.java: -------------------------------------------------------------------------------- 1 | package org.xdty.kindle.module.database; 2 | 3 | import org.xdty.kindle.module.Book; 4 | import org.xdty.kindle.module.Node; 5 | import org.xdty.kindle.module.Review; 6 | 7 | import java.util.List; 8 | 9 | public interface Database { 10 | 11 | List getCnBooksSync(); 12 | 13 | List getEnBooksSync(); 14 | 15 | List getBookNodesSync(String itemId); 16 | 17 | Node getNodeParentSync(long nodeId); 18 | 19 | List getReviewsSync(String itemId); 20 | 21 | Book getBookSync(String itemId); 22 | } 23 | -------------------------------------------------------------------------------- /app/src/main/java/org/xdty/kindle/contract/MainContract.java: -------------------------------------------------------------------------------- 1 | package org.xdty.kindle.contract; 2 | 3 | import org.xdty.kindle.data.Mode; 4 | import org.xdty.kindle.module.Book; 5 | 6 | import java.util.List; 7 | 8 | public interface MainContract { 9 | 10 | interface View extends BaseView { 11 | void refresh(List books); 12 | } 13 | 14 | interface Presenter extends BasePresenter { 15 | void loadBooks(); 16 | 17 | void getBookNodes(Book book); 18 | 19 | void getReviews(String itemId); 20 | 21 | void setMode(Mode mode); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- 1 | # Project-wide Gradle settings. 2 | 3 | # IDE (e.g. Android Studio) users: 4 | # Gradle settings configured through the IDE *will override* 5 | # any settings specified in this file. 6 | 7 | # For more details on how to configure your build environment visit 8 | # http://www.gradle.org/docs/current/userguide/build_environment.html 9 | 10 | # When configured, Gradle will run in incubating parallel mode. 11 | # This option should only be used with decoupled projects. More details, visit 12 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects 13 | # org.gradle.parallel=true 14 | -------------------------------------------------------------------------------- /app/src/main/res/values/drawables.xml: -------------------------------------------------------------------------------- 1 | 2 | @android:drawable/ic_menu_camera 3 | @android:drawable/ic_menu_gallery 4 | @android:drawable/ic_menu_slideshow 5 | @android:drawable/ic_menu_manage 6 | @android:drawable/ic_menu_share 7 | @android:drawable/ic_menu_send 8 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-v21/ic_menu_camera.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 12 | 13 | -------------------------------------------------------------------------------- /app/src/main/java/org/xdty/kindle/application/Application.java: -------------------------------------------------------------------------------- 1 | package org.xdty.kindle.application; 2 | 3 | import org.xdty.kindle.di.AppComponent; 4 | import org.xdty.kindle.di.DaggerAppComponent; 5 | import org.xdty.kindle.di.modules.AppModule; 6 | 7 | public class Application extends android.app.Application { 8 | 9 | private static AppComponent sAppComponent; 10 | 11 | @Override 12 | public void onCreate() { 13 | super.onCreate(); 14 | sAppComponent = DaggerAppComponent.builder().appModule(new AppModule(this)).build(); 15 | } 16 | 17 | public static AppComponent getAppComponent() { 18 | return sAppComponent; 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /app/src/main/java/org/xdty/kindle/module/INode.java: -------------------------------------------------------------------------------- 1 | package org.xdty.kindle.module; 2 | 3 | import android.os.Parcelable; 4 | 5 | import io.requery.Column; 6 | import io.requery.Entity; 7 | import io.requery.Generated; 8 | import io.requery.Key; 9 | import io.requery.Table; 10 | import io.requery.Transient; 11 | 12 | @Table(name = "node") 13 | @Entity 14 | public interface INode extends Parcelable { 15 | 16 | @Key 17 | @Generated 18 | int getId(); 19 | 20 | @Transient 21 | Node getNode(); 22 | 23 | @Column(name = "node_id") 24 | long getNodeId(); 25 | 26 | @Column(name = "is_root") 27 | boolean isRoot(); 28 | 29 | String getName(); 30 | } 31 | -------------------------------------------------------------------------------- /app/src/main/java/org/xdty/kindle/di/modules/MainModule.java: -------------------------------------------------------------------------------- 1 | package org.xdty.kindle.di.modules; 2 | 3 | import org.xdty.kindle.contract.MainContract; 4 | import org.xdty.kindle.presenter.MainPresenter; 5 | 6 | import dagger.Module; 7 | import dagger.Provides; 8 | 9 | @Module 10 | public class MainModule { 11 | 12 | private MainContract.View mView; 13 | 14 | public MainModule(MainContract.View view) { 15 | mView = view; 16 | } 17 | 18 | @Provides 19 | MainContract.View provideView() { 20 | return mView; 21 | } 22 | 23 | @Provides 24 | MainContract.Presenter providePresenter() { 25 | return new MainPresenter(mView); 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /app/src/main/res/values-zh/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Kindle 4 | 设置 5 | 今日特惠 6 | 免费中文 7 | 免费外文 8 | 关闭导航栏 9 | 打开导航栏 10 | ¥%1$.2f 11 | 搜索 12 | 设置 13 | 搜索不可用 14 | 缩略图 15 | -------------------------------------------------------------------------------- /app/src/main/java/org/xdty/kindle/di/modules/DetailModule.java: -------------------------------------------------------------------------------- 1 | package org.xdty.kindle.di.modules; 2 | 3 | import org.xdty.kindle.contract.DetailContract; 4 | import org.xdty.kindle.presenter.DetailPresenter; 5 | 6 | import dagger.Module; 7 | import dagger.Provides; 8 | 9 | @Module 10 | public class DetailModule { 11 | 12 | private DetailContract.View mView; 13 | 14 | public DetailModule(DetailContract.View view) { 15 | mView = view; 16 | } 17 | 18 | @Provides 19 | DetailContract.View provideView() { 20 | return mView; 21 | } 22 | 23 | @Provides 24 | DetailContract.Presenter providePresenter() { 25 | return new DetailPresenter(mView); 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /app/src/main/java/org/xdty/kindle/module/IReview.java: -------------------------------------------------------------------------------- 1 | package org.xdty.kindle.module; 2 | 3 | import android.os.Parcelable; 4 | 5 | import io.requery.Column; 6 | import io.requery.Entity; 7 | import io.requery.Generated; 8 | import io.requery.Key; 9 | import io.requery.Table; 10 | 11 | @Table(name = "review") 12 | @Entity 13 | public interface IReview extends Parcelable { 14 | 15 | @Key 16 | @Generated 17 | int getId(); 18 | 19 | //@ForeignKey(referencedColumn = "item_id") 20 | //@OneToOne 21 | //@Column(name = "item_id") 22 | //Book getBook(); 23 | 24 | @Column(name = "item_id") 25 | String getItemId(); 26 | 27 | @Column(name = "editorial_review") 28 | String getEditorialReview(); 29 | } 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-v21/ic_menu_share.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/xml/shortcuts.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 11 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /app/src/main/java/org/xdty/kindle/module/Books.java: -------------------------------------------------------------------------------- 1 | package org.xdty.kindle.module; 2 | 3 | import java.util.List; 4 | 5 | public class Books { 6 | 7 | private List books; 8 | private String time; 9 | private long timestamp; 10 | 11 | public List getBooks() { 12 | return books; 13 | } 14 | 15 | public void setBooks(List books) { 16 | this.books = books; 17 | } 18 | 19 | public String getTime() { 20 | return time; 21 | } 22 | 23 | public void setTime(String time) { 24 | this.time = time; 25 | } 26 | 27 | public long getTimestamp() { 28 | return timestamp; 29 | } 30 | 31 | public void setTimestamp(long timestamp) { 32 | this.timestamp = timestamp; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | #built application files 2 | *.apk 3 | *.ap_ 4 | 5 | # files for the dex VM 6 | *.dex 7 | 8 | # Java class files 9 | *.class 10 | 11 | # generated files 12 | bin/ 13 | gen/ 14 | 15 | # Local configuration file (sdk path, etc) 16 | local.properties 17 | 18 | # Windows thumbnail db 19 | Thumbs.db 20 | 21 | # OSX files 22 | .DS_Store 23 | 24 | # Eclipse project files 25 | .classpath 26 | .project 27 | 28 | # Android Studio 29 | *.iml 30 | .idea 31 | #.idea/workspace.xml - remove # and delete .idea if it better suit your needs. 32 | .gradle 33 | build/ 34 | 35 | #NDK 36 | obj/ 37 | 38 | /*/out 39 | /*/*/build 40 | /*/*/production 41 | *.iws 42 | *.ipr 43 | *~ 44 | *.swp 45 | 46 | # release key file 47 | release.jks 48 | signing.properties 49 | manifest.properties 50 | 51 | *.log 52 | -------------------------------------------------------------------------------- /app/src/main/java/org/xdty/kindle/data/BookDataSource.java: -------------------------------------------------------------------------------- 1 | package org.xdty.kindle.data; 2 | 3 | import org.xdty.kindle.module.Book; 4 | import org.xdty.kindle.module.Node; 5 | import org.xdty.kindle.module.Review; 6 | 7 | import java.util.List; 8 | 9 | import rx.Observable; 10 | 11 | public interface BookDataSource { 12 | 13 | Observable> getDailyBooks(); 14 | 15 | Observable> getFreeCnBooks(); 16 | 17 | Observable> getFreeEnBooks(); 18 | 19 | Observable> getBooks(Mode mode); 20 | 21 | Observable> getBookNodes(String itemId); 22 | 23 | Observable> getReviews(String itemId); 24 | 25 | Observable getReview(String itemId); 26 | 27 | Observable getBook(String itemId); 28 | } 29 | -------------------------------------------------------------------------------- /app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 15 | 16 |