diff --git a/app/build.gradle b/app/build.gradle index 641f2e6..916588f 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,29 +1,32 @@ apply plugin: 'com.android.application' -apply from: '../config/quality.gradle' +//apply from: '../config/quality.gradle' android { - compileSdkVersion 22 - buildToolsVersion "21.1.2" + compileSdkVersion 23 + buildToolsVersion "23.0.1" project.archivesBaseName = "CNXAndroid"; defaultConfig { applicationId "org.cnx.android" - minSdkVersion 14 - targetSdkVersion 21 - versionCode 34 - versionName "5.1" + minSdkVersion 19 + targetSdkVersion 23 + versionCode 35 + versionName "6.0" } dependencies{ - compile 'com.android.support:support-v4:22.2.0' - compile 'com.android.support:appcompat-v7:22.2.0' - compile 'com.android.support:recyclerview-v7:22.2.0' - compile 'com.android.support:cardview-v7:22.2.0' + compile 'com.android.support:appcompat-v7:23.4.0' + compile 'com.android.support:design:23.4.0' + compile 'com.android.support:support-v4:23.4.0' + compile 'com.android.support:recyclerview-v7:23.4.0' + compile 'com.android.support:cardview-v7:23.4.0' + compile 'com.google.code.gson:gson:2.7' } buildTypes { release { - minifyEnabled false - proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + minifyEnabled true + shrinkResources true + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-cnx-app.pro' applicationVariants.all { variant -> variant.outputs.each { output -> output.outputFile = new File(output.outputFile.parent, output.outputFile.name.replace(".apk", "-" + defaultConfig.versionName + ".apk")) diff --git a/app/proguard-cnx-app.pro b/app/proguard-cnx-app.pro new file mode 100644 index 0000000..806dfd8 --- /dev/null +++ b/app/proguard-cnx-app.pro @@ -0,0 +1,36 @@ +## GSON 2.2.4 specific rules ## + +# Gson uses generic type information stored in a class file when working with fields. Proguard +# removes such information by default, so configure it to keep all of it. +-keepattributes Signature + +# For using GSON @Expose annotation +-keepattributes *Annotation* + +-keepattributes EnclosingMethod + +# Gson specific classes +-keep class sun.misc.Unsafe { *; } +-keep class com.google.gson.stream.** { *; } + +-keep public class android.support.v7.widget.** { *; } +-keep public class android.support.v7.internal.widget.** { *; } +-keep public class android.support.v7.internal.view.menu.** { *; } + +-keep public class * extends android.support.v4.view.ActionProvider { + public (android.content.Context); +} + +# http://stackoverflow.com/questions/29679177/cardview-shadow-not-appearing-in-lollipop-after-obfuscate-with-proguard/29698051 +-keep class android.support.v7.widget.RoundRectDrawable { *; } + +# support design library +-dontwarn android.support.design.** +-keep class android.support.design.** { *; } +-keep interface android.support.design.** { *; } +-keep public class android.support.design.R$* { *; } + +-keep class android.support.v7.** { *; } +-keep interface android.support.v7.** { *; } + +-keep class org.cnx.android.** {*;} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index fbc3369..97a8640 100755 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -16,17 +16,17 @@ - - - - + + + + diff --git a/app/src/main/assets/bookList.json b/app/src/main/assets/bookList.json new file mode 100644 index 0000000..64d226c --- /dev/null +++ b/app/src/main/assets/bookList.json @@ -0,0 +1,324 @@ +{ + "bookList":[ + { + "bookTitle":"College Physics", + "title":"College Physics", + "contentString":"This introductory, algebra-based, two-semester college physics book is grounded with real-world examples, illustrations, and explanations to help students grasp key, fundamental physics concepts. This online, fully editable and customizable title includes learning objectives, concept questions, links to labs and simulations, and ample practice opportunities to solve traditional physics application problems.", + "url":"http://cnx.org/contents/Ax2o07Ul:HR_VN3f7?minimal=true", + "bookUrl":"http://cnx.org/contents/Ax2o07Ul:HR_VN3f7?minimal=true", + "icon":"physics" + }, + { + "bookTitle":"Introduction to Sociology 2e", + "title":"Introduction to Sociology 2e", + "contentString":"Introduction to Sociology 2e adheres to the scope and sequence of a typical introductory sociology course. In addition to comprehensive coverage of core concepts, foundational scholars, and emerging theories we have incorporated section reviews with engaging questions, discussions that help students apply the sociological imagination, and features that draw learners into the discipline in meaningful ways", + "url":"http://cnx.org/contents/AgQDEnLI:TrIRM88K?minimal=true", + "bookUrl":"http://cnx.org/contents/AgQDEnLI:TrIRM88K?minimal=true", + "icon":"sociology2e" + }, + { + "bookTitle":"Biology", + "title":"Biology", + "contentString":"Biology is designed for multi-semester biology courses for science majors. It is grounded on an evolutionary basis and includes exciting features that highlight careers in the biological sciences and everyday applications of the concepts at hand.", + "url":"http://cnx.org/contents/GFy_h8cu:rZudN6XP?minimal=true", + "bookUrl":"http://cnx.org/contents/GFy_h8cu:rZudN6XP?minimal=true", + "icon":"biology" + }, + { + "bookTitle":"Concepts of Biology", + "title":"Concepts of Biology", + "contentString":"Concepts of Biology is intended for the introductory biology course for non-science majors taught at most two- and four-year colleges.", + "url":"http://cnx.org/contents/s8Hh0oOc:Pj8cW7X1?minimal=true", + "bookUrl":"http://cnx.org/contents/s8Hh0oOc:Pj8cW7X1?minimal=true", + "icon":"concepts" + }, + { + "bookTitle":"Anatomy & Physiology", + "title":"Anatomy & Physiology", + "contentString":"Human Anatomy and Physiology is designed for the two-semester anatomy and physiology course taken by life science and allied health students.", + "url":"http://cnx.org/contents/FPtK1zmh:zMTtFGyH?minimal=true", + "bookUrl":"http://cnx.org/contents/FPtK1zmh:zMTtFGyH?minimal=true", + "icon":"anatomy" + }, + { + "bookTitle":"Introductory Statistics", + "title":"Introductory Statistics", + "contentString":"Introductory Statistics is intended for the one-semester introduction to statistics course for students who are not mathematics or engineering majors. It focuses on the interpretation of statistical results, especially in real world settings, and assumes that students have an understanding of intermediate algebra.", + "url":"http://cnx.org/contents/MBiUQmmY:2T34_25K?minimal=true", + "bookUrl":"http://cnx.org/contents/MBiUQmmY:2T34_25K?minimal=true", + "icon":"statistics" + }, + { + "bookTitle":"Principles of Economics", + "title":"Principles of Economics", + "contentString":"Principles of Economics covers the scope and sequence for a two-semester principles of economics course. The text also includes many current examples, including; discussions on the great recession, the controversy among economists over the Affordable Care Act (Obamacare), the recent government shutdown, and the appointment of the United States’ first female Federal Reserve chair, Janet Yellen.", + "url":"http://cnx.org/contents/aWGdK2jw:JgDXaOLP?minimal=true", + "bookUrl":"http://cnx.org/contents/aWGdK2jw:JgDXaOLP?minimal=true", + "icon":"econ" + }, + { + "bookTitle":"Macroeconomics", + "title":"Macroeconomics", + "contentString":"Principles of Macroeconomics covers the scope and sequence for a one-semester economics course. The text also includes many current examples, including: the housing bubble and housing crisis, Zimbabwe’s hyperinflation, global unemployment, and the appointment of the United States’ first female Federal Reserve chair, Janet Yellen.", + "url":"http://cnx.org/contents/QGHIMgmO:JgDXaOLP?minimal=true", + "bookUrl":"http://cnx.org/contents/QGHIMgmO:JgDXaOLP?minimal=true", + "icon":"macro" + }, + { + "bookTitle":"Microeconomics", + "title":"Microeconomics", + "contentString":"Principles of Microeconomics covers the scope and sequence for a one-semester economics course. The text also includes many current examples, including; the Keystone Pipeline, Occupy Wall Street, and debates over the minimum wage.", + "url":"http://cnx.org/contents/6i8iXmBj:JgDXaOLP?minimal=true", + "bookUrl":"http://cnx.org/contents/6i8iXmBj:JgDXaOLP?minimal=true", + "icon":"micro" + }, + { + "bookTitle":"Precalculus", + "title":"Precalculus", + "contentString":"Precalculus is intended for college-level Precalculus students. Since Precalculus courses vary from one institution to the next, we have attempted to meet the needs of as broad an audience as possible, including all of the content that might be covered in any particular course.", + "url":"http://cnx.org/contents/_VPq4foj:vEOnJry_?minimal=true", + "bookUrl":"http://cnx.org/contents/_VPq4foj:vEOnJry_?minimal=true", + "icon":"precalculus" + }, + { + "bookTitle":"Psychology", + "title":"Psychology", + "contentString":"Psychology is designed to meet the scope and sequence for the single-semester introduction to psychology course. For many students, this may be their only college-level psychology course. As such, this textbook provides an important opportunity for students to learn the core concepts of psychology and understand how those concepts apply to their lives.", + "url":"http://cnx.org/contents/Sr8Ev5Og:6HoLG-TA?minimal=true", + "bookUrl":"http://cnx.org/contents/Sr8Ev5Og:6HoLG-TA?minimal=true", + "icon":"psychology" + }, + { + "bookTitle":"U.S. History", + "title":"U.S. History", + "contentString":"U.S. History covers the breadth of the chronological history of the United States and also provides the necessary depth to ensure the course is manageable for instructors and students alike.", + "url":"http://cnx.org/contents/p7ovuIkl:gMXC1GEM?minimal=true", + "bookUrl":"http://cnx.org/contents/p7ovuIkl:gMXC1GEM?minimal=true", + "icon":"history" + }, + { + "bookTitle":"Chemistry", + "title":"Chemistry", + "contentString":"Chemistry is designed for the two-semester general chemistry course. For many students, this course provides the foundation to a career in chemistry, while for others, this may be their only college-level science course. As such, this textbook provides an important opportunity for students to learn the core concepts of chemistry and understand how those concepts apply to their lives and the world around them.", + "url":"http://cnx.org/contents/havxkyvS:uXg0kUa-?minimal=true", + "bookUrl":"http://cnx.org/contents/havxkyvS:uXg0kUa-?minimal=true", + "icon":"chemistry" + }, + { + "bookTitle":"College Algebra", + "title":"College Algebra", + "contentString":"College Algebra provides a comprehensive and multi-layered exploration of algebraic principles. The text is suitable for a typical introductory Algebra course, and was developed to be used flexibly. The modular approach and the richness of content ensures that the book meets the needs of a variety of programs. College Algebra guides and supports students with differing levels of preparation and experience with mathematics.", + "url":"http://cnx.org/contents/mwjClAV_:nU8Qkzwo?minimal=true", + "bookUrl":"http://cnx.org/contents/mwjClAV_:nU8Qkzwo?minimal=true", + "icon":"algebra" + }, + { + "bookTitle":"Algebra and Trigonometry", + "title":"Algebra and Trigonometry", + "contentString":"Algebra and Trigonometry provides a comprehensive and multi-layered exploration of algebraic principles. The modular approach and the richness of content ensures that the book meets the needs of a variety of programs. Algebra and Trigonometry guides and supports students with differing levels of preparation and experience with mathematics.", + "url":"http://cnx.org/contents/E6wQevFf@:nU8Qkzwo?minimal=true", + "bookUrl":"http://cnx.org/contents/E6wQevFf@:nU8Qkzwo?minimal=true", + "icon":"trig" + }, + { + "bookTitle":"College Physics For AP® Courses", + "title":"College Physics For AP® Courses", + "contentString":"College Physics for AP® Courses is designed to engage students in their exploration of physics and help them to relate what they learn in the classroom to their lives and to apply these concepts to the Advanced Placement® test. Physics underlies much of what is happening today in other sciences and in technology, therefore the book includes interesting facts and ideas that go beyond the scope of the AP® course to further student understanding.", + "url":"http://cnx.org/contents/jQSmhtXo:6pB5TgBD?minimal=true", + "bookUrl":"http://cnx.org/contents/jQSmhtXo:6pB5TgBD?minimal=true", + "icon":"ap-physics" + }, + { + "bookTitle":"Principles of Macroeconomics for AP® Courses", + "title":"Principles of Macroeconomics for AP® Courses", + "contentString":"Principles of Macroeconomics for AP® Courses covers the scope and sequence for a one-semester Advance Placement Macroeconomics® course. The book is on the example textbook list for the AP® course here. The text also includes many current examples, including the housing bubble and housing crisis, Zimbabwe’s hyperinflation, global unemployment, and the appointment of the United States’ first female Federal Reserve chair, Janet Yellen.", + "url":"http://cnx.org/contents/MwdgVOwd:CSCWn8lc?minimal=true", + "bookUrl":"http://cnx.org/contents/MwdgVOwd:CSCWn8lc?minimal=true", + "icon":"ap-macro" + }, + { + "bookTitle":"Principles of Microeconomics for AP® Courses", + "title":"Principles of Microeconomics for AP® Courses", + "contentString":"Principles of Microeconomics for AP® Courses covers the scope and sequence for a one-semester Advance Placement Microeconomics® course. The book is on the example textbook list for the AP® course here. The text also includes many current examples, including; the Keystone Pipeline, Occupy Wall Street, and debates over the minimum wage.", + "url":"http://cnx.org/contents/yjROLWcx:CSCWn8lc?minimal=true", + "bookUrl":"http://cnx.org/contents/yjROLWcx:CSCWn8lc?minimal=true", + "icon":"ap-micro" + }, + { + "bookTitle":"American Government", + "title":"American Government", + "contentString":"American Government is designed to meet the scope and sequence requirements of the single-semester American Government course. This title includes innovative features designed to enhance student learning, including Insider Perspective features and a Get Connected module that shows students how they can get engaged in the political process.", + "url":"http://cnx.org/contents/W8wOWXNF:SjdU64Og?minimal=true", + "bookUrl":"http://cnx.org/contents/W8wOWXNF:SjdU64Og?minimal=true", + "icon":"american-gov" + }, + { + "bookTitle":"Calculus Volume 1", + "title":"Calculus Volume 1", + "contentString":"Calculus Volume 1 is the first of three volumes designed for the two- or three-semester calculus course. For many students, this course provides the foundation to a career in mathematics, science, or engineering.", + "url":"http://cnx.org/contents/i4nRcikn:H2TLb2-S?minimal=true", + "bookUrl":"http://cnx.org/contents/i4nRcikn:H2TLb2-S?minimal=true", + "icon":"calculus1" + }, + { + "bookTitle":"Calculus Volume 2", + "title":"Calculus Volume 2", + "contentString":"Calculus Volume 2 is the second of three volumes designed for the two- or three-semester calculus course. For many students, this course provides the foundation to a career in mathematics, science, or engineering.", + "url":"http://cnx.org/contents/HTmjSAcf:rrzms6rP?minimal=true", + "bookUrl":"http://cnx.org/contents/HTmjSAcf:rrzms6rP?minimal=true", + "icon":"calculus2" + }, + { + "bookTitle":"Calculus Volume 3", + "title":"Calculus Volume 3", + "contentString":"Calculus Volume 3 is the third of three volumes designed for the two- or three-semester calculus course. For many students, this course provides the foundation to a career in mathematics, science, or engineering.", + "url":"http://cnx.org/contents/oxzXkyFi:72YaCFgv?minimal=true", + "bookUrl":"http://cnx.org/contents/oxzXkyFi:72YaCFgv?minimal=true", + "icon":"calculus3" + }, + { + "bookTitle":"Chemistry: Atoms First", + "title":"Chemistry: Atoms First", + "contentString":"This text is an atoms-first adaptation of OpenStax Chemistry. The intention of “atoms-first” involves a few basic principles: first, it introduces atomic and molecular structure much earlier than the traditional approach, and it threads these themes through subsequent chapters.", + "url":"http://cnx.org/contents/RTmuIxzM:uXg0kUa-?minimal=true", + "bookUrl":"http://cnx.org/contents/RTmuIxzM:uXg0kUa-?minimal=true", + "icon":"chemistry-atoms" + }, + { + "bookTitle":"Prealgebra", + "title":"Prealgebra", + "contentString":"The core of Prealgebra is a textbook for a one-semester course that serves as a bridge between arithmetic and algebra. The basic philosophy of this book is to strengthen students’ arithmetic skills and introduce the fundamental concepts and vocabulary of algebra in a nurturing, non-threatening environment while addressing the needs of students with diverse backgrounds and learning styles.", + "url":"http://cnx.org/contents/yqV9q0HH:plLt9FYr?minimal=true", + "bookUrl":"http://cnx.org/contents/yqV9q0HH:plLt9FYr?minimal=true", + "icon":"prealgebra" + }, + { + "bookTitle":"Business Fundamentals", + "title":"Business Fundamentals", + "contentString":"", + "url":"http://cnx.org/contents/1ttgPM0x:KfFg0EJq?minimal=true", + "bookUrl":"http://cnx.org/contents/1ttgPM0x:KfFg0EJq?minimal=true", + "icon":"Business Fundamentals" + }, + { + "bookTitle":"Fundamentals of Electrical Engineering", + "title":"Fundamentals of Electrical Engineering", + "contentString":"", + "url":"http://cnx.org/contents/d442r0wh:g9deOnx5?minimal=true", + "bookUrl":"http://cnx.org/contents/d442r0wh:g9deOnx5?minimal=true", + "icon":"Fundamentals of Electrical Engineering" + }, + { + "bookTitle":"Elementary Algebra", + "title":"Elementary Algebra", + "contentString":"", + "url":"http://cnx.org/contents/e9XCtyLF:uUfJZx98?minimal=true", + "bookUrl":"http://cnx.org/contents/e9XCtyLF:uUfJZx98?minimal=true", + "icon":"Elementary Algebra" + }, + { + "bookTitle":"Advanced Algebra II", + "title":"Advanced Algebra II", + "contentString":"", + "url":"http://cnx.org/contents/MnoU7pX2:FEyXudZI?minimal=true", + "bookUrl":"http://cnx.org/contents/MnoU7pX2:FEyXudZI?minimal=true", + "icon":"Advanced Algebra II" + }, + { + "bookTitle":"Applied Probability", + "title":"Applied Probability", + "contentString":"", + "url":"http://cnx.org/contents/HLT_qvJK:wsOQ6HtH?minimal=true", + "bookUrl":"http://cnx.org/contents/HLT_qvJK:wsOQ6HtH?minimal=true", + "icon":"Applied Probability" + }, + { + "bookTitle":"Fast Fourier Transforms", + "title":"Fast Fourier Transforms", + "contentString":"", + "url":"http://cnx.org/contents/gua6b7go:-1XsePkH?minimal=true", + "bookUrl":"http://cnx.org/contents/gua6b7go:-1XsePkH?minimal=true", + "icon":"Fast Fourier Transforms" + }, + { + "bookTitle":"First Course in Electrical Engineering", + "title":"First Course in Electrical Engineering", + "contentString":"", + "url":"http://cnx.org/contents/fpkWedRh:tQa_RWkY?minimal=true", + "bookUrl":"http://cnx.org/contents/fpkWedRh:tQa_RWkY?minimal=true", + "icon":"First Course in Electrical Engineering" + }, + { + "bookTitle":"Flowering Light", + "title":"Flowering Light", + "contentString":"", + "url":"http://cnx.org/contents/OPolDtlN:KvFTO2EG?minimal=true", + "bookUrl":"http://cnx.org/contents/OPolDtlN:KvFTO2EG?minimal=true", + "icon":"Flowering Light" + }, + { + "bookTitle":"Houston Reflections", + "title":"Houston Reflectionsg", + "contentString":"", + "url":"http://cnx.org/contents/eFQIsJEO:AIRHelyE?minimal=true", + "bookUrl":"http://cnx.org/contents/eFQIsJEO:AIRHelyE?minimal=true", + "icon":"Houston Reflections" + }, + { + "bookTitle":"Images of Memorable Cases", + "title":"Images of Memorable Cases", + "contentString":"", + "url":"http://cnx.org/contents/57cfLKUe:SwTmBcjN?minimal=true", + "bookUrl":"http://cnx.org/contents/57cfLKUe:SwTmBcjN?minimal=true", + "icon":"Images of Memorable Cases" + }, + { + "bookTitle":"Understanding Basic Music Theory", + "title":"Understanding Basic Music Theory", + "contentString":"", + "url":"http://cnx.org/contents/KtdLe6cv:_GmJ4ENa?minimal=true", + "bookUrl":"http://cnx.org/contents/KtdLe6cv:_GmJ4ENa?minimal=true", + "icon":"Understanding Basic Music Theory" + }, + { + "bookTitle":"Programming Fundamentals", + "title":"Programming Fundamentals", + "contentString":"", + "url":"http://cnx.org/contents/MDgA8wfz:YzfkjC2r?minimal=true", + "bookUrl":"http://cnx.org/contents/MDgA8wfz:YzfkjC2r?minimal=true", + "icon":"Programming Fundamentals" + }, + { + "bookTitle":"University Physics Volume 1", + "title":"University Physics Volume 1", + "contentString":"", + "url":"http://cnx.org/contents/1Q9uMg_a:bG-_rWXy?minimal=true", + "bookUrl":"http://cnx.org/contents/1Q9uMg_a:bG-_rWXy?minimal=true", + "icon":"University Physics Volume 1" + }, + { + "bookTitle":"University Physics Volume 2", + "title":"University Physics Volume 2", + "contentString":"", + "url":"http://cnx.org/contents/eg-XcBxE:DSrCtKWS?minimal=true", + "bookUrl":"http://cnx.org/contents/eg-XcBxE:DSrCtKWS?minimal=true", + "icon":"University Physics Volume 2" + }, + { + "bookTitle":"University Physics Volume 3", + "title":"University Physics Volume 3", + "contentString":"", + "url":"http://cnx.org/contents/rydUIGBQ:bq-wv5M8?minimal=true", + "bookUrl":"http://cnx.org/contents/rydUIGBQ:bq-wv5M8?minimal=true", + "icon":"University Physics Volume 3" + }, + { + "bookTitle":"Astronomy", + "title":"Astronomy", + "contentString":"", + "url":"http://cnx.org/contents/LnN76Opl:_45u6IpQ?minimal=true", + "bookUrl":"http://cnx.org/contents/LnN76Opl:_45u6IpQ?minimal=true", + "icon":"Astronomy" + } + ] +} \ No newline at end of file diff --git a/app/src/main/java/org/cnx/android/activity/BaseActivity.java b/app/src/main/java/org/cnx/android/activity/BaseActivity.java new file mode 100644 index 0000000..bd4c15d --- /dev/null +++ b/app/src/main/java/org/cnx/android/activity/BaseActivity.java @@ -0,0 +1,58 @@ +/** + * Copyright (c) 2016 Rice University + * + * This software is subject to the provisions of the GNU Lesser General + * Public License Version 2.1 (LGPL). See LICENSE.txt for details. + */ +package org.cnx.android.activity; + +import android.support.v4.widget.DrawerLayout; +import android.support.v7.app.ActionBarDrawerToggle; +import android.support.v7.app.AppCompatActivity; +import android.view.View; +import android.widget.ListView; +import android.widget.SimpleAdapter; + +import org.cnx.android.R; +import org.cnx.android.listeners.DrawerItemClickListener; +import org.cnx.android.utils.CNXUtil; + +import java.util.HashMap; +import java.util.List; + +/** + * base activity used to put nav drawer code in one place + */ +public class BaseActivity extends AppCompatActivity +{ + public ActionBarDrawerToggle drawerToggle; + String[] from = {"nav_icon","nav_item"}; + int[] to = { R.id.nav_icon , R.id.nav_item}; + + protected void setNavDrawer() + { + List> navTitles = CNXUtil.createNavItems(this); + DrawerLayout drawerLayout = (DrawerLayout)findViewById(R.id.drawer_layout); + ListView drawerList = (ListView)findViewById(R.id.left_drawer); + SimpleAdapter sAdapter = new SimpleAdapter(this,navTitles, R.layout.nav_drawer,from,to); + + drawerList.setOnItemClickListener(new DrawerItemClickListener(this, drawerLayout)); + + drawerToggle = new ActionBarDrawerToggle(this, drawerLayout, R.string.drawer_open, R.string.drawer_close) + { + public void onDrawerClosed(View view) + { + invalidateOptionsMenu(); + } + + public void onDrawerOpened(View drawerView) + { + invalidateOptionsMenu(); + } + }; + drawerToggle.setDrawerIndicatorEnabled(true); + drawerToggle.syncState(); + drawerLayout.addDrawerListener(drawerToggle); + drawerList.setAdapter(sAdapter); + } +} diff --git a/app/src/main/java/org/cnx/android/activity/LandingActivity.java b/app/src/main/java/org/cnx/android/activity/LandingActivity.java index 29928e6..a670b0e 100755 --- a/app/src/main/java/org/cnx/android/activity/LandingActivity.java +++ b/app/src/main/java/org/cnx/android/activity/LandingActivity.java @@ -6,91 +6,62 @@ */ package org.cnx.android.activity; -import java.util.HashMap; -import java.util.List; - -import android.app.ActionBar; -import android.app.Activity; import org.cnx.android.R; import org.cnx.android.beans.Content; -import org.cnx.android.fragments.GridFragment; +import org.cnx.android.fragments.LandingListFragment; import org.cnx.android.handlers.MenuHandler; -import org.cnx.android.listeners.DrawerItemClickListener; -import org.cnx.android.utils.CNXUtil; -import android.app.FragmentTransaction; +import android.content.Context; import android.content.Intent; import android.os.Bundle; -import android.support.v7.app.ActionBarDrawerToggle; -import android.support.v4.widget.DrawerLayout; +import android.support.design.widget.CollapsingToolbarLayout; +import android.support.design.widget.FloatingActionButton; +import android.support.v4.app.FragmentTransaction; +import android.support.v7.widget.Toolbar; import android.text.Html; -import android.util.Log; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; -import android.widget.ListView; -import android.widget.SimpleAdapter; /** * Activity for Landing page * @author Ed Woodward * */ -public class LandingActivity extends Activity implements GridFragment.OnBookSelectedListener +public class LandingActivity extends BaseActivity { - private ActionBarDrawerToggle drawerToggle; - String[] from = { "nav_icon","nav_item" }; - int[] to = { R.id.nav_icon , R.id.nav_item}; - /* (non-Javadoc) * @see android.app.Activity#onCreate(android.os.Bundle) */ public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setContentView(R.layout.new_landing); - ActionBar aBar = this.getActionBar(); - aBar.setTitle(Html.fromHtml("  " + getString(R.string.app_name_html))); - - List> navTitles = CNXUtil.createNavItems(this); - DrawerLayout drawerLayout = (DrawerLayout)findViewById(R.id.drawer_layout); - ListView drawerList = (ListView)findViewById(R.id.left_drawer); - SimpleAdapter sAdapter = new SimpleAdapter(this,navTitles, R.layout.nav_drawer,from,to); - - drawerList.setOnItemClickListener(new DrawerItemClickListener(this,drawerLayout)); + setContentView(R.layout.activity_landing); + Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); + setSupportActionBar(toolbar); + CollapsingToolbarLayout toolbarLayout = (CollapsingToolbarLayout) findViewById(R.id.toolbar_layout); + getSupportActionBar().setTitle(Html.fromHtml(getString(R.string.app_name_html))); + getSupportActionBar().setDisplayHomeAsUpEnabled(true); + + FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); + LandingListFragment fragment = new LandingListFragment(); + transaction.replace(R.id.sample_content_fragment, fragment); + transaction.commit(); - drawerToggle = new ActionBarDrawerToggle(this, drawerLayout, R.string.drawer_open, R.string.drawer_close) + final Context context = this; + FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); + fab.setOnClickListener(new View.OnClickListener() { - public void onDrawerClosed(View view) { - invalidateOptionsMenu(); - } - - public void onDrawerOpened(View drawerView) { - invalidateOptionsMenu(); + @Override + public void onClick(View view) + { + Intent intent = new Intent(context, ViewFavsActivity.class); + context.startActivity(intent); } - }; - drawerToggle.setDrawerIndicatorEnabled(true); - drawerToggle.syncState(); - drawerLayout.setDrawerListener(drawerToggle); - aBar.setDisplayHomeAsUpEnabled(true); - aBar.setHomeButtonEnabled(true); - drawerList.setAdapter(sAdapter); - - FragmentTransaction transaction = getFragmentManager().beginTransaction(); - GridFragment fragment = new GridFragment(); - transaction.replace(R.id.contentFragment, fragment); - transaction.commit(); - } - - public void onBookSelected(Content content) - { - - Intent i = new Intent(getApplicationContext(), WebViewActivity.class); - i.putExtra(getString(R.string.webcontent),content); - startActivity(i); - + }); + setNavDrawer(); } diff --git a/app/src/main/java/org/cnx/android/activity/NoteEditorActivity.java b/app/src/main/java/org/cnx/android/activity/NoteEditorActivity.java index c6948cb..e773832 100755 --- a/app/src/main/java/org/cnx/android/activity/NoteEditorActivity.java +++ b/app/src/main/java/org/cnx/android/activity/NoteEditorActivity.java @@ -7,15 +7,20 @@ package org.cnx.android.activity; -import android.app.ActionBar; -import android.app.Activity; import org.cnx.android.R; import org.cnx.android.beans.Content; import org.cnx.android.fragments.NoteEditorFragment; -import android.app.FragmentTransaction; import android.content.Intent; import android.os.Bundle; +import android.support.design.widget.FloatingActionButton; +import android.support.v4.app.FragmentTransaction; +import android.support.v7.app.ActionBar; +import android.support.v7.app.AppCompatActivity; +import android.support.v7.widget.Toolbar; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.View; import android.widget.Toast; /** @@ -24,10 +29,11 @@ * @author Ed Woodward * */ -public class NoteEditorActivity extends Activity +public class NoteEditorActivity extends AppCompatActivity { - //private Content content; + private Content content; + /* (non-Javadoc) * @see android.app.Activity#onCreate(android.os.Bundle) @@ -38,7 +44,7 @@ protected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); Intent intent = getIntent(); - Content content = (Content)intent.getSerializableExtra(getString(R.string.content)); + content = (Content)intent.getSerializableExtra(getString(R.string.content)); if(content == null) { @@ -46,26 +52,56 @@ protected void onCreate(Bundle savedInstanceState) return; } - setContentView(R.layout.editor_activity); - - ActionBar aBar = getActionBar(); - + setContentView(R.layout.activity_noteeditor); + Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); + setSupportActionBar(toolbar); + ActionBar aBar = getSupportActionBar(); + if(content == null) { aBar.setTitle("Note not created correctly."); } else { - aBar.setTitle("Note for " + content.getBookTitle()); + aBar.setTitle(content.getBookTitle() + " Note"); } - - FragmentTransaction transaction = getFragmentManager().beginTransaction(); - NoteEditorFragment fragment = NoteEditorFragment.newInstance(content); - transaction.replace(R.id.noteFragment, fragment); + + FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); + final NoteEditorFragment fragment = NoteEditorFragment.newInstance(content); + transaction.replace(R.id.contentFragment, fragment); transaction.commit(); + + final AppCompatActivity activity = this; + FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); + fab.setOnClickListener(new View.OnClickListener() + { + @Override + public void onClick(View view) + { + fragment.saveNote(); + activity.finish(); + } + }); + + } + + @Override + public boolean onCreateOptionsMenu(Menu menu) + { + MenuInflater inflater = getMenuInflater(); + if(content == null) + { + return false; + } + + menu.clear(); + inflater.inflate(R.menu.note_editor_menu, menu); + + return true; } + } diff --git a/app/src/main/java/org/cnx/android/activity/ViewFavsActivity.java b/app/src/main/java/org/cnx/android/activity/ViewFavsActivity.java index 9a271b1..c75f145 100755 --- a/app/src/main/java/org/cnx/android/activity/ViewFavsActivity.java +++ b/app/src/main/java/org/cnx/android/activity/ViewFavsActivity.java @@ -6,37 +6,27 @@ */ package org.cnx.android.activity; -import java.util.HashMap; -import java.util.List; +import android.support.v4.app.FragmentTransaction; +import android.support.design.widget.CollapsingToolbarLayout; +import android.support.v7.widget.Toolbar; +import android.view.Menu; +import android.view.MenuItem; + +import android.content.Intent; +import android.os.Bundle; -import android.app.ActionBar; -import android.app.Activity; -import android.app.FragmentTransaction; -import android.support.v7.app.ActionBarDrawerToggle; -import android.support.v4.widget.DrawerLayout; -import android.view.*; -import android.widget.SimpleAdapter; import org.cnx.android.R; import org.cnx.android.fragments.FavsFragment; import org.cnx.android.handlers.MenuHandler; -import org.cnx.android.listeners.DrawerItemClickListener; -import org.cnx.android.utils.CNXUtil; - -import android.os.Bundle; -import android.widget.ListView; /** * Activity for displaying Favs Fragment * @author Ed Woodward * */ -public class ViewFavsActivity extends Activity +public class ViewFavsActivity extends BaseActivity { - private ActionBarDrawerToggle drawerToggle; - String[] from = {"nav_icon","nav_item"}; - int[] to = { R.id.nav_icon , R.id.nav_item}; - /* (non-Javadoc) * @see android.app.Activity#onCreate(android.os.Bundle) * Called when the activity is first created. @@ -45,74 +35,52 @@ public class ViewFavsActivity extends Activity public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS); - setContentView(R.layout.favs_activity); - - ActionBar aBar = getActionBar(); - aBar.setTitle(" " + getString(R.string.title_favs)); + setContentView(R.layout.activity_favs); + Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); + setSupportActionBar(toolbar); + CollapsingToolbarLayout toolbarLayout = (CollapsingToolbarLayout) findViewById(R.id.toolbar_layout); + toolbarLayout.setTitle(getString(R.string.title_favs)); + getSupportActionBar().setDisplayHomeAsUpEnabled(true); - FragmentTransaction transaction = getFragmentManager().beginTransaction(); + FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); FavsFragment fragment = new FavsFragment(); - transaction.add(R.id.favsFragment, fragment); + transaction.add(R.id.container, fragment); transaction.commit(); - List> navTitles = CNXUtil.createNavItems(this); - DrawerLayout drawerLayout = (DrawerLayout)findViewById(R.id.drawer_layout); - ListView drawerList = (ListView)findViewById(R.id.left_drawer); - SimpleAdapter sAdapter = new SimpleAdapter(this,navTitles, R.layout.nav_drawer,from,to); - - drawerList.setOnItemClickListener(new DrawerItemClickListener(this, drawerLayout)); - - drawerToggle = new ActionBarDrawerToggle(this, drawerLayout, R.string.drawer_open, R.string.drawer_close) - { - public void onDrawerClosed(View view) - { - invalidateOptionsMenu(); - } - - public void onDrawerOpened(View drawerView) - { - invalidateOptionsMenu(); - } - }; - drawerToggle.setDrawerIndicatorEnabled(true); - drawerToggle.syncState(); - drawerLayout.setDrawerListener(drawerToggle); - aBar.setDisplayHomeAsUpEnabled(true); - aBar.setHomeButtonEnabled(true); - drawerList.setAdapter(sAdapter); } - - /* (non-Javadoc) - * @see android.app.Activity#onCreateOptionsMenu(android.view.Menu) - */ - @Override - public boolean onCreateOptionsMenu(Menu menu) - { - - getMenuInflater().inflate(R.menu.favs_options_menu, menu); - return true; - - } + /* (non-Javadoc) + * @see android.app.Activity#onOptionsItemSelected(android.view.MenuItem) + * Handles selected options menu item + */ + @Override + public boolean onOptionsItemSelected(MenuItem item) + { + if(item.getItemId() == android.R.id.home) + { + Intent mainIntent = new Intent(getApplicationContext(), LandingActivity.class); + mainIntent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); + startActivity(mainIntent); + return true; + } + else + { + MenuHandler mh = new MenuHandler(); + return mh.handleContextMenu(item, this, null); + } - /* (non-Javadoc) - * @see android.app.Activity#onOptionsItemSelected(android.view.MenuItem) - */ - @Override - public boolean onOptionsItemSelected(MenuItem item) - { - if (drawerToggle.onOptionsItemSelected(item)) - { - return true; - } + } - MenuHandler mh = new MenuHandler(); - boolean returnVal = mh.handleContextMenu(item, this, null); + @Override + public boolean onCreateOptionsMenu(Menu menu) + { + super.onCreateOptionsMenu(menu); + getMenuInflater().inflate(R.menu.favs_options_menu, menu); + return true; + + } - return returnVal; - } } diff --git a/app/src/main/java/org/cnx/android/activity/WebViewActivity.java b/app/src/main/java/org/cnx/android/activity/WebViewActivity.java index 7c6fa64..05f0251 100755 --- a/app/src/main/java/org/cnx/android/activity/WebViewActivity.java +++ b/app/src/main/java/org/cnx/android/activity/WebViewActivity.java @@ -6,32 +6,26 @@ */ package org.cnx.android.activity; -import java.net.MalformedURLException; -import java.net.URL; -import java.util.HashMap; -import java.util.List; - -import android.app.ActionBar; -import android.app.Activity; import android.content.SharedPreferences; -import android.support.v7.app.ActionBarDrawerToggle; -import android.support.v4.widget.DrawerLayout; +import android.support.v7.widget.Toolbar; import android.text.Html; -import android.view.*; -import android.widget.*; import org.cnx.android.R; import org.cnx.android.beans.Content; import org.cnx.android.handlers.MenuHandler; -import org.cnx.android.listeners.DrawerItemClickListener; import org.cnx.android.logic.WebviewLogic; import org.cnx.android.utils.CNXUtil; -import org.cnx.android.views.ObservableWebView; import android.content.Intent; import android.content.res.Configuration; import android.os.Bundle; import android.util.Log; +import android.view.KeyEvent; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; +import android.view.Window; import android.webkit.WebChromeClient; +import android.webkit.WebSettings; import android.webkit.WebView; import android.webkit.WebViewClient; import android.webkit.WebSettings.LayoutAlgorithm; @@ -42,10 +36,10 @@ * @author Ed Woodward * */ -public class WebViewActivity extends Activity +public class WebViewActivity extends BaseActivity { /** Web browser view for Activity */ - private ObservableWebView webView; + private WebView webView; /** Variable for serialized Content object */ private Content content; @@ -53,10 +47,6 @@ public class WebViewActivity extends Activity private boolean progressBarRunning; - private ActionBarDrawerToggle drawerToggle; - String[] from = { "nav_icon","nav_item"}; - int[] to = { R.id.nav_icon , R.id.nav_item}; - SharedPreferences sharedPref; /** inner class for WebViewClient*/ @@ -81,16 +71,8 @@ public boolean shouldOverrideUrlLoading(WebView view, String url) } view.loadUrl(url); - try - { - content.setUrl(new URL(url)); + content.setUrl(url); - - } - catch (MalformedURLException e) - { - Log.d("WV.shouldOverrideUrl()", "Error: " + e.toString(),e); - } return true; } @@ -133,55 +115,43 @@ public void onCreate(Bundle savedInstanceState) { requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS); super.onCreate(savedInstanceState); - //Log.d("LensWebView.onCreate()", "Called"); + setContentView(R.layout.web_view); + Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); + setSupportActionBar(toolbar); + getSupportActionBar().setDisplayHomeAsUpEnabled(true); + getSupportActionBar().setTitle(Html.fromHtml(getString(R.string.app_name_html)));; + - setContentView(R.layout.new_web_view); - ActionBar aBar = this.getActionBar(); sharedPref = getSharedPreferences("org.cnx.android",MODE_PRIVATE); setProgressBarIndeterminateVisibility(true); progressBarRunning = true; //Log.d("WebView.onCreate()", "Called"); Intent intent = getIntent(); content = (Content)intent.getSerializableExtra(getString(R.string.webcontent)); - Log.d("url",content.getUrl().toString()); + Log.d("url",content.getUrl()); - try + if(!content.getUrl().contains("?bookmark=1") && !content.getUrl().contains("/search")) { - if(!content.getUrl().toString().contains("?bookmark=1") || content.getUrl().toString().contains("/search")) - { - SharedPreferences sharedPref = getSharedPreferences(getString(R.string.cnx_package), MODE_PRIVATE); - String bookURL = webviewLogic.getBookURL(content.getUrl().toString()); - String url = sharedPref.getString(bookURL, ""); - - try - { - if(url.equals("")) - { - url = content.getUrl().toString(); - - } - content.setUrl(new URL(webviewLogic.convertURL(url))); - } - catch(MalformedURLException mue) - { - Log.e("WViewActivity.onResume", mue.toString()); - } - } - else + SharedPreferences sharedPref = getSharedPreferences(getString(R.string.cnx_package), MODE_PRIVATE); + String bookURL = webviewLogic.getBookURL(content.getUrl()); + String url = sharedPref.getString(bookURL, ""); + + if(url.equals("")) { - //remove bookmark parameter - String newURL = content.getUrl().toString().replace("?bookmark=1",""); - content.setUrl(new URL(webviewLogic.convertURL(newURL))); + url = content.getUrl(); } + content.setUrl(webviewLogic.convertURL(url)); + } - catch(MalformedURLException mue) + else { - Log.e("WViewActivity.onResume", mue.toString()); - } + //remove bookmark parameter + String newURL = content.getUrl().replace("?bookmark=1",""); + content.setUrl(webviewLogic.convertURL(newURL)); - aBar.setTitle(Html.fromHtml(getString(R.string.app_name_html))); + } if(CNXUtil.isConnected(this)) { @@ -190,35 +160,10 @@ public void onCreate(Bundle savedInstanceState) } else { - webView = (ObservableWebView)findViewById(R.id.web_view); + webView = (WebView)findViewById(R.id.web_view); CNXUtil.makeNoDataToast(this); } - List> navTitles = CNXUtil.createNavItems(this); - DrawerLayout drawerLayout = (DrawerLayout)findViewById(R.id.drawer_layout); - ListView drawerList = (ListView)findViewById(R.id.left_drawer); - SimpleAdapter sAdapter = new SimpleAdapter(this,navTitles, R.layout.nav_drawer,from,to); - - drawerList.setOnItemClickListener(new DrawerItemClickListener(this, drawerLayout)); - - drawerToggle = new ActionBarDrawerToggle(this, drawerLayout, R.string.drawer_open, R.string.drawer_close) - { - public void onDrawerClosed(View view) - { - invalidateOptionsMenu(); - } - - public void onDrawerOpened(View drawerView) - { - invalidateOptionsMenu(); - } - }; - drawerToggle.setDrawerIndicatorEnabled(true); - drawerToggle.syncState(); - drawerLayout.setDrawerListener(drawerToggle); - aBar.setDisplayHomeAsUpEnabled(true); - aBar.setHomeButtonEnabled(true); - drawerList.setAdapter(sAdapter); String pref = sharedPref.getString("cacheCleared", ""); if(pref.equals("")) { @@ -227,6 +172,7 @@ public void onDrawerOpened(View drawerView) ed.putString("cacheCleared", "true"); ed.apply(); } + setNavDrawer(); } /* (non-Javadoc) @@ -265,7 +211,7 @@ public boolean onPrepareOptionsMenu(Menu menu) * Handles selected options menu item */ @Override - public boolean onOptionsItemSelected(MenuItem item) + public boolean onOptionsItemSelected(MenuItem item) { if (drawerToggle.onOptionsItemSelected(item)) { @@ -275,7 +221,7 @@ public boolean onOptionsItemSelected(MenuItem item) if(item.getItemId() == android.R.id.home) { Intent mainIntent = new Intent(getApplicationContext(), LandingActivity.class); - mainIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); + mainIntent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); startActivity(mainIntent); return true; } @@ -308,7 +254,7 @@ public boolean onOptionsItemSelected(MenuItem item) * Handles use of back button on browser */ @Override - public boolean onKeyDown(int keyCode, KeyEvent event) + public boolean onKeyDown(int keyCode, KeyEvent event) { if (webView != null && ((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack())) { @@ -348,14 +294,8 @@ protected void onResume() if(!url.equals("")) { url = webviewLogic.convertURL(url); - try - { - content.setUrl(new URL(url)); - } - catch(MalformedURLException mue) - { - Log.e("WViewActivity.onResume", mue.toString()); - } + content.setUrl(url); + } } @@ -365,7 +305,7 @@ protected void onResume() protected void onPause() { super.onPause(); - if(content.getIcon() != null) + if(!(content.getIcon().equals(""))) { SharedPreferences sharedPref = getSharedPreferences(getString(R.string.cnx_package), MODE_PRIVATE); SharedPreferences.Editor ed = sharedPref.edit(); @@ -386,12 +326,12 @@ protected void onSaveInstanceState(Bundle outState) super.onSaveInstanceState(outState); //Log.d("ViewLenses.onSaveInstanceState()", "saving data"); outState.putSerializable(getString(R.string.webcontent),content); - if(content.getIcon() != null) + if(!content.getIcon().equals("")) { SharedPreferences sharedPref = getSharedPreferences(getString(R.string.cnx_package), MODE_PRIVATE); SharedPreferences.Editor ed = sharedPref.edit(); WebviewLogic wl = new WebviewLogic(); - String bookURL = wl.getBookURL(content.getUrl().toString()); + String bookURL = wl.getBookURL(content.getUrl()); //Log.d("SIS", "BookURL - " + bookURL); String url = webView.getUrl().replace("?bookmark=1", ""); ed.putString(bookURL, url); @@ -403,19 +343,20 @@ protected void onSaveInstanceState(Bundle outState) /** sets properties on WebView and loads selected content into browser. */ private void setUpViews() { - if(content == null || content.url == null) + if(content == null || content.getUrl() == null) { return; } //Log.d("WebViewView.setupViews()", "Called"); - webView = (ObservableWebView)findViewById(R.id.web_view); + webView = (WebView)findViewById(R.id.web_view); webView.getSettings().setJavaScriptEnabled(true); webView.getSettings().setDefaultFontSize(17); webView.getSettings().setSupportZoom(true); webView.getSettings().setBuiltInZoomControls(true); webView.getSettings().setLayoutAlgorithm(LayoutAlgorithm.NARROW_COLUMNS); webView.getSettings().setDomStorageEnabled(true); + webView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); webView.setWebChromeClient(new WebChromeClient() { @@ -423,6 +364,6 @@ private void setUpViews() }); webView.setWebViewClient(webViewClient); - webView.loadUrl(content.url.toString()); + webView.loadUrl(content.getUrl()); } } diff --git a/app/src/main/java/org/cnx/android/adapters/FavsRecyclerViewAdapter.java b/app/src/main/java/org/cnx/android/adapters/FavsRecyclerViewAdapter.java index 65cbe9f..d4edcdb 100644 --- a/app/src/main/java/org/cnx/android/adapters/FavsRecyclerViewAdapter.java +++ b/app/src/main/java/org/cnx/android/adapters/FavsRecyclerViewAdapter.java @@ -19,7 +19,9 @@ import org.cnx.android.R; import org.cnx.android.activity.WebViewActivity; import org.cnx.android.beans.Content; +import org.cnx.android.logic.WebviewLogic; import org.cnx.android.providers.Favs; +import org.cnx.android.utils.CNXUtil; import java.util.ArrayList; @@ -56,181 +58,11 @@ public void onBindViewHolder(ViewHolder viewHolder, int i) { content = contentList.get(i); viewHolder.title.setText(content.getTitle()); - if (viewHolder.logo != null && content.icon != null) + viewHolder.other.setText(content.getContentString()); + if (viewHolder.logo != null) { + viewHolder.logo.setImageResource(CNXUtil.getCoverId(content,context)); - //set correct icon based on URL - if(content.getIcon().equals("physics")) - { - viewHolder.logo.setImageResource(R.drawable.physics_lg); - } - else if(content.getIcon().equals("sociology")) - { - viewHolder.logo.setImageResource(R.drawable.sociology_lg); - } - else if(content.getIcon().equals("biology")) - { - viewHolder.logo.setImageResource(R.drawable.biology_lg); - } - else if(content.getIcon().equals("concepts")) - { - viewHolder.logo.setImageResource(R.drawable.concepts_biology_lg); - } - else if(content.getIcon().equals("anatomy")) - { - viewHolder.logo.setImageResource(R.drawable.anatomy_lg); - } - else if(content.getIcon().equals("statistics")) - { - viewHolder.logo.setImageResource(R.drawable.statistics_lg); - } - else if(content.getIcon().equals("econ")) - { - viewHolder.logo.setImageResource(R.drawable.econ_lg); - } - else if(content.getIcon().equals("macro")) - { - viewHolder.logo.setImageResource(R.drawable.macro_econ_lg); - } - else if(content.getIcon().equals("micro")) - { - viewHolder.logo.setImageResource(R.drawable.micro_econ_lg); - } - else if(content.getIcon().equals("precalculus")) - { - viewHolder.logo.setImageResource(R.drawable.precalculus_lg); - } - else if(content.getIcon().equals("psychology")) - { - viewHolder.logo.setImageResource(R.drawable.psychology_lg); - } - else if(content.getIcon().equals("history")) - { - viewHolder.logo.setImageResource(R.drawable.history_lg); - } - else if(content.getIcon().equals("chemistry")) - { - viewHolder.logo.setImageResource(R.drawable.chemistry_lg); - } - else if(content.getIcon().equals("algebra")) - { - viewHolder.logo.setImageResource(R.drawable.algebra_lg); - } - else if(content.getIcon().equals("trig")) - { - viewHolder.logo.setImageResource(R.drawable.trig_lg); - } - else if(content.getIcon().equals("ap-physics")) - { - viewHolder.logo.setImageResource(R.drawable.ap_physics_lg); - } - else if(content.getIcon().equals("ap-macro")) - { - viewHolder.logo.setImageResource(R.drawable.ap_macro); - } - else if(content.getIcon().equals("ap-micro")) - { - viewHolder.logo.setImageResource(R.drawable.ap_micro); - } - else if(content.getIcon().equals("Business Fundamentals")) - { - viewHolder.logo.setImageResource(R.drawable.bus_fundamentals); - } - else if(content.getIcon().equals("Fundamentals of Electrical Engineering")) - { - viewHolder.logo.setImageResource(R.drawable.elec_engineering); - } - else if(content.getIcon().equals("Elementary Algebra")) - { - viewHolder.logo.setImageResource(R.drawable.elem_algebra); - } - else if(content.getIcon().equals("Advanced Algebra II")) - { - viewHolder.logo.setImageResource(R.drawable.advanced_algebra); - } - else if(content.getIcon().equals("Applied Probability")) - { - viewHolder.logo.setImageResource(R.drawable.applied_probability); - } - else if(content.getIcon().equals("Fast Fourier Transforms")) - { - viewHolder.logo.setImageResource(R.drawable.fast_fourier); - } - else if(content.getIcon().equals("First Course in Electrical Engineering")) - { - viewHolder.logo.setImageResource(R.drawable.first_course); - } - else if(content.getIcon().equals("Flowering Light")) - { - viewHolder.logo.setImageResource(R.drawable.flowering_light); - } - else if(content.getIcon().equals("Houston Reflections")) - { - viewHolder.logo.setImageResource(R.drawable.houston_reflections); - } - else if(content.getIcon().equals("Images of Memorable Cases")) - { - viewHolder.logo.setImageResource(R.drawable.memorable_cases); - } - else if(content.getIcon().equals("Understanding Basic Music Theory")) - { - viewHolder.logo.setImageResource(R.drawable.music_theory); - } - else if(content.getIcon().equals("Programming Fundamentals")) - { - viewHolder.logo.setImageResource(R.drawable.programming_fundamentals); - } - else if(content.getIcon().equals(context.getString(R.string.american_gov_icon))) - { - viewHolder.logo.setImageResource(R.drawable.american_gov); - } - else if(content.getIcon().equals(context.getString(R.string.calculus1_icon))) - { - viewHolder.logo.setImageResource(R.drawable.calculus1); - } - else if(content.getIcon().equals(context.getString(R.string.calculus2_icon))) - { - viewHolder.logo.setImageResource(R.drawable.calculus2); - } - else if(content.getIcon().equals(context.getString(R.string.calculus3_icon))) - { - viewHolder.logo.setImageResource(R.drawable.calculus3); - } - else if(content.getIcon().equals(context.getString(R.string.chemistry_atoms_icon))) - { - viewHolder.logo.setImageResource(R.drawable.chemistry_atoms); - } - else if(content.getIcon().equals(context.getString(R.string.prealgebra_icon))) - { - viewHolder.logo.setImageResource(R.drawable.prealgebra); - } - else - { - viewHolder.logo.setImageResource(R.drawable.ic_book_black_48dp); - } - } - else - { -// if(content.url.toString().contains("lenses")) -// { -// viewHolder.logo.setImageResource(R.drawable.lenses); -// } -// else if(content.url.toString().contains("content/m")) -// { -// viewHolder.logo.setImageResource(R.drawable.modules); -// } -// else if(content.url.toString().contains("content/col")) -// { -// viewHolder.logo.setImageResource(R.drawable.collections); -// } -// else if(content.url.toString().contains("google.com") || content.url.toString().contains("legacy.cnx.org/content/search")) -// { -// viewHolder.logo.setImageResource(R.drawable.search_selected); -// } -// else -// { - viewHolder.logo.setImageResource(R.drawable.ic_book_black_48dp); - //} } } @@ -261,6 +93,7 @@ public static class ViewHolder extends RecyclerView.ViewHolder implements View.O { public ImageView logo; public TextView title; + public TextView other; public View view; ArrayList contentList; @@ -272,6 +105,7 @@ public ViewHolder(View itemView, ArrayList contentList) logo = (ImageView) itemView.findViewById(R.id.logoView); title = (TextView)itemView.findViewById(R.id.bookName); + other = (TextView)itemView.findViewById(R.id.other); itemView.setOnClickListener(this); } @@ -280,6 +114,8 @@ public ViewHolder(View itemView, ArrayList contentList) public void onClick(View v) { Content content = contentList.get(getAdapterPosition()); + WebviewLogic wl = new WebviewLogic(); + wl.setContentURLs(content.getUrl(), content); Context context = v.getContext(); Intent wv = new Intent(v.getContext(), WebViewActivity.class); wv.putExtra(v.getContext().getString(R.string.webcontent), content); diff --git a/app/src/main/java/org/cnx/android/adapters/LandingListRecyclerViewAdapter.java b/app/src/main/java/org/cnx/android/adapters/LandingListRecyclerViewAdapter.java new file mode 100644 index 0000000..1ce0c99 --- /dev/null +++ b/app/src/main/java/org/cnx/android/adapters/LandingListRecyclerViewAdapter.java @@ -0,0 +1,95 @@ +/** + * Copyright (c) 2015 Rice University + * + * This software is subject to the provisions of the GNU Lesser General + * Public License Version 2.1 (LGPL). See LICENSE.txt for details. + */ +package org.cnx.android.adapters; + +import android.content.Context; +import android.content.Intent; +import android.support.v7.widget.RecyclerView; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import org.cnx.android.R; +import org.cnx.android.activity.WebViewActivity; +import org.cnx.android.beans.Content; +import org.cnx.android.utils.CNXUtil; + +import java.util.ArrayList; + +/** Adapter to properly display books in RecyclerView +* @author Ed Woodward +* */ +public class LandingListRecyclerViewAdapter extends RecyclerView.Adapter +{ + + private int rowLayout; + Context context; + private ArrayList contentList; + + public LandingListRecyclerViewAdapter(ArrayList content, int rowLayout, Context context) + { + contentList = content; + this.rowLayout = rowLayout; + this.context = context; + } + + @Override + public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) + { + View v = LayoutInflater.from(parent.getContext()).inflate(rowLayout, parent, false); + return new ViewHolder(v,contentList); + } + + @Override + public void onBindViewHolder(final ViewHolder holder, int position) + { + Content book = contentList.get(position); + holder.bookTitle.setText(book.getBookTitle()); + if (holder.logo != null && book.getIcon() != null) + { + holder.logo.setImageResource(CNXUtil.getCoverId(book, context)); + + } + } + + @Override + public int getItemCount() + { + return contentList == null ? 0 : contentList.size(); + } + + public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener + { + private TextView bookTitle; + private ImageView logo; + ArrayList contentList; + + public ViewHolder(View itemView, ArrayList contentList) + { + super(itemView); + this.contentList = contentList; + bookTitle = (TextView) itemView.findViewById(R.id.title); + logo = (ImageView) itemView.findViewById(R.id.logoView); + itemView.setOnClickListener(this); + } + + @Override + public void onClick(View v) + { + int position = getAdapterPosition(); + Content book = contentList.get(position); + Context context = v.getContext(); + Intent wv = new Intent(v.getContext(), WebViewActivity.class); + wv.putExtra(context.getString(R.string.webcontent), book); + + context.startActivity(wv); + } + } + +} diff --git a/app/src/main/java/org/cnx/android/beans/BookList.java b/app/src/main/java/org/cnx/android/beans/BookList.java new file mode 100644 index 0000000..76d12e9 --- /dev/null +++ b/app/src/main/java/org/cnx/android/beans/BookList.java @@ -0,0 +1,28 @@ +/** + * Copyright (c) 2016 Rice University + * + * This software is subject to the provisions of the GNU Lesser General + * Public License Version 2.1 (LGPL). See LICENSE.txt for details. + */ +package org.cnx.android.beans; + +import java.util.ArrayList; + +/** + * Holds list of content (Book) objects + * @author Ed Woodward + */ +public class BookList +{ + private ArrayList bookList; + + public ArrayList getBookList() + { + return bookList; + } + + public void setBookList(ArrayList bookList) + { + this.bookList = bookList; + } +} diff --git a/app/src/main/java/org/cnx/android/beans/Content.java b/app/src/main/java/org/cnx/android/beans/Content.java index 4ccbb27..2efde36 100755 --- a/app/src/main/java/org/cnx/android/beans/Content.java +++ b/app/src/main/java/org/cnx/android/beans/Content.java @@ -7,44 +7,37 @@ package org.cnx.android.beans; import java.io.Serializable; -import java.net.URL; - -import android.graphics.drawable.Drawable; /** Class for holding Content details. Used for Lenses, collections and modules. */ public class Content implements Serializable, Comparable { - /** id for serialization */ - public static final long serialVersionUID = 1L; - + /** URL to retrieve content */ - public URL url; + private String url; /** Title of content */ - public String title; + private String title; /** icon of content. Only used for Lenses */ - public String icon; - + private String icon; private String bookTitle; - - private String bookURL; - /** * String to hold lens description and keywords */ - private String contentString = ""; + private String contentString; /** * database id */ private int id; - - private Drawable iconImage; - - private int iconDrawable = -1; - /** Constructor */ - public Content() + private String bookUrl; + + public String getBookUrl() { + return bookUrl; + } + public void setBookUrl(String bookUrl) + { + this.bookUrl = bookUrl; } public String getBookTitle() @@ -57,36 +50,6 @@ public void setBookTitle(String bookTitle) this.bookTitle = bookTitle; } - public String getBookURL() - { - return bookURL; - } - - public void setBookURL(String bookURL) - { - this.bookURL = bookURL; - } - - public int getIconDrawable() - { - return iconDrawable; - } - - public void setIconDrawable(int iconDrawable) - { - this.iconDrawable = iconDrawable; - } - - public Drawable getIconImage() - { - return iconImage; - } - - public void setIconImage(Drawable iconImage) - { - this.iconImage = iconImage; - } - public int getId() { return id; @@ -97,12 +60,12 @@ public void setId(int id) this.id = id; } - public URL getUrl() + public String getUrl() { return url; } - public void setUrl(URL url) + public void setUrl(String url) { this.url = url; } @@ -127,6 +90,17 @@ public void setIcon(String icon) this.icon = icon; } + public void setContentString(String chars) + { + contentString = chars; + + } + + public String getContentString() + { + return contentString; + } + /* (non-Javadoc) * @see java.lang.Comparable#compareTo(java.lang.Object) * Required method for Comparable interface @@ -141,20 +115,8 @@ public int compareTo(Content another) } else { - return url.toString().compareTo(another.url.toString()); + return url.compareTo(another.url); } - - } - public void setContentString(String chars) - { - contentString = chars; - } - - public String getContentString() - { - return contentString; - } - } diff --git a/app/src/main/java/org/cnx/android/fragments/FavsFragment.java b/app/src/main/java/org/cnx/android/fragments/FavsFragment.java index e836160..b06bf2f 100644 --- a/app/src/main/java/org/cnx/android/fragments/FavsFragment.java +++ b/app/src/main/java/org/cnx/android/fragments/FavsFragment.java @@ -7,10 +7,10 @@ package org.cnx.android.fragments; import android.app.Activity; -import android.app.Fragment; import android.database.Cursor; import android.os.Bundle; import android.os.Handler; +import android.support.v4.app.Fragment; import android.support.v7.widget.DefaultItemAnimator; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; @@ -73,14 +73,14 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle sa public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); - recyclerView = (RecyclerView)getView().findViewById(R.id.recycler_view); + recyclerView = (RecyclerView)getView().findViewById(R.id.book_list); recyclerView.setLayoutManager(new LinearLayoutManager(activity)); recyclerView.setItemAnimator(new DefaultItemAnimator()); + recyclerView.setNestedScrollingEnabled(false); //get already retrieved feed and reuse if it is there - //content = (ArrayList)activity.getLastNonConfigurationInstance(); if(content == null) { //no previous data, so database must be read @@ -141,12 +141,12 @@ private void readDB() public void run() { - content = DBUtils.readCursorIntoList(activity.getContentResolver().query(Favs.CONTENT_URI, null, null, null, null)); + content = DBUtils.readCursorIntoList(activity.getContentResolver().query(Favs.CONTENT_URI, null, null, null, null)); - Collections.sort(content); + Collections.sort(content); - fillData(content); - handler.post(finishedLoadingListTask); + fillData(content); + handler.post(finishedLoadingListTask); } }; loadFavsThread.start(); diff --git a/app/src/main/java/org/cnx/android/fragments/FileFragment.java b/app/src/main/java/org/cnx/android/fragments/FileFragment.java index ba10679..c120507 100644 --- a/app/src/main/java/org/cnx/android/fragments/FileFragment.java +++ b/app/src/main/java/org/cnx/android/fragments/FileFragment.java @@ -64,7 +64,7 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle sa public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); - recyclerView = (RecyclerView)getView().findViewById(R.id.recycler_view); + recyclerView = (RecyclerView)getView().findViewById(R.id.book_list); recyclerView.setLayoutManager(new LinearLayoutManager(activity)); recyclerView.setItemAnimator(new DefaultItemAnimator()); diff --git a/app/src/main/java/org/cnx/android/fragments/GridFragment.java b/app/src/main/java/org/cnx/android/fragments/GridFragment.java deleted file mode 100644 index d5be168..0000000 --- a/app/src/main/java/org/cnx/android/fragments/GridFragment.java +++ /dev/null @@ -1,639 +0,0 @@ -/** - * Copyright (c) 2015 Rice University - * - * This software is subject to the provisions of the GNU Lesser General - * Public License Version 2.1 (LGPL). See LICENSE.txt for details. - */ -package org.cnx.android.fragments; - -import android.app.Activity; -import android.app.Fragment; -import android.content.Context; -import android.content.res.Configuration; -import android.os.Bundle; -import android.util.Log; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.AdapterView; -import android.widget.BaseAdapter; -import android.widget.GridView; -import android.widget.ImageView; - -import org.cnx.android.R; -import org.cnx.android.beans.Content; -import org.cnx.android.utils.CNXUtil; - -import java.net.MalformedURLException; -import java.net.URL; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - -/** - * Fragment for displaying grid of Featured books - * @author Ed Woodward - */ -public class GridFragment extends Fragment -{ - /** list of lenses as Content objects */ - ArrayList content; - - OnBookSelectedListener bookListener; - - public interface OnBookSelectedListener - { - void onBookSelected(Content content); - } - - - public GridFragment() - { - } - - @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) - { - Activity activity = getActivity(); - createList(); - View v = inflater.inflate(R.layout.grid_fragment, container, false); - GridView gridView = (GridView) v.findViewById(R.id.gridView); - int orient = getResources().getConfiguration().orientation; - boolean isTablet = CNXUtil.isTabletDevice(activity); - if(orient == Configuration.ORIENTATION_LANDSCAPE && isTablet) - { - if(CNXUtil.isXLarge(activity)) - { - gridView.setNumColumns(5); - } - else - { - gridView.setNumColumns(4); - } - } - else if(orient == Configuration.ORIENTATION_LANDSCAPE) - { - gridView.setNumColumns(3); - } - else if(orient == Configuration.ORIENTATION_PORTRAIT && isTablet) - { - - if(CNXUtil.isXLarge(activity)) - { - gridView.setNumColumns(4); - } - else - { - gridView.setNumColumns(3); - } - } - - gridView.setAdapter(new ImageAdapter(activity)); - gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() - { - @Override - public void onItemClick(AdapterView parent, View v, int position, long id) - { - //Log.d("LandingActivity", "position: " + position); - - Content c = content.get(position); - bookListener.onBookSelected(c); - } - }); - return v; - } - - @Override - public void onAttach(Activity activity) - { - super.onAttach(activity); - try - { - bookListener = (OnBookSelectedListener) activity; - } - catch (ClassCastException e) - { - throw new ClassCastException(activity.toString() + " must implement OnBookSelectedListener"); - } - } - - - /** - * Create objects for featured book list - */ - - private void createList() - { - try - { - Content c = new Content(); - c.setTitle(getString(R.string.physics)); - c.setBookTitle(getString(R.string.physics)); - c.setContentString(getString(R.string.physics_desc)); - c.setUrl(new URL("http://cnx.org/contents/Ax2o07Ul:HR_VN3f7?minimal=true")); - c.setIconDrawable(R.drawable.physics_lg); - c.setIcon("physics"); - c.setBookURL("http://cnx.org/contents/Ax2o07Ul:HR_VN3f7?minimal=true"); - - Content c2 = new Content(); - c2.setTitle(getString(R.string.sociology)); - c2.setBookTitle(getString(R.string.sociology)); - c2.setContentString(getString(R.string.sociology_desc)); - c2.setUrl(new URL("http://cnx.org/contents/AgQDEnLI:TrIRM88K?minimal=true")); - c2.setIconDrawable(R.drawable.sociology_lg); - c2.setIcon("sociology"); - c2.setBookURL("http://cnx.org/contents/AgQDEnLI:TrIRM88K?minimal=true"); - - Content c3 = new Content(); - c3.setTitle(getString(R.string.biology)); - c3.setBookTitle(getString(R.string.biology)); - c3.setContentString(getString(R.string.biology_desc)); - c3.setUrl(new URL("http://cnx.org/contents/GFy_h8cu:rZudN6XP?minimal=true")); - c3.setIconDrawable(R.drawable.biology_lg); - c3.setIcon("biology"); - c3.setBookURL("http://cnx.org/contents/GFy_h8cu:rZudN6XP?minimal=true"); - - Content c4 = new Content(); - c4.setTitle(getString(R.string.concepts_biology)); - c4.setBookTitle(getString(R.string.concepts_biology)); - c4.setContentString(getString(R.string.concepts_biology_desc)); - c4.setUrl(new URL("http://cnx.org/contents/s8Hh0oOc:Pj8cW7X1?minimal=true")); - c4.setIconDrawable(R.drawable.concepts_biology_lg); - c4.setIcon("concepts"); - c4.setBookURL("http://cnx.org/contents/s8Hh0oOc:Pj8cW7X1?minimal=true"); - - Content c5 = new Content(); - c5.setTitle(getString(R.string.anatomy)); - c5.setBookTitle(getString(R.string.anatomy)); - c5.setContentString(getString(R.string.anatomy_desc)); - c5.setUrl(new URL("http://cnx.org/contents/FPtK1zmh:zMTtFGyH?minimal=true")); - c5.setIconDrawable(R.drawable.anatomy_lg); - c5.setIcon("anatomy"); - c5.setBookURL("http://cnx.org/contents/FPtK1zmh:zMTtFGyH?minimal=true"); - - Content c6 = new Content(); - c6.setTitle(getString(R.string.statistics)); - c6.setBookTitle(getString(R.string.statistics)); - c6.setContentString(getString(R.string.statistics_desc)); - c6.setUrl(new URL("http://cnx.org/contents/MBiUQmmY:2T34_25K?minimal=true")); - c6.setIconDrawable(R.drawable.statistics_lg); - c6.setIcon("statistics"); - c6.setBookURL("http://cnx.org/contents/MBiUQmmY:2T34_25K?minimal=true"); - - Content c7 = new Content(); - c7.setTitle(getString(R.string.econ)); - c7.setBookTitle(getString(R.string.econ)); - c7.setContentString(getString(R.string.economics_desc)); - c7.setUrl(new URL("http://cnx.org/contents/aWGdK2jw:JgDXaOLP?minimal=true")); - c7.setIconDrawable(R.drawable.econ_lg); - c7.setIcon("econ"); - c7.setBookURL("http://cnx.org/contents/aWGdK2jw:JgDXaOLP?minimal=true"); - - Content c11 = new Content(); - c11.setTitle(getString(R.string.macro_econ)); - c11.setBookTitle(getString(R.string.macro_econ)); - c11.setContentString(getString(R.string.macro_desc)); - c11.setUrl(new URL("http://cnx.org/contents/QGHIMgmO:JgDXaOLP?minimal=true")); - c11.setIconDrawable(R.drawable.macro_econ_lg); - c11.setIcon("macro"); - c11.setBookURL("http://cnx.org/contents/QGHIMgmO:JgDXaOLP?minimal=true"); - - Content c12 = new Content(); - c12.setTitle(getString(R.string.micro_econ)); - c12.setBookTitle(getString(R.string.micro_econ)); - c12.setContentString(getString(R.string.micro_desc)); - c12.setUrl(new URL("http://cnx.org/contents/6i8iXmBj:JgDXaOLP?minimal=true")); - c12.setIconDrawable(R.drawable.micro_econ_lg); - c12.setIcon("micro"); - c12.setBookURL("http://cnx.org/contents/6i8iXmBj:JgDXaOLP?minimal=true"); - - Content c8 = new Content(); - c8.setTitle(getString(R.string.precalculus)); - c8.setBookTitle(getString(R.string.precalculus)); - c8.setContentString(getString(R.string.precalculus_desc)); - c8.setUrl(new URL("http://cnx.org/contents/_VPq4foj:vEOnJry_?minimal=true")); - c8.setIconDrawable(R.drawable.precalculus_lg); - c8.setIcon("precalculus"); - c8.setBookURL("http://cnx.org/contents/_VPq4foj:vEOnJry_?minimal=true"); - - Content c9 = new Content(); - c9.setTitle(getString(R.string.chemistry)); - c9.setBookTitle(getString(R.string.chemistry)); - c9.setContentString(getString(R.string.chemistry_desc)); - c9.setUrl(new URL("http://cnx.org/contents/havxkyvS:uXg0kUa-?minimal=true")); - c9.setIconDrawable(R.drawable.chemistry_lg); - c9.setIcon("chemistry"); - c9.setBookURL("http://cnx.org/contents/havxkyvS:uXg0kUa-?minimal=true"); - - Content c10 = new Content(); - c10.setTitle(getString(R.string.history)); - c10.setBookTitle(getString(R.string.history)); - c10.setContentString(getString(R.string.history_desc)); - c10.setUrl(new URL("http://cnx.org/contents/p7ovuIkl:gMXC1GEM?minimal=true")); - c10.setIconDrawable(R.drawable.history_lg); - c10.setIcon("history"); - c10.setBookURL("http://cnx.org/contents/p7ovuIkl:gMXC1GEM?minimal=true"); - - Content c13 = new Content(); - c13.setTitle(getString(R.string.psychology)); - c13.setBookTitle(getString(R.string.psychology)); - c13.setContentString(getString(R.string.psychology_desc)); - c13.setUrl(new URL("http://cnx.org/contents/Sr8Ev5Og:6HoLG-TA?minimal=true")); - c13.setIconDrawable(R.drawable.psychology_lg); - c13.setIcon("psychology"); - c13.setBookURL("http://cnx.org/contents/Sr8Ev5Og:6HoLG-TA?minimal=true"); - - Content c14 = new Content(); - c14.setTitle(getString(R.string.bus_fundamentals)); - c14.setBookTitle(getString(R.string.bus_fundamentals)); - c14.setContentString(getString(R.string.bus_fundamentals)); - c14.setUrl(new URL("http://cnx.org/contents/1ttgPM0x:KfFg0EJq?minimal=true")); - c14.setIconDrawable(R.drawable.bus_fundamentals); - c14.setIcon(getString(R.string.bus_fundamentals)); - c14.setBookURL("http://cnx.org/contents/1ttgPM0x:KfFg0EJq?minimal=true"); - - Content c15 = new Content(); - c15.setTitle(getString(R.string.elec_engineering)); - c15.setBookTitle(getString(R.string.elec_engineering)); - c15.setContentString(getString(R.string.elec_engineering)); - c15.setUrl(new URL("http://cnx.org/contents/d442r0wh:g9deOnx5?minimal=true")); - c15.setIconDrawable(R.drawable.elec_engineering); - c15.setIcon(getString(R.string.elec_engineering)); - c15.setBookURL("http://cnx.org/contents/d442r0wh:g9deOnx5?minimal=true"); - - Content c16 = new Content(); - c16.setTitle(getString(R.string.elem_algebra)); - c16.setBookTitle(getString(R.string.elem_algebra)); - c16.setContentString(getString(R.string.elem_algebra)); - c16.setUrl(new URL("http://cnx.org/contents/e9XCtyLF:uUfJZx98?minimal=true")); - c16.setIconDrawable(R.drawable.elem_algebra); - c16.setIcon(getString(R.string.elem_algebra)); - c16.setBookURL("http://cnx.org/contents/e9XCtyLF:uUfJZx98?minimal=true"); - - Content c17 = new Content(); - c17.setTitle(getString(R.string.advanced_algebra)); - c17.setBookTitle(getString(R.string.advanced_algebra)); - c17.setContentString(getString(R.string.advanced_algebra)); - c17.setUrl(new URL("http://cnx.org/contents/MnoU7pX2:FEyXudZI?minimal=true")); - c17.setIconDrawable(R.drawable.advanced_algebra); - c17.setIcon(getString(R.string.advanced_algebra)); - c17.setBookURL("http://cnx.org/contents/MnoU7pX2:FEyXudZI?minimal=true"); - - Content c18 = new Content(); - c18.setTitle(getString(R.string.applied_probability)); - c18.setBookTitle(getString(R.string.applied_probability)); - c18.setContentString(getString(R.string.applied_probability)); - c18.setUrl(new URL("http://cnx.org/contents/HLT_qvJK:wsOQ6HtH?minimal=true")); - c18.setIconDrawable(R.drawable.applied_probability); - c18.setIcon(getString(R.string.applied_probability)); - c18.setBookURL("http://cnx.org/contents/HLT_qvJK:wsOQ6HtH?minimal=true"); - - Content c19 = new Content(); - c19.setTitle(getString(R.string.fast_fourier)); - c19.setBookTitle(getString(R.string.fast_fourier)); - c19.setContentString(getString(R.string.fast_fourier)); - c19.setUrl(new URL("http://cnx.org/contents/gua6b7go:-1XsePkH?minimal=true")); - c19.setIconDrawable(R.drawable.fast_fourier); - c19.setIcon(getString(R.string.fast_fourier)); - c19.setBookURL("http://cnx.org/contents/gua6b7go:-1XsePkH?minimal=true"); - - Content c20 = new Content(); - c20.setTitle(getString(R.string.first_course)); - c20.setBookTitle(getString(R.string.first_course)); - c20.setContentString(getString(R.string.first_course)); - c20.setUrl(new URL("http://cnx.org/contents/fpkWedRh:tQa_RWkY?minimal=true")); - c20.setIconDrawable(R.drawable.first_course); - c20.setIcon(getString(R.string.first_course)); - c20.setBookURL("http://cnx.org/contents/fpkWedRh:tQa_RWkY?minimal=true"); - - Content c21 = new Content(); - c21.setTitle(getString(R.string.flowering_light)); - c21.setBookTitle(getString(R.string.flowering_light)); - c21.setContentString(getString(R.string.flowering_light)); - c21.setUrl(new URL("http://cnx.org/contents/OPolDtlN:KvFTO2EG?minimal=true")); - c21.setIconDrawable(R.drawable.flowering_light); - c21.setIcon(getString(R.string.flowering_light)); - c21.setBookURL("http://cnx.org/contents/OPolDtlN:KvFTO2EG?minimal=true"); - - // Content c22 = new Content(); - // c22.setTitle(getString(R.string.hearing_harmony)); - // c22.setContentString(getString(R.string.hearing_harmony)); - // c22.setUrl(new URL(fakeURL)); - // c22.setIconDrawable(R.drawable.hearing_harmony); - - Content c23 = new Content(); - c23.setTitle(getString(R.string.houston_reflections)); - c23.setBookTitle(getString(R.string.houston_reflections)); - c23.setContentString(getString(R.string.houston_reflections)); - c23.setUrl(new URL("http://cnx.org/contents/eFQIsJEO:AIRHelyE?minimal=true")); - c23.setIconDrawable(R.drawable.houston_reflections); - c23.setIcon(getString(R.string.houston_reflections)); - c23.setBookURL("http://cnx.org/contents/eFQIsJEO:AIRHelyE?minimal=true"); - - Content c24 = new Content(); - c24.setTitle(getString(R.string.memorable_cases)); - c24.setBookTitle(getString(R.string.memorable_cases)); - c24.setContentString(getString(R.string.memorable_cases)); - c24.setUrl(new URL("http://cnx.org/contents/57cfLKUe:SwTmBcjN?minimal=true")); - c24.setIconDrawable(R.drawable.memorable_cases); - c24.setIcon(getString(R.string.memorable_cases)); - c24.setBookURL("http://cnx.org/contents/57cfLKUe:SwTmBcjN?minimal=true"); - - Content c25 = new Content(); - c25.setTitle(getString(R.string.music_theory)); - c25.setBookTitle(getString(R.string.music_theory)); - c25.setContentString(getString(R.string.music_theory)); - c25.setUrl(new URL("http://cnx.org/contents/KtdLe6cv:_GmJ4ENa?minimal=true")); - c25.setIconDrawable(R.drawable.music_theory); - c25.setIcon(getString(R.string.music_theory)); - c25.setBookURL("http://cnx.org/contents/KtdLe6cv:_GmJ4ENa?minimal=true"); - - Content c26 = new Content(); - c26.setTitle(getString(R.string.programming_fundamentals)); - c26.setBookTitle(getString(R.string.programming_fundamentals)); - c26.setContentString(getString(R.string.programming_fundamentals)); - c26.setUrl(new URL("http://cnx.org/contents/MDgA8wfz:YzfkjC2r?minimal=true")); - c26.setIconDrawable(R.drawable.programming_fundamentals); - c26.setIcon(getString(R.string.programming_fundamentals)); - c26.setBookURL("http://cnx.org/contents/MDgA8wfz:YzfkjC2r?minimal=true"); - - Content c27 = new Content(); - c27.setTitle(getString(R.string.algebra)); - c27.setBookTitle(getString(R.string.algebra)); - c27.setContentString(getString(R.string.algebra_desc)); - c27.setUrl(new URL("http://cnx.org/contents/mwjClAV_:nU8Qkzwo?minimal=true")); - c27.setIconDrawable(R.drawable.algebra_lg); - c27.setIcon("algebra"); - c27.setBookURL("http://cnx.org/contents/mwjClAV_:nU8Qkzwo?minimal=true"); - - Content c28 = new Content(); - c28.setTitle(getString(R.string.trig)); - c28.setBookTitle(getString(R.string.trig)); - c28.setContentString(getString(R.string.trig_desc)); - c28.setUrl(new URL("http://cnx.org/contents/E6wQevFf@:nU8Qkzwo?minimal=true")); - c28.setIconDrawable(R.drawable.trig_lg); - c28.setIcon("trig"); - c28.setBookURL("http://cnx.org/contents/E6wQevFf@:nU8Qkzwo?minimal=true"); - - Content c29 = new Content(); - c29.setTitle(getString(R.string.ap_physics)); - c29.setBookTitle(getString(R.string.ap_physics)); - c29.setContentString(getString(R.string.ap_physics_desc)); - c29.setUrl(new URL("http://cnx.org/contents/jQSmhtXo:6pB5TgBD?minimal=true")); - c29.setIconDrawable(R.drawable.ap_physics_lg); - c29.setIcon("ap-physics"); - c29.setBookURL("http://cnx.org/contents/jQSmhtXo:6pB5TgBD?minimal=true"); - - Content c30 = new Content(); - c30.setTitle(getString(R.string.ap_macro)); - c30.setBookTitle(getString(R.string.ap_macro)); - c30.setContentString(getString(R.string.coming_soon)); - c30.setUrl(new URL("http://cnx.org/contents/MwdgVOwd:CSCWn8lc?minimal=true")); - c30.setIconDrawable(R.drawable.ap_macro); - c30.setIcon("ap-macro"); - c30.setBookURL("http://cnx.org/contents/MwdgVOwd:CSCWn8lc?minimal=true"); - - Content c31 = new Content(); - c31.setTitle(getString(R.string.ap_micro)); - c31.setBookTitle(getString(R.string.ap_micro)); - c31.setContentString(getString(R.string.coming_soon)); - c31.setUrl(new URL("http://cnx.org/contents/yjROLWcx:CSCWn8lc?minimal=true")); - c31.setIconDrawable(R.drawable.ap_micro); - c31.setIcon("ap-micro"); - c31.setBookURL("http://cnx.org/contents/yjROLWcx:CSCWn8lc?minimal=true"); - - Content c32 = new Content(); - c32.setTitle(getString(R.string.american_gov)); - c32.setBookTitle(getString(R.string.american_gov)); - c32.setContentString(getString(R.string.coming_soon)); - c32.setUrl(new URL("http://cnx.org/contents/W8wOWXNF:SjdU64Og?minimal=true")); - c32.setIconDrawable(R.drawable.american_gov); - c32.setIcon(getString(R.string.american_gov_icon)); - c32.setBookURL("http://cnx.org/contents/W8wOWXNF:SjdU64Og?minimal=true"); - - Content c33 = new Content(); - c33.setTitle(getString(R.string.calculus1)); - c33.setBookTitle(getString(R.string.calculus1)); - c33.setContentString(getString(R.string.coming_soon)); - c33.setUrl(new URL("http://cnx.org/contents/i4nRcikn:H2TLb2-S?minimal=true")); - c33.setIconDrawable(R.drawable.calculus1); - c33.setIcon(getString(R.string.calculus1_icon)); - c33.setBookURL("http://cnx.org/contents/i4nRcikn:H2TLb2-S?minimal=true"); - - Content c34 = new Content(); - c34.setTitle(getString(R.string.calculus2)); - c34.setBookTitle(getString(R.string.calculus2)); - c34.setContentString(getString(R.string.coming_soon)); - c34.setUrl(new URL("http://cnx.org/contents/HTmjSAcf:rrzms6rP?minimal=true")); - c34.setIconDrawable(R.drawable.calculus2); - c34.setIcon(getString(R.string.calculus2_icon)); - c34.setBookURL("http://cnx.org/contents/HTmjSAcf:rrzms6rP?minimal=true"); - - Content c35 = new Content(); - c35.setTitle(getString(R.string.calculus3)); - c35.setBookTitle(getString(R.string.calculus3)); - c35.setContentString(getString(R.string.coming_soon)); - c35.setUrl(new URL("http://cnx.org/contents/oxzXkyFi:72YaCFgv?minimal=true")); - c35.setIconDrawable(R.drawable.calculus3); - c35.setIcon(getString(R.string.calculus3_icon)); - c35.setBookURL("http://cnx.org/contents/oxzXkyFi:72YaCFgv?minimal=true"); - - Content c36 = new Content(); - c36.setTitle(getString(R.string.chemistry_atoms)); - c36.setBookTitle(getString(R.string.chemistry_atoms)); - c36.setContentString(getString(R.string.coming_soon)); - c36.setUrl(new URL("http://cnx.org/contents/RTmuIxzM:uXg0kUa-?minimal=true")); - c36.setIconDrawable(R.drawable.chemistry_atoms); - c36.setIcon(getString(R.string.chemistry_atoms_icon)); - c36.setBookURL("http://cnx.org/contents/RTmuIxzM:uXg0kUa-?minimal=true"); - - Content c37 = new Content(); - c37.setTitle(getString(R.string.prealgebra)); - c37.setBookTitle(getString(R.string.prealgebra)); - c37.setContentString(getString(R.string.coming_soon)); - c37.setUrl(new URL("http://cnx.org/contents/yqV9q0HH:plLt9FYr?minimal=true")); - c37.setIconDrawable(R.drawable.prealgebra); - c37.setIcon(getString(R.string.prealgebra_icon)); - c37.setBookURL("http://cnx.org/contents/yqV9q0HH:plLt9FYr?minimal=true"); - - if(content == null) - { - content = new ArrayList<>(); - } - - content.add(c); - content.add(c2); - content.add(c3); - content.add(c4); - content.add(c5); - content.add(c6); - content.add(c7); - content.add(c11); - content.add(c12); - content.add(c8); - content.add(c9); - content.add(c10); - content.add(c13); - content.add(c14); - content.add(c15); - content.add(c16); - content.add(c17); - content.add(c18); - content.add(c19); - content.add(c20); - content.add(c21); - //content.add(c22); - content.add(c23); - content.add(c24); - content.add(c25); - content.add(c26); - content.add(c27); - content.add(c28); - content.add(c29); - content.add(c30); - content.add(c31); - content.add(c32); - content.add(c33); - content.add(c34); - content.add(c35); - content.add(c36); - content.add(c37); - Collections.sort(content); - - } - catch (MalformedURLException e) - { - Log.d("Landing.createList()", "Error: " + e.toString(), e); - } - - } - - class ImageAdapter extends BaseAdapter - { - private Context context; - - List bookcovers = new ArrayList<>(); - - public ImageAdapter(Context c) - { - context = c; - - bookcovers.add(new Bookcover(context.getString(R.string.physics),R.drawable.physics_lg)); - bookcovers.add(new Bookcover(context.getString(R.string.sociology),R.drawable.sociology_lg)); - bookcovers.add(new Bookcover(context.getString(R.string.biology), R.drawable.biology_lg)); - bookcovers.add(new Bookcover(context.getString(R.string.concepts_biology),R.drawable.concepts_biology_lg)); - bookcovers.add(new Bookcover(context.getString(R.string.anatomy),R.drawable.anatomy_lg)); - bookcovers.add(new Bookcover(context.getString(R.string.statistics),R.drawable.statistics_lg)); - bookcovers.add(new Bookcover(context.getString(R.string.econ),R.drawable.econ_lg)); - bookcovers.add(new Bookcover(context.getString(R.string.macro_econ),R.drawable.macro_econ_lg)); - bookcovers.add(new Bookcover(context.getString(R.string.micro_econ),R.drawable.micro_econ_lg)); - bookcovers.add(new Bookcover(context.getString(R.string.precalculus),R.drawable.precalculus_lg)); - bookcovers.add(new Bookcover(context.getString(R.string.psychology),R.drawable.psychology_lg)); - bookcovers.add(new Bookcover(context.getString(R.string.chemistry),R.drawable.chemistry_lg)); - bookcovers.add(new Bookcover(context.getString(R.string.bus_fundamentals),R.drawable.bus_fundamentals)); - bookcovers.add(new Bookcover(context.getString(R.string.history),R.drawable.history_lg)); - bookcovers.add(new Bookcover(context.getString(R.string.elec_engineering),R.drawable.elec_engineering)); - bookcovers.add(new Bookcover(context.getString(R.string.elem_algebra),R.drawable.elem_algebra)); - bookcovers.add(new Bookcover(context.getString(R.string.advanced_algebra),R.drawable.advanced_algebra)); - bookcovers.add(new Bookcover(context.getString(R.string.applied_probability),R.drawable.applied_probability)); - bookcovers.add(new Bookcover(context.getString(R.string.fast_fourier),R.drawable.fast_fourier)); - bookcovers.add(new Bookcover(context.getString(R.string.first_course),R.drawable.first_course)); - bookcovers.add(new Bookcover(context.getString(R.string.flowering_light),R.drawable.flowering_light)); - //bookcovers.add(new Bookcover("Hearing Harmony",R.drawable.hearing_harmony)); - bookcovers.add(new Bookcover(context.getString(R.string.houston_reflections),R.drawable.houston_reflections)); - bookcovers.add(new Bookcover(context.getString(R.string.memorable_cases),R.drawable.memorable_cases)); - bookcovers.add(new Bookcover(context.getString(R.string.music_theory),R.drawable.music_theory)); - bookcovers.add(new Bookcover(context.getString(R.string.programming_fundamentals),R.drawable.programming_fundamentals)); - bookcovers.add(new Bookcover(context.getString(R.string.algebra),R.drawable.algebra_lg)); - bookcovers.add(new Bookcover(context.getString(R.string.trig),R.drawable.trig_lg)); - bookcovers.add(new Bookcover(context.getString(R.string.ap_physics),R.drawable.ap_physics_lg)); - bookcovers.add(new Bookcover(context.getString(R.string.ap_macro), R.drawable.ap_macro)); - bookcovers.add(new Bookcover(context.getString(R.string.ap_micro), R.drawable.ap_micro)); - bookcovers.add(new Bookcover(getString(R.string.american_gov), R.drawable.american_gov)); - bookcovers.add(new Bookcover(getString(R.string.calculus1), R.drawable.calculus1)); - bookcovers.add(new Bookcover(getString(R.string.calculus2), R.drawable.calculus2)); - bookcovers.add(new Bookcover(getString(R.string.calculus3), R.drawable.calculus3)); - bookcovers.add(new Bookcover(getString(R.string.chemistry_atoms), R.drawable.chemistry_atoms)); - bookcovers.add(new Bookcover(getString(R.string.prealgebra), R.drawable.prealgebra)); - Collections.sort(bookcovers); - - - - - } - - /* (non-Javadoc) - * @see android.widget.Adapter#getCount() - */ - @Override - public int getCount() - { - return bookcovers.size(); - } - - /* (non-Javadoc) - * @see android.widget.Adapter#getItem(int) - */ - @Override - public Object getItem(int position) - { - return bookcovers.get(position); - } - - /* (non-Javadoc) - * @see android.widget.Adapter#getItemId(int) - */ - @Override - public long getItemId(int position) - { - return 0; - } - - /* (non-Javadoc) - * @see android.widget.Adapter#getView(int, android.view.View, android.view.ViewGroup) - */ - @Override - public View getView(int position, View convertView, ViewGroup parent) - { - - View v = convertView; - ImageView picture; - - if(v == null) { - - v = LayoutInflater.from(context).inflate(R.layout.gridcell, parent, false); - v.setTag(R.id.grid_item_image, v.findViewById(R.id.grid_item_image)); - } - - picture = (ImageView)v.getTag(R.id.grid_item_image); - - Bookcover item = (Bookcover)getItem(position); - - picture.setImageResource(item.drawableId); - - return v; - } - - } - - private class Bookcover implements Comparable - { - - final String name; - final int drawableId; - - Bookcover(String name, int drawableId) - { - this.name = name; - this.drawableId = drawableId; - } - - public int compareTo(Bookcover another) - { - return name.toUpperCase().trim().compareTo(another.name.toUpperCase().trim()); - - } - - - } -} diff --git a/app/src/main/java/org/cnx/android/fragments/LandingListFragment.java b/app/src/main/java/org/cnx/android/fragments/LandingListFragment.java new file mode 100644 index 0000000..4148f34 --- /dev/null +++ b/app/src/main/java/org/cnx/android/fragments/LandingListFragment.java @@ -0,0 +1,103 @@ +/** + * Copyright (c) 2016 Rice University + * + * This software is subject to the provisions of the GNU Lesser General + * Public License Version 2.1 (LGPL). See LICENSE.txt for details. + */ +package org.cnx.android.fragments; + +import android.app.Activity; +import android.content.res.AssetManager; +import android.os.Bundle; +import android.support.v4.app.Fragment; +import android.support.v7.widget.DefaultItemAnimator; +import android.support.v7.widget.LinearLayoutManager; +import android.support.v7.widget.RecyclerView; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import com.google.gson.Gson; + +import org.cnx.android.R; +import org.cnx.android.adapters.LandingListRecyclerViewAdapter; +import org.cnx.android.beans.BookList; +import org.cnx.android.beans.Content; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.util.ArrayList; +import java.util.Collections; + +/** + * Fragment for Display of list of books + * @author Ed Woodward + */ +public class LandingListFragment extends Fragment +{ + RecyclerView recyclerView; + + Activity activity; + + /** + * Mandatory empty constructor for the fragment manager to instantiate the + * fragment (e.g. upon screen orientation changes). + */ + public LandingListFragment() + { + } + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) + { + activity = getActivity(); + + return inflater.inflate(R.layout.fragment_book_list, container, false); + } + + @Override + public void onViewCreated(View view, Bundle savedInstanceState) + { + super.onViewCreated(view, savedInstanceState); + super.onActivityCreated(savedInstanceState); + recyclerView = (RecyclerView) getView().findViewById(R.id.book_list); + + recyclerView.setLayoutManager(new LinearLayoutManager(activity)); + recyclerView.setItemAnimator(new DefaultItemAnimator()); + recyclerView.setNestedScrollingEnabled(false); + LandingListRecyclerViewAdapter adapter = new LandingListRecyclerViewAdapter(getContent(), R.layout.fragment_book, activity); + recyclerView.setAdapter(adapter); + } + + private ArrayList getContent() + { + BookList bookList = readJson(); + return bookList.getBookList(); + } + + private BookList readJson() + { + AssetManager assets = getActivity().getAssets(); + BookList aboutList = new BookList(); + + Gson gson = new Gson(); + + try + { + InputStream is = assets.open("bookList.json"); + BufferedReader bf = new BufferedReader(new InputStreamReader(is)); + aboutList = gson.fromJson(bf, BookList.class); + } + catch(IOException ioe) + { + Log.d("json", "Some problem: " + ioe.toString()); + } + + Collections.sort(aboutList.getBookList()); + + return aboutList; + } +} diff --git a/app/src/main/java/org/cnx/android/fragments/NoteEditorFragment.java b/app/src/main/java/org/cnx/android/fragments/NoteEditorFragment.java index 6d2c78e..9e6f15e 100644 --- a/app/src/main/java/org/cnx/android/fragments/NoteEditorFragment.java +++ b/app/src/main/java/org/cnx/android/fragments/NoteEditorFragment.java @@ -6,34 +6,36 @@ */ package org.cnx.android.fragments; -/** - * Fragment for note editor - * - */ - -import android.app.Activity; -import android.app.Fragment; +import android.Manifest; import android.content.ContentValues; import android.content.Context; import android.content.Intent; +import android.content.pm.PackageManager; import android.database.Cursor; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.Rect; import android.os.Bundle; import android.os.Environment; +import android.support.design.widget.Snackbar; +import android.support.v4.app.Fragment; +import android.support.v4.content.ContextCompat; +import android.support.v7.app.AppCompatActivity; import android.text.util.Linkify; import android.util.AttributeSet; import android.util.Log; import android.view.LayoutInflater; +import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.EditText; -import android.widget.ImageButton; import android.widget.Toast; import org.cnx.android.R; +import org.cnx.android.activity.LandingActivity; +import org.cnx.android.activity.NoteEditorActivity; import org.cnx.android.beans.Content; +import org.cnx.android.handlers.MenuHandler; import org.cnx.android.providers.Notes; import org.cnx.android.utils.MenuUtil; @@ -49,6 +51,10 @@ public class NoteEditorFragment extends Fragment { // This is our state data that is stored when freezing. private static final String ORIGINAL_CONTENT = "origContent"; + private static final String[] STORAGE_PERMS={ + Manifest.permission.WRITE_EXTERNAL_STORAGE + }; + private int REQUEST = 1337; // The different distinct states the activity can be run in. private static final int STATE_EDIT = 0; @@ -59,7 +65,7 @@ public class NoteEditorFragment extends Fragment private EditText editText; private String originalContent; private Content content; - Activity activity; + AppCompatActivity activity; /** * A custom EditText that draws lines between each line of text that is displayed. @@ -69,7 +75,6 @@ public static class LinedEditText extends EditText private Rect rect; private Paint paint; - // we need this constructor for LayoutInflater public LinedEditText(Context context, AttributeSet attrs) { super(context, attrs); @@ -108,11 +113,18 @@ public static NoteEditorFragment newInstance(Content c) } + @Override + public void onCreate(Bundle savedInstanceState) + { + super.onCreate(savedInstanceState); + setHasOptionsMenu(true); + } + @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - activity = getActivity(); - content = (Content)getArguments().get(activity.getString(R.string.content)); + activity = (AppCompatActivity)getActivity(); + content = (Content)getArguments().get("content"); View v = inflater.inflate(R.layout.note_editor, container, false); state = STATE_EDIT; @@ -124,10 +136,41 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle sa { originalContent = savedInstanceState.getString(ORIGINAL_CONTENT); } - setActionBar(v); return v; } + @Override + public boolean onOptionsItemSelected(MenuItem item) + { + if(item.getItemId() == android.R.id.home) + { + Intent mainIntent = new Intent(getContext(), LandingActivity.class); + mainIntent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); + startActivity(mainIntent); + return true; + } + else if(item.getItemId() == R.id.delete_note) + { + deleteNote(); + getActivity().finish(); + return true; + + } + else if(item.getItemId() == R.id.export_note) + { + exportNote(); + return true; + + } + else + { + + MenuHandler mh = new MenuHandler(); + return mh.handleContextMenu(item, getContext(), content); + } + + } + @Override public void onResume() { @@ -161,7 +204,7 @@ public void onPause() if(editText == null) { - activity.setResult(activity.RESULT_CANCELED); + activity.setResult(NoteEditorActivity.RESULT_CANCELED); return; } @@ -170,7 +213,7 @@ public void onPause() if (activity.isFinishing() && (length == 0) && cursor != null) { - activity.setResult(activity.RESULT_CANCELED); + activity.setResult(NoteEditorActivity.RESULT_CANCELED); } else { @@ -183,7 +226,7 @@ public void onPause() * If the note has text, the title is set and the note placed in the database. * Handles updating or inserting a new note based on the flag set in checkDBForNote() */ - private final void saveNote() + public final void saveNote() { ContentValues values = new ContentValues(); @@ -197,7 +240,7 @@ private final void saveNote() Toast.makeText(activity, getString(R.string.nothing_to_save), Toast.LENGTH_SHORT).show(); return; } - String title = content.getBookTitle();//.substring(0, Math.min(30, length)); + String title = content.getBookTitle(); if (length > 30) { int lastSpace = title.lastIndexOf(' '); @@ -209,14 +252,14 @@ private final void saveNote() values.put(Notes.TITLE, title); values.put(Notes.NOTE, text); - values.put(Notes.URL, content.getBookURL()); + values.put(Notes.URL, content.getBookUrl()); try { if (state == STATE_UPDATE) { //Log.d("NoteEditorActivity", "updating note"); - activity.getContentResolver().update(Notes.CONTENT_URI, values, "notes_url=?", new String[]{content.getBookURL()}); + activity.getContentResolver().update(Notes.CONTENT_URI, values, "notes_url=?", new String[]{content.getBookUrl()}); } else { @@ -234,7 +277,7 @@ private final void saveNote() */ private final void deleteNote() { - activity.getContentResolver().delete(Notes.CONTENT_URI, "notes_url=?", new String[]{content.getBookURL()}); + activity.getContentResolver().delete(Notes.CONTENT_URI, "notes_url=?", new String[]{content.getBookUrl()}); editText.setText(""); activity.finish(); } @@ -247,7 +290,7 @@ private void checkDBForNote() { if(content != null) { - cursor = activity.getContentResolver().query(Notes.CONTENT_URI, null, "notes_url='" + content.getBookURL() + "'", null, null); + cursor = activity.getContentResolver().query(Notes.CONTENT_URI, null, "notes_url='" + content.getBookUrl() + "'", null, null); if(cursor.getCount()>0) { cursor.moveToNext(); @@ -278,100 +321,65 @@ private void checkDBForNote() */ private void exportNote() { - File cnxDir = new File(Environment.getExternalStorageDirectory(), getString(R.string.folder_name) + "/"); - if(!cnxDir.exists()) - { - cnxDir.mkdir(); - } - String fileName = MenuUtil.getTitle(content.getBookTitle()) + ".txt"; - File file = new File(cnxDir, fileName); - String text = editText.getText().toString(); - PrintWriter pw = null; - - try - { - pw = new PrintWriter(file); - pw.write(text); - pw.flush(); - //pw.close(); - Toast.makeText(activity, fileName + " saved to OpenStaxCNX folder.", Toast.LENGTH_LONG).show(); - } - catch (FileNotFoundException e) - { - Log.d("NoteEditorActivity", "Error exporting note: " + e.toString(), e); - } - finally + if(ContextCompat.checkSelfPermission(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE )== PackageManager.PERMISSION_GRANTED ) { - if(pw != null) + File cnxDir = new File(Environment.getExternalStorageDirectory(), "OpenStax/"); + if(!cnxDir.exists()) { - pw.close(); + cnxDir.mkdir(); } - } - } + String fileName = MenuUtil.getTitle(content.getBookTitle()) + ".txt"; + File file = new File(cnxDir, fileName); + String text = editText.getText().toString(); + PrintWriter pw = null; - /** - * Sets up the buttons for the Action Bar - */ - private void setActionBar(View v) - { - ImageButton saveButton = (ImageButton)v.findViewById(R.id.saveButton); - saveButton.setOnClickListener(new View.OnClickListener() - { - - public void onClick(View v) + try { - saveNote(); - activity.finish(); + pw = new PrintWriter(file); + pw.write(text); + pw.flush(); + Toast.makeText(activity, fileName + " saved to OpenStax folder.", Toast.LENGTH_LONG).show(); } - }); - - ImageButton exportButton = (ImageButton)v.findViewById(R.id.exportButton); - exportButton.setOnClickListener(new View.OnClickListener() - { - - public void onClick(View v) + catch(FileNotFoundException e) { - exportNote(); - + Log.d("NoteEditorActivity", "Error exporting note: " + e.toString(), e); } - }); - - ImageButton deleteButton = (ImageButton)v.findViewById(R.id.deleteButton); - deleteButton.setOnClickListener(new View.OnClickListener() - { - - public void onClick(View v) + finally { - deleteNote(); - activity.finish(); - + if(pw != null) + { + pw.close(); + } } - }); - - ImageButton shareButton = (ImageButton)v.findViewById(R.id.shareButton); - shareButton.setOnClickListener(new View.OnClickListener() + } + else if (shouldShowRequestPermissionRationale(Manifest.permission.WRITE_EXTERNAL_STORAGE)) + { + Snackbar.make(getView(), getString(R.string.external_storage_request),Snackbar.LENGTH_INDEFINITE) + .setAction(getString(R.string.ok_button), new View.OnClickListener() + { + @Override + public void onClick(View view) + { + requestPermissions(STORAGE_PERMS,REQUEST); + } + }) + .show(); + } + else { + requestPermissions(STORAGE_PERMS, REQUEST); - public void onClick(View v) - { - Intent intent = new Intent(Intent.ACTION_SEND); - intent.setType(getString(R.string.mimetype_text)); + } + } - if(content != null) - { - intent.putExtra(Intent.EXTRA_SUBJECT, "Note for " + content.getBookTitle()); - String text = editText.getText().toString(); - intent.putExtra(Intent.EXTRA_TEXT, text + "\n\n" + getString(R.string.shared_via)); + @Override + public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) + { - Intent chooser = Intent.createChooser(intent, getString(R.string.tell_friend) + " " + content.getBookTitle()); - startActivity(chooser); - } - else - { - Toast.makeText(activity, getString(R.string.no_data_msg), Toast.LENGTH_LONG).show(); - } + if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) + { - } - }); + exportNote(); + } } } diff --git a/app/src/main/java/org/cnx/android/handlers/MenuHandler.java b/app/src/main/java/org/cnx/android/handlers/MenuHandler.java index 502b864..3cf26aa 100755 --- a/app/src/main/java/org/cnx/android/handlers/MenuHandler.java +++ b/app/src/main/java/org/cnx/android/handlers/MenuHandler.java @@ -70,6 +70,7 @@ public boolean handleContextMenu(int item, Context context, Content currentConte } cv.put(Favs.URL, url.replaceAll("@\\d+(\\.\\d+)?","")+ "?bookmark=1"); cv.put(Favs.ICON, currentContent.getIcon()); + cv.put(Favs.OTHER, currentContent.getBookTitle()); context.getContentResolver().insert(Favs.CONTENT_URI, cv); Toast.makeText(context, "Bookmark added for " + currentContent.getTitle(), Toast.LENGTH_SHORT).show(); return true; @@ -95,7 +96,6 @@ public boolean handleContextMenu(int item, Context context, Content currentConte { return false; } - //ContentCache.setObject("content", currentContent); Intent noteIntent = new Intent(context, NoteEditorActivity.class); noteIntent.putExtra(context.getString(R.string.content), currentContent); context.startActivity(noteIntent); @@ -196,8 +196,8 @@ public void handleSearch(Context context) { Intent iweb = new Intent(context, WebViewActivity.class); Content currentContent = new Content(); - currentContent.setBookURL("https://cnx.org/search?minimal=true"); - currentContent.setUrl(new URL("https://cnx.org/search?minimal=true")); + currentContent.setBookUrl("https://cnx.org/search?minimal=true"); + currentContent.setUrl("https://cnx.org/search?minimal=true"); currentContent.setBookTitle("Search"); currentContent.setIcon(""); iweb.putExtra(context.getString(R.string.webcontent), currentContent); diff --git a/app/src/main/java/org/cnx/android/logic/WebviewLogic.java b/app/src/main/java/org/cnx/android/logic/WebviewLogic.java index 3998464..672ca89 100644 --- a/app/src/main/java/org/cnx/android/logic/WebviewLogic.java +++ b/app/src/main/java/org/cnx/android/logic/WebviewLogic.java @@ -1,11 +1,15 @@ +/** + * Copyright (c) 2016 Rice University + * + * This software is subject to the provisions of the GNU Lesser General + * Public License Version 2.1 (LGPL). See LICENSE.txt for details. + */ package org.cnx.android.logic; -import android.util.Log; +//import android.util.Log; import org.cnx.android.beans.Content; -import java.net.MalformedURLException; -import java.net.URL; /** * Created by ew2 on 6/15/16. @@ -82,19 +86,9 @@ public String getBookTitle(String title) public void setContentURLs(String currentURL, Content content) { - try - { - //String currentURL = webView.getUrl(); - content.setUrl(new URL(currentURL)); - WebviewLogic wl = new WebviewLogic(); - String bookURL = wl.getBookURL(currentURL); - content.setBookURL(bookURL); - - } - catch (MalformedURLException e) - { - Log.d("WebVA.setContentURLs()", "Error: " + e.toString(),e); - } - + content.setUrl(currentURL); + WebviewLogic wl = new WebviewLogic(); + String bookURL = wl.getBookURL(currentURL); + content.setBookUrl(bookURL); } } diff --git a/app/src/main/java/org/cnx/android/providers/utils/DBUtils.java b/app/src/main/java/org/cnx/android/providers/utils/DBUtils.java index d7f0388..1cae8ab 100755 --- a/app/src/main/java/org/cnx/android/providers/utils/DBUtils.java +++ b/app/src/main/java/org/cnx/android/providers/utils/DBUtils.java @@ -49,20 +49,20 @@ public static ArrayList readCursorIntoList(Cursor c) c.moveToNext(); do { - try - { +// try +// { Content con = new Content(); con.setTitle(c.getString(titleColumn)); - con.setUrl(new URL(c.getString(urlColumn))); + con.setUrl(c.getString(urlColumn)); con.setId(c.getInt(idColumn)); con.setIcon(c.getString(iconColumn)); con.setContentString(c.getString(otherColumn)); contentList.add(con); - } - catch (MalformedURLException e) - { - e.printStackTrace(); - } +// } +// catch (MalformedURLException e) +// { +// e.printStackTrace(); +// } }while(c.moveToNext()); } c.close(); diff --git a/app/src/main/java/org/cnx/android/utils/CNXUtil.java b/app/src/main/java/org/cnx/android/utils/CNXUtil.java index fc68208..b3a458e 100755 --- a/app/src/main/java/org/cnx/android/utils/CNXUtil.java +++ b/app/src/main/java/org/cnx/android/utils/CNXUtil.java @@ -17,6 +17,7 @@ import android.widget.Toast; import org.cnx.android.R; +import org.cnx.android.beans.Content; import java.util.ArrayList; import java.util.HashMap; @@ -99,15 +100,15 @@ public static List> createNavItems(Context c) String[] from = { "nav_icon","nav_item" }; int[] to = { R.id.nav_icon , R.id.nav_item}; HashMap hm1 = new HashMap<>(); - hm1.put(c.getString(R.string.nav_icon), Integer.toString(R.drawable.ic_book_black_48dp)); + hm1.put(c.getString(R.string.nav_icon), Integer.toString(R.drawable.ic_book_white_24dp)); hm1.put(c.getString(R.string.nav_item),items[0]); HashMap hm3 = new HashMap<>(); - hm3.put(c.getString(R.string.nav_icon),Integer.toString(R.drawable.ic_star_black_24dp)); + hm3.put(c.getString(R.string.nav_icon),Integer.toString(R.drawable.ic_star_white_24dp)); hm3.put(c.getString(R.string.nav_item),items[1]); HashMap hm4 = new HashMap<>(); - hm4.put(c.getString(R.string.nav_icon),Integer.toString(R.drawable.ic_search_black_24dp)); + hm4.put(c.getString(R.string.nav_icon),Integer.toString(R.drawable.ic_search_white_24dp)); hm4.put(c.getString(R.string.nav_item),items[2]); navTitles = new ArrayList<>(); @@ -119,4 +120,190 @@ public static List> createNavItems(Context c) return navTitles; } + public static int getCoverId(Content content, Context context) + { + int coverId = 0; + String icon = content.getIcon(); + String contentString = content.getContentString(); + + if(icon == null) + { + icon = ""; + } + + if(contentString == null) + { + contentString = ""; + } + + + if(icon.equals(context.getString(R.string.physics_icon)) || contentString.equals(context.getString(R.string.physics))) + { + coverId = R.drawable.physics_lg; + } + else if(icon.equals(context.getString(R.string.sociology_icon)) || contentString.equals(context.getString(R.string.sociology))) + { + coverId = R.drawable.sociology_lg; + } + else if(icon.equals(context.getString(R.string.biology_icon)) || contentString.equals(context.getString(R.string.biology))) + { + coverId = R.drawable.biology_lg; + } + else if(icon.equals(context.getString(R.string.concepts_icon)) || contentString.equals(context.getString(R.string.concepts_biology))) + { + coverId = R.drawable.concepts_biology_lg; + } + else if(icon.equals(context.getString(R.string.anatomy_icon)) || contentString.equals(context.getString(R.string.anatomy))) + { + coverId = R.drawable.anatomy_lg; + } + else if(icon.equals(context.getString(R.string.statistics_icon)) || contentString.equals(context.getString(R.string.statistics))) + { + coverId = R.drawable.statistics_lg; + } + else if(icon.equals(context.getString(R.string.econ_icon)) || contentString.equals(context.getString(R.string.econ))) + { + coverId = R.drawable.econ_lg; + } + else if(icon.equals(context.getString(R.string.macro_icon)) || contentString.equals(context.getString(R.string.macro_econ))) + { + coverId = R.drawable.macro_econ_lg; + } + else if(icon.equals(context.getString(R.string.micro_icon)) || contentString.equals(context.getString(R.string.micro_econ))) + { + coverId = R.drawable.micro_econ_lg; + } + else if(icon.equals(context.getString(R.string.precalculus_icon)) || contentString.equals(context.getString(R.string.precalculus))) + { + coverId = R.drawable.precalculus_lg; + } + else if(icon.equals(context.getString(R.string.psychology_icon)) || contentString.equals(context.getString(R.string.psychology))) + { + coverId = R.drawable.psychology_lg; + } + else if(icon.equals(context.getString(R.string.history_icon)) || contentString.equals(context.getString(R.string.history))) + { + coverId = R.drawable.history_lg; + } + else if(icon.equals(context.getString(R.string.chemistry_icon)) || contentString.equals(context.getString(R.string.chemistry))) + { + coverId = R.drawable.chemistry_lg; + } + else if(icon.equals(context.getString(R.string.algebra_icon)) || contentString.equals(context.getString(R.string.algebra))) + { + coverId = R.drawable.algebra_lg; + } + else if(icon.equals(context.getString(R.string.trig_icon)) || contentString.equals(context.getString(R.string.trig))) + { + coverId = R.drawable.trig_lg; + } + else if(icon.equals(context.getString(R.string.ap_physics_icon)) || contentString.equals(context.getString(R.string.ap_physics))) + { + coverId = R.drawable.ap_physics_lg; + } + else if(icon.equals(context.getString(R.string.ap_macro_icon)) || contentString.equals(context.getString(R.string.ap_macro))) + { + coverId = R.drawable.ap_macro; + } + else if(icon.equals(context.getString(R.string.ap_micro_icon)) || contentString.equals(context.getString(R.string.ap_micro))) + { + coverId = R.drawable.ap_micro; + } + else if(icon.equals(context.getString(R.string.american_gov_icon)) || contentString.equals(context.getString(R.string.american_gov))) + { + coverId = R.drawable.american_gov; + } + else if(icon.equals(context.getString(R.string.calculus1_icon)) || contentString.equals(context.getString(R.string.calculus1))) + { + coverId = R.drawable.calculus1; + } + else if(icon.equals(context.getString(R.string.calculus2_icon)) || contentString.equals(context.getString(R.string.calculus2))) + { + coverId = R.drawable.calculus2; + } + else if(icon.equals(context.getString(R.string.calculus3_icon)) || contentString.equals(context.getString(R.string.calculus3))) + { + coverId = R.drawable.calculus3; + } + else if(icon.equals(context.getString(R.string.chemistry_atoms_icon)) || contentString.equals(context.getString(R.string.chemistry_atoms))) + { + coverId = R.drawable.chemistry_atoms; + } + else if(icon.equals(context.getString(R.string.prealgebra_icon)) || contentString.equals(context.getString(R.string.prealgebra))) + { + coverId = R.drawable.prealgebra; + } + else if(icon.equals(context.getString(R.string.bus_fundamentals)) || contentString.equals(context.getString(R.string.bus_fundamentals))) + { + coverId = R.drawable.bus_fundamentals; + } + else if(icon.equals(context.getString(R.string.elec_engineering)) || contentString.equals(context.getString(R.string.elec_engineering))) + { + coverId = R.drawable.elec_engineering; + } + else if(icon.equals(context.getString(R.string.elem_algebra)) || contentString.equals(context.getString(R.string.elem_algebra))) + { + coverId = R.drawable.elem_algebra; + } + else if(icon.equals(context.getString(R.string.advanced_algebra)) || contentString.equals(context.getString(R.string.advanced_algebra))) + { + coverId = R.drawable.advanced_algebra; + } + else if(icon.equals(context.getString(R.string.applied_probability)) || contentString.equals(context.getString(R.string.applied_probability))) + { + coverId = R.drawable.applied_probability; + } + else if(icon.equals(context.getString(R.string.fast_fourier)) || contentString.equals(context.getString(R.string.fast_fourier))) + { + coverId = R.drawable.fast_fourier; + } + else if(icon.equals(context.getString(R.string.first_course)) || contentString.equals(context.getString(R.string.first_course))) + { + coverId = R.drawable.first_course; + } + else if(icon.equals(context.getString(R.string.flowering_light)) || contentString.equals(context.getString(R.string.flowering_light))) + { + coverId = R.drawable.flowering_light; + } + else if(icon.equals(context.getString(R.string.houston_reflections)) || contentString.equals(context.getString(R.string.houston_reflections))) + { + coverId = R.drawable.houston_reflections; + } + else if(icon.equals(context.getString(R.string.memorable_cases)) || contentString.equals(context.getString(R.string.memorable_cases))) + { + coverId = R.drawable.memorable_cases; + } + else if(icon.equals(context.getString(R.string.music_theory)) || contentString.equals(context.getString(R.string.music_theory))) + { + coverId = R.drawable.music_theory; + } + else if(icon.equals(context.getString(R.string.programming_fundamentals)) || contentString.equals(context.getString(R.string.programming_fundamentals))) + { + coverId = R.drawable.programming_fundamentals; + } + else if(icon.equals(context.getString(R.string.univ_physics1_icon)) || contentString.equals(context.getString(R.string.univ_physics1_icon))) + { + coverId = R.drawable.university_physics_vol1; + } + else if(icon.equals(context.getString(R.string.univ_physics2_icon)) || contentString.equals(context.getString(R.string.univ_physics2_icon))) + { + coverId = R.drawable.university_physics_vol2; + } + else if(icon.equals(context.getString(R.string.univ_physics3_icon)) || contentString.equals(context.getString(R.string.univ_physics3_icon))) + { + coverId = R.drawable.university_physics_vol3; + } + else if(icon.equals(context.getString(R.string.astronomy_icon)) || contentString.equals(context.getString(R.string.astronomy_icon))) + { + coverId = R.drawable.astronomy; + } + else + { + coverId = R.drawable.ic_book_black_48dp; + } + + return coverId; + } + + } diff --git a/app/src/main/java/org/cnx/android/utils/Constants.java b/app/src/main/java/org/cnx/android/utils/Constants.java index e392c59..70afb8b 100755 --- a/app/src/main/java/org/cnx/android/utils/Constants.java +++ b/app/src/main/java/org/cnx/android/utils/Constants.java @@ -28,8 +28,6 @@ private Constants() //public static final String HELP_FILE_URL = "http://cnx.org/android/help/Connexions_Android_App_Help.html/"; public static final int COLLECTION_TYPE = 1; public static final int MODULE_TYPE = 0; - public static final int CNX_SEARCH = 2; - public static final String MOBILE_CNX_URL = "http://mobile.cnx.org"; public static final String PDF_EXTENSION = ".pdf"; public static final String EPUB_EXTENSION = ".epub"; public static final String TXT_EXTENSION = ".txt"; diff --git a/app/src/main/res/anim-v21/lift_on_touch.xml b/app/src/main/res/anim-v21/lift_on_touch.xml new file mode 100644 index 0000000..2324206 --- /dev/null +++ b/app/src/main/res/anim-v21/lift_on_touch.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-hdpi/astronomy.png b/app/src/main/res/drawable-hdpi/astronomy.png new file mode 100644 index 0000000..a5b60b4 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/astronomy.png differ diff --git a/app/src/main/res/drawable-hdpi/collections.png b/app/src/main/res/drawable-hdpi/collections.png deleted file mode 100755 index 00058a2..0000000 Binary files a/app/src/main/res/drawable-hdpi/collections.png and /dev/null differ diff --git a/app/src/main/res/drawable-hdpi/home.png b/app/src/main/res/drawable-hdpi/home.png deleted file mode 100755 index f8ac5c7..0000000 Binary files a/app/src/main/res/drawable-hdpi/home.png and /dev/null differ diff --git a/app/src/main/res/drawable-hdpi/ic_action_accept.png b/app/src/main/res/drawable-hdpi/ic_action_accept.png deleted file mode 100644 index 700fc81..0000000 Binary files a/app/src/main/res/drawable-hdpi/ic_action_accept.png and /dev/null differ diff --git a/app/src/main/res/drawable-hdpi/ic_action_device_access_storage_1.png b/app/src/main/res/drawable-hdpi/ic_action_device_access_storage_1.png deleted file mode 100755 index ea207ad..0000000 Binary files a/app/src/main/res/drawable-hdpi/ic_action_device_access_storage_1.png and /dev/null differ diff --git a/app/src/main/res/drawable-hdpi/ic_action_discard.png b/app/src/main/res/drawable-hdpi/ic_action_discard.png deleted file mode 100644 index 703b31f..0000000 Binary files a/app/src/main/res/drawable-hdpi/ic_action_discard.png and /dev/null differ diff --git a/app/src/main/res/drawable-hdpi/ic_action_download.png b/app/src/main/res/drawable-hdpi/ic_action_download.png deleted file mode 100644 index 1f3d065..0000000 Binary files a/app/src/main/res/drawable-hdpi/ic_action_download.png and /dev/null differ diff --git a/app/src/main/res/drawable-hdpi/ic_action_new.png b/app/src/main/res/drawable-hdpi/ic_action_new.png deleted file mode 100644 index 3a525cd..0000000 Binary files a/app/src/main/res/drawable-hdpi/ic_action_new.png and /dev/null differ diff --git a/app/src/main/res/drawable-hdpi/ic_book_white_24dp.png b/app/src/main/res/drawable-hdpi/ic_book_white_24dp.png new file mode 100644 index 0000000..0fd780e Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_book_white_24dp.png differ diff --git a/app/src/main/res/drawable-hdpi/ic_bookmark_border_black_24dp.png b/app/src/main/res/drawable-hdpi/ic_bookmark_border_black_24dp.png deleted file mode 100644 index 859d8f7..0000000 Binary files a/app/src/main/res/drawable-hdpi/ic_bookmark_border_black_24dp.png and /dev/null differ diff --git a/app/src/main/res/drawable-hdpi/ic_bookmark_border_white_24dp.png b/app/src/main/res/drawable-hdpi/ic_bookmark_border_white_24dp.png new file mode 100644 index 0000000..8b0c16c Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_bookmark_border_white_24dp.png differ diff --git a/app/src/main/res/drawable-hdpi/ic_delete_white_24dp.png b/app/src/main/res/drawable-hdpi/ic_delete_white_24dp.png new file mode 100644 index 0000000..4a9f769 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_delete_white_24dp.png differ diff --git a/app/src/main/res/drawable-hdpi/ic_description_white_24dp.png b/app/src/main/res/drawable-hdpi/ic_description_white_24dp.png new file mode 100644 index 0000000..e8f9636 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_description_white_24dp.png differ diff --git a/app/src/main/res/drawable-hdpi/ic_done_white_24dp.png b/app/src/main/res/drawable-hdpi/ic_done_white_24dp.png new file mode 100644 index 0000000..c278b6c Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_done_white_24dp.png differ diff --git a/app/src/main/res/drawable-hdpi/ic_drawer.png b/app/src/main/res/drawable-hdpi/ic_drawer.png deleted file mode 100644 index c59f601..0000000 Binary files a/app/src/main/res/drawable-hdpi/ic_drawer.png and /dev/null differ diff --git a/app/src/main/res/drawable-hdpi/ic_file_download_black_24dp.png b/app/src/main/res/drawable-hdpi/ic_file_download_black_24dp.png deleted file mode 100644 index d9aacea..0000000 Binary files a/app/src/main/res/drawable-hdpi/ic_file_download_black_24dp.png and /dev/null differ diff --git a/app/src/main/res/drawable-hdpi/ic_file_download_white_24dp.png b/app/src/main/res/drawable-hdpi/ic_file_download_white_24dp.png new file mode 100644 index 0000000..c8a2039 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_file_download_white_24dp.png differ diff --git a/app/src/main/res/drawable-hdpi/ic_note_add_black_24dp.png b/app/src/main/res/drawable-hdpi/ic_note_add_black_24dp.png deleted file mode 100644 index 23dddc5..0000000 Binary files a/app/src/main/res/drawable-hdpi/ic_note_add_black_24dp.png and /dev/null differ diff --git a/app/src/main/res/drawable-hdpi/ic_note_add_white_24dp.png b/app/src/main/res/drawable-hdpi/ic_note_add_white_24dp.png new file mode 100644 index 0000000..5ff7f63 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_note_add_white_24dp.png differ diff --git a/app/src/main/res/drawable-hdpi/ic_search_black_24dp.png b/app/src/main/res/drawable-hdpi/ic_search_black_24dp.png deleted file mode 100644 index c593e7a..0000000 Binary files a/app/src/main/res/drawable-hdpi/ic_search_black_24dp.png and /dev/null differ diff --git a/app/src/main/res/drawable-hdpi/ic_search_white_24dp.png b/app/src/main/res/drawable-hdpi/ic_search_white_24dp.png new file mode 100644 index 0000000..bbfbc96 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_search_white_24dp.png differ diff --git a/app/src/main/res/drawable-hdpi/ic_share_black_24dp.png b/app/src/main/res/drawable-hdpi/ic_share_black_24dp.png deleted file mode 100644 index 20ba480..0000000 Binary files a/app/src/main/res/drawable-hdpi/ic_share_black_24dp.png and /dev/null differ diff --git a/app/src/main/res/drawable-hdpi/ic_star_black_24dp.png b/app/src/main/res/drawable-hdpi/ic_star_black_24dp.png deleted file mode 100644 index 92a0f58..0000000 Binary files a/app/src/main/res/drawable-hdpi/ic_star_black_24dp.png and /dev/null differ diff --git a/app/src/main/res/drawable-hdpi/ic_star_white_24dp.png b/app/src/main/res/drawable-hdpi/ic_star_white_24dp.png new file mode 100644 index 0000000..86eecdd Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_star_white_24dp.png differ diff --git a/app/src/main/res/drawable-hdpi/ic_view_list_black_24dp.png b/app/src/main/res/drawable-hdpi/ic_view_list_black_24dp.png deleted file mode 100644 index c15537a..0000000 Binary files a/app/src/main/res/drawable-hdpi/ic_view_list_black_24dp.png and /dev/null differ diff --git a/app/src/main/res/drawable-hdpi/lenses.png b/app/src/main/res/drawable-hdpi/lenses.png deleted file mode 100755 index 636a05f..0000000 Binary files a/app/src/main/res/drawable-hdpi/lenses.png and /dev/null differ diff --git a/app/src/main/res/drawable-hdpi/logo.png b/app/src/main/res/drawable-hdpi/logo.png old mode 100755 new mode 100644 index bab947e..01ea434 Binary files a/app/src/main/res/drawable-hdpi/logo.png and b/app/src/main/res/drawable-hdpi/logo.png differ diff --git a/app/src/main/res/drawable-hdpi/magnify.png b/app/src/main/res/drawable-hdpi/magnify.png deleted file mode 100644 index f594b4e..0000000 Binary files a/app/src/main/res/drawable-hdpi/magnify.png and /dev/null differ diff --git a/app/src/main/res/drawable-hdpi/modules.png b/app/src/main/res/drawable-hdpi/modules.png deleted file mode 100755 index 3133658..0000000 Binary files a/app/src/main/res/drawable-hdpi/modules.png and /dev/null differ diff --git a/app/src/main/res/drawable-hdpi/next_item_w.png b/app/src/main/res/drawable-hdpi/next_item_w.png deleted file mode 100755 index 83c4449..0000000 Binary files a/app/src/main/res/drawable-hdpi/next_item_w.png and /dev/null differ diff --git a/app/src/main/res/drawable-hdpi/notesicon_low_sm.png b/app/src/main/res/drawable-hdpi/notesicon_low_sm.png deleted file mode 100755 index 1617fba..0000000 Binary files a/app/src/main/res/drawable-hdpi/notesicon_low_sm.png and /dev/null differ diff --git a/app/src/main/res/drawable-hdpi/university_physics_vol1.png b/app/src/main/res/drawable-hdpi/university_physics_vol1.png new file mode 100644 index 0000000..17c0522 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/university_physics_vol1.png differ diff --git a/app/src/main/res/drawable-hdpi/university_physics_vol2.png b/app/src/main/res/drawable-hdpi/university_physics_vol2.png new file mode 100644 index 0000000..de8fdb4 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/university_physics_vol2.png differ diff --git a/app/src/main/res/drawable-hdpi/university_physics_vol3.png b/app/src/main/res/drawable-hdpi/university_physics_vol3.png new file mode 100644 index 0000000..cabcc38 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/university_physics_vol3.png differ diff --git a/app/src/main/res/drawable-ldpi/astronomy.png b/app/src/main/res/drawable-ldpi/astronomy.png new file mode 100644 index 0000000..a5b60b4 Binary files /dev/null and b/app/src/main/res/drawable-ldpi/astronomy.png differ diff --git a/app/src/main/res/drawable-ldpi/home.png b/app/src/main/res/drawable-ldpi/home.png deleted file mode 100755 index f8ac5c7..0000000 Binary files a/app/src/main/res/drawable-ldpi/home.png and /dev/null differ diff --git a/app/src/main/res/drawable-ldpi/university_physics_vol1.png b/app/src/main/res/drawable-ldpi/university_physics_vol1.png new file mode 100644 index 0000000..17c0522 Binary files /dev/null and b/app/src/main/res/drawable-ldpi/university_physics_vol1.png differ diff --git a/app/src/main/res/drawable-ldpi/university_physics_vol2.png b/app/src/main/res/drawable-ldpi/university_physics_vol2.png new file mode 100644 index 0000000..de8fdb4 Binary files /dev/null and b/app/src/main/res/drawable-ldpi/university_physics_vol2.png differ diff --git a/app/src/main/res/drawable-ldpi/university_physics_vol3.png b/app/src/main/res/drawable-ldpi/university_physics_vol3.png new file mode 100644 index 0000000..cabcc38 Binary files /dev/null and b/app/src/main/res/drawable-ldpi/university_physics_vol3.png differ diff --git a/app/src/main/res/drawable-mdpi/astronomy.png b/app/src/main/res/drawable-mdpi/astronomy.png new file mode 100644 index 0000000..a5b60b4 Binary files /dev/null and b/app/src/main/res/drawable-mdpi/astronomy.png differ diff --git a/app/src/main/res/drawable-mdpi/collections.png b/app/src/main/res/drawable-mdpi/collections.png deleted file mode 100755 index 73aba2d..0000000 Binary files a/app/src/main/res/drawable-mdpi/collections.png and /dev/null differ diff --git a/app/src/main/res/drawable-mdpi/home.png b/app/src/main/res/drawable-mdpi/home.png deleted file mode 100755 index f8ac5c7..0000000 Binary files a/app/src/main/res/drawable-mdpi/home.png and /dev/null differ diff --git a/app/src/main/res/drawable-mdpi/ic_action_accept.png b/app/src/main/res/drawable-mdpi/ic_action_accept.png deleted file mode 100644 index 41107b8..0000000 Binary files a/app/src/main/res/drawable-mdpi/ic_action_accept.png and /dev/null differ diff --git a/app/src/main/res/drawable-mdpi/ic_action_device_access_storage_1.png b/app/src/main/res/drawable-mdpi/ic_action_device_access_storage_1.png deleted file mode 100755 index 7c87564..0000000 Binary files a/app/src/main/res/drawable-mdpi/ic_action_device_access_storage_1.png and /dev/null differ diff --git a/app/src/main/res/drawable-mdpi/ic_action_discard.png b/app/src/main/res/drawable-mdpi/ic_action_discard.png deleted file mode 100644 index 248fb09..0000000 Binary files a/app/src/main/res/drawable-mdpi/ic_action_discard.png and /dev/null differ diff --git a/app/src/main/res/drawable-mdpi/ic_action_download.png b/app/src/main/res/drawable-mdpi/ic_action_download.png deleted file mode 100644 index c2ead0c..0000000 Binary files a/app/src/main/res/drawable-mdpi/ic_action_download.png and /dev/null differ diff --git a/app/src/main/res/drawable-mdpi/ic_action_new.png b/app/src/main/res/drawable-mdpi/ic_action_new.png deleted file mode 100644 index da506ca..0000000 Binary files a/app/src/main/res/drawable-mdpi/ic_action_new.png and /dev/null differ diff --git a/app/src/main/res/drawable-mdpi/ic_action_share.png b/app/src/main/res/drawable-mdpi/ic_action_share.png deleted file mode 100755 index 89d1e1e..0000000 Binary files a/app/src/main/res/drawable-mdpi/ic_action_share.png and /dev/null differ diff --git a/app/src/main/res/drawable-mdpi/ic_book_white_24dp.png b/app/src/main/res/drawable-mdpi/ic_book_white_24dp.png new file mode 100644 index 0000000..8b02f9a Binary files /dev/null and b/app/src/main/res/drawable-mdpi/ic_book_white_24dp.png differ diff --git a/app/src/main/res/drawable-mdpi/ic_bookmark_border_black_24dp.png b/app/src/main/res/drawable-mdpi/ic_bookmark_border_black_24dp.png deleted file mode 100644 index b437d22..0000000 Binary files a/app/src/main/res/drawable-mdpi/ic_bookmark_border_black_24dp.png and /dev/null differ diff --git a/app/src/main/res/drawable-mdpi/ic_bookmark_border_white_24dp.png b/app/src/main/res/drawable-mdpi/ic_bookmark_border_white_24dp.png new file mode 100644 index 0000000..9842707 Binary files /dev/null and b/app/src/main/res/drawable-mdpi/ic_bookmark_border_white_24dp.png differ diff --git a/app/src/main/res/drawable-mdpi/ic_delete_white_24dp.png b/app/src/main/res/drawable-mdpi/ic_delete_white_24dp.png new file mode 100644 index 0000000..e2f5f35 Binary files /dev/null and b/app/src/main/res/drawable-mdpi/ic_delete_white_24dp.png differ diff --git a/app/src/main/res/drawable-mdpi/ic_description_white_24dp.png b/app/src/main/res/drawable-mdpi/ic_description_white_24dp.png new file mode 100644 index 0000000..2f36ec3 Binary files /dev/null and b/app/src/main/res/drawable-mdpi/ic_description_white_24dp.png differ diff --git a/app/src/main/res/drawable-mdpi/ic_done_white_24dp.png b/app/src/main/res/drawable-mdpi/ic_done_white_24dp.png new file mode 100644 index 0000000..6d84e14 Binary files /dev/null and b/app/src/main/res/drawable-mdpi/ic_done_white_24dp.png differ diff --git a/app/src/main/res/drawable-mdpi/ic_drawer.png b/app/src/main/res/drawable-mdpi/ic_drawer.png deleted file mode 100644 index 1ed2c56..0000000 Binary files a/app/src/main/res/drawable-mdpi/ic_drawer.png and /dev/null differ diff --git a/app/src/main/res/drawable-mdpi/ic_file_download_black_24dp.png b/app/src/main/res/drawable-mdpi/ic_file_download_black_24dp.png deleted file mode 100644 index c2c845e..0000000 Binary files a/app/src/main/res/drawable-mdpi/ic_file_download_black_24dp.png and /dev/null differ diff --git a/app/src/main/res/drawable-mdpi/ic_file_download_white_24dp.png b/app/src/main/res/drawable-mdpi/ic_file_download_white_24dp.png new file mode 100644 index 0000000..d400472 Binary files /dev/null and b/app/src/main/res/drawable-mdpi/ic_file_download_white_24dp.png differ diff --git a/app/src/main/res/drawable-mdpi/ic_note_add_black_24dp.png b/app/src/main/res/drawable-mdpi/ic_note_add_black_24dp.png deleted file mode 100644 index 711622d..0000000 Binary files a/app/src/main/res/drawable-mdpi/ic_note_add_black_24dp.png and /dev/null differ diff --git a/app/src/main/res/drawable-mdpi/ic_note_add_white_24dp.png b/app/src/main/res/drawable-mdpi/ic_note_add_white_24dp.png new file mode 100644 index 0000000..a7c877c Binary files /dev/null and b/app/src/main/res/drawable-mdpi/ic_note_add_white_24dp.png differ diff --git a/app/src/main/res/drawable-mdpi/ic_search_black_24dp.png b/app/src/main/res/drawable-mdpi/ic_search_black_24dp.png deleted file mode 100644 index 6b16343..0000000 Binary files a/app/src/main/res/drawable-mdpi/ic_search_black_24dp.png and /dev/null differ diff --git a/app/src/main/res/drawable-mdpi/ic_search_white_24dp.png b/app/src/main/res/drawable-mdpi/ic_search_white_24dp.png new file mode 100644 index 0000000..faefc59 Binary files /dev/null and b/app/src/main/res/drawable-mdpi/ic_search_white_24dp.png differ diff --git a/app/src/main/res/drawable-mdpi/ic_share_black_24dp.png b/app/src/main/res/drawable-mdpi/ic_share_black_24dp.png deleted file mode 100644 index f02d360..0000000 Binary files a/app/src/main/res/drawable-mdpi/ic_share_black_24dp.png and /dev/null differ diff --git a/app/src/main/res/drawable-mdpi/ic_star_black_24dp.png b/app/src/main/res/drawable-mdpi/ic_star_black_24dp.png deleted file mode 100644 index a728afe..0000000 Binary files a/app/src/main/res/drawable-mdpi/ic_star_black_24dp.png and /dev/null differ diff --git a/app/src/main/res/drawable-mdpi/ic_star_white_24dp.png b/app/src/main/res/drawable-mdpi/ic_star_white_24dp.png new file mode 100644 index 0000000..d2cbe4c Binary files /dev/null and b/app/src/main/res/drawable-mdpi/ic_star_white_24dp.png differ diff --git a/app/src/main/res/drawable-mdpi/ic_view_list_black_24dp.png b/app/src/main/res/drawable-mdpi/ic_view_list_black_24dp.png deleted file mode 100644 index 7a8eae9..0000000 Binary files a/app/src/main/res/drawable-mdpi/ic_view_list_black_24dp.png and /dev/null differ diff --git a/app/src/main/res/drawable-mdpi/lenses.png b/app/src/main/res/drawable-mdpi/lenses.png deleted file mode 100755 index c512e7b..0000000 Binary files a/app/src/main/res/drawable-mdpi/lenses.png and /dev/null differ diff --git a/app/src/main/res/drawable-mdpi/logo.png b/app/src/main/res/drawable-mdpi/logo.png old mode 100755 new mode 100644 index 03105a8..6015633 Binary files a/app/src/main/res/drawable-mdpi/logo.png and b/app/src/main/res/drawable-mdpi/logo.png differ diff --git a/app/src/main/res/drawable-mdpi/magnify.png b/app/src/main/res/drawable-mdpi/magnify.png deleted file mode 100644 index 2e446ec..0000000 Binary files a/app/src/main/res/drawable-mdpi/magnify.png and /dev/null differ diff --git a/app/src/main/res/drawable-mdpi/modules.png b/app/src/main/res/drawable-mdpi/modules.png deleted file mode 100755 index d198084..0000000 Binary files a/app/src/main/res/drawable-mdpi/modules.png and /dev/null differ diff --git a/app/src/main/res/drawable-mdpi/next_item_w.png b/app/src/main/res/drawable-mdpi/next_item_w.png deleted file mode 100755 index 3f8a280..0000000 Binary files a/app/src/main/res/drawable-mdpi/next_item_w.png and /dev/null differ diff --git a/app/src/main/res/drawable-mdpi/notesicon_low_sm.png b/app/src/main/res/drawable-mdpi/notesicon_low_sm.png deleted file mode 100755 index 522f7a6..0000000 Binary files a/app/src/main/res/drawable-mdpi/notesicon_low_sm.png and /dev/null differ diff --git a/app/src/main/res/drawable-mdpi/university_physics_vol1.png b/app/src/main/res/drawable-mdpi/university_physics_vol1.png new file mode 100644 index 0000000..17c0522 Binary files /dev/null and b/app/src/main/res/drawable-mdpi/university_physics_vol1.png differ diff --git a/app/src/main/res/drawable-mdpi/university_physics_vol2.png b/app/src/main/res/drawable-mdpi/university_physics_vol2.png new file mode 100644 index 0000000..de8fdb4 Binary files /dev/null and b/app/src/main/res/drawable-mdpi/university_physics_vol2.png differ diff --git a/app/src/main/res/drawable-mdpi/university_physics_vol3.png b/app/src/main/res/drawable-mdpi/university_physics_vol3.png new file mode 100644 index 0000000..cabcc38 Binary files /dev/null and b/app/src/main/res/drawable-mdpi/university_physics_vol3.png differ diff --git a/app/src/main/res/drawable-nodpi/bookmark.png b/app/src/main/res/drawable-nodpi/bookmark.png new file mode 100644 index 0000000..78ff0b9 Binary files /dev/null and b/app/src/main/res/drawable-nodpi/bookmark.png differ diff --git a/app/src/main/res/drawable-nodpi/books.png b/app/src/main/res/drawable-nodpi/books.png new file mode 100644 index 0000000..0627155 Binary files /dev/null and b/app/src/main/res/drawable-nodpi/books.png differ diff --git a/app/src/main/res/drawable-nodpi/os_feature.png b/app/src/main/res/drawable-nodpi/os_feature.png new file mode 100644 index 0000000..f33ffaf Binary files /dev/null and b/app/src/main/res/drawable-nodpi/os_feature.png differ diff --git a/app/src/main/res/drawable-xhdpi/collections.png b/app/src/main/res/drawable-xhdpi/collections.png deleted file mode 100755 index 890383c..0000000 Binary files a/app/src/main/res/drawable-xhdpi/collections.png and /dev/null differ diff --git a/app/src/main/res/drawable-xhdpi/home.png b/app/src/main/res/drawable-xhdpi/home.png deleted file mode 100755 index f8ac5c7..0000000 Binary files a/app/src/main/res/drawable-xhdpi/home.png and /dev/null differ diff --git a/app/src/main/res/drawable-xhdpi/ic_action_accept.png b/app/src/main/res/drawable-xhdpi/ic_action_accept.png deleted file mode 100644 index 6ee32b6..0000000 Binary files a/app/src/main/res/drawable-xhdpi/ic_action_accept.png and /dev/null differ diff --git a/app/src/main/res/drawable-xhdpi/ic_action_device_access_storage_1.png b/app/src/main/res/drawable-xhdpi/ic_action_device_access_storage_1.png deleted file mode 100755 index f30472c..0000000 Binary files a/app/src/main/res/drawable-xhdpi/ic_action_device_access_storage_1.png and /dev/null differ diff --git a/app/src/main/res/drawable-xhdpi/ic_action_discard.png b/app/src/main/res/drawable-xhdpi/ic_action_discard.png deleted file mode 100644 index 9eeeed1..0000000 Binary files a/app/src/main/res/drawable-xhdpi/ic_action_discard.png and /dev/null differ diff --git a/app/src/main/res/drawable-xhdpi/ic_action_download.png b/app/src/main/res/drawable-xhdpi/ic_action_download.png deleted file mode 100644 index 38a3aee..0000000 Binary files a/app/src/main/res/drawable-xhdpi/ic_action_download.png and /dev/null differ diff --git a/app/src/main/res/drawable-xhdpi/ic_action_new.png b/app/src/main/res/drawable-xhdpi/ic_action_new.png deleted file mode 100644 index 6038bee..0000000 Binary files a/app/src/main/res/drawable-xhdpi/ic_action_new.png and /dev/null differ diff --git a/app/src/main/res/drawable-xhdpi/ic_action_share.png b/app/src/main/res/drawable-xhdpi/ic_action_share.png deleted file mode 100755 index 2ccaa87..0000000 Binary files a/app/src/main/res/drawable-xhdpi/ic_action_share.png and /dev/null differ diff --git a/app/src/main/res/drawable-xhdpi/ic_book_white_24dp.png b/app/src/main/res/drawable-xhdpi/ic_book_white_24dp.png new file mode 100644 index 0000000..5a5ee30 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_book_white_24dp.png differ diff --git a/app/src/main/res/drawable-xhdpi/ic_bookmark_border_black_24dp.png b/app/src/main/res/drawable-xhdpi/ic_bookmark_border_black_24dp.png deleted file mode 100644 index 35c8119..0000000 Binary files a/app/src/main/res/drawable-xhdpi/ic_bookmark_border_black_24dp.png and /dev/null differ diff --git a/app/src/main/res/drawable-xhdpi/ic_bookmark_border_white_24dp.png b/app/src/main/res/drawable-xhdpi/ic_bookmark_border_white_24dp.png new file mode 100644 index 0000000..e42e09f Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_bookmark_border_white_24dp.png differ diff --git a/app/src/main/res/drawable-xhdpi/ic_delete_white_24dp.png b/app/src/main/res/drawable-xhdpi/ic_delete_white_24dp.png new file mode 100644 index 0000000..388b5b0 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_delete_white_24dp.png differ diff --git a/app/src/main/res/drawable-xhdpi/ic_description_white_24dp.png b/app/src/main/res/drawable-xhdpi/ic_description_white_24dp.png new file mode 100644 index 0000000..5308348 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_description_white_24dp.png differ diff --git a/app/src/main/res/drawable-xhdpi/ic_done_white_24dp.png b/app/src/main/res/drawable-xhdpi/ic_done_white_24dp.png new file mode 100644 index 0000000..3b2b65d Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_done_white_24dp.png differ diff --git a/app/src/main/res/drawable-xhdpi/ic_drawer.png b/app/src/main/res/drawable-xhdpi/ic_drawer.png deleted file mode 100644 index a5fa74d..0000000 Binary files a/app/src/main/res/drawable-xhdpi/ic_drawer.png and /dev/null differ diff --git a/app/src/main/res/drawable-xhdpi/ic_file_download_black_24dp.png b/app/src/main/res/drawable-xhdpi/ic_file_download_black_24dp.png deleted file mode 100644 index f5afb24..0000000 Binary files a/app/src/main/res/drawable-xhdpi/ic_file_download_black_24dp.png and /dev/null differ diff --git a/app/src/main/res/drawable-xhdpi/ic_file_download_white_24dp.png b/app/src/main/res/drawable-xhdpi/ic_file_download_white_24dp.png new file mode 100644 index 0000000..f53cc0c Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_file_download_white_24dp.png differ diff --git a/app/src/main/res/drawable-xhdpi/ic_note_add_black_24dp.png b/app/src/main/res/drawable-xhdpi/ic_note_add_black_24dp.png deleted file mode 100644 index a3e5e38..0000000 Binary files a/app/src/main/res/drawable-xhdpi/ic_note_add_black_24dp.png and /dev/null differ diff --git a/app/src/main/res/drawable-xhdpi/ic_note_add_white_24dp.png b/app/src/main/res/drawable-xhdpi/ic_note_add_white_24dp.png new file mode 100644 index 0000000..7834b59 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_note_add_white_24dp.png differ diff --git a/app/src/main/res/drawable-xhdpi/ic_search_black_24dp.png b/app/src/main/res/drawable-xhdpi/ic_search_black_24dp.png deleted file mode 100644 index 6381902..0000000 Binary files a/app/src/main/res/drawable-xhdpi/ic_search_black_24dp.png and /dev/null differ diff --git a/app/src/main/res/drawable-xhdpi/ic_search_white_24dp.png b/app/src/main/res/drawable-xhdpi/ic_search_white_24dp.png new file mode 100644 index 0000000..bfc3e39 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_search_white_24dp.png differ diff --git a/app/src/main/res/drawable-xhdpi/ic_share_black_24dp.png b/app/src/main/res/drawable-xhdpi/ic_share_black_24dp.png deleted file mode 100644 index 81c80b7..0000000 Binary files a/app/src/main/res/drawable-xhdpi/ic_share_black_24dp.png and /dev/null differ diff --git a/app/src/main/res/drawable-xhdpi/ic_star_black_24dp.png b/app/src/main/res/drawable-xhdpi/ic_star_black_24dp.png deleted file mode 100644 index c636ce8..0000000 Binary files a/app/src/main/res/drawable-xhdpi/ic_star_black_24dp.png and /dev/null differ diff --git a/app/src/main/res/drawable-xhdpi/ic_star_white_24dp.png b/app/src/main/res/drawable-xhdpi/ic_star_white_24dp.png new file mode 100644 index 0000000..9143406 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_star_white_24dp.png differ diff --git a/app/src/main/res/drawable-xhdpi/ic_view_list_black_24dp.png b/app/src/main/res/drawable-xhdpi/ic_view_list_black_24dp.png deleted file mode 100644 index 73372f4..0000000 Binary files a/app/src/main/res/drawable-xhdpi/ic_view_list_black_24dp.png and /dev/null differ diff --git a/app/src/main/res/drawable-xhdpi/lenses.png b/app/src/main/res/drawable-xhdpi/lenses.png deleted file mode 100755 index a8f29df..0000000 Binary files a/app/src/main/res/drawable-xhdpi/lenses.png and /dev/null differ diff --git a/app/src/main/res/drawable-xhdpi/logo.png b/app/src/main/res/drawable-xhdpi/logo.png old mode 100755 new mode 100644 index e0d409d..c0cb659 Binary files a/app/src/main/res/drawable-xhdpi/logo.png and b/app/src/main/res/drawable-xhdpi/logo.png differ diff --git a/app/src/main/res/drawable-xhdpi/magnify.png b/app/src/main/res/drawable-xhdpi/magnify.png deleted file mode 100644 index aad535e..0000000 Binary files a/app/src/main/res/drawable-xhdpi/magnify.png and /dev/null differ diff --git a/app/src/main/res/drawable-xhdpi/modules.png b/app/src/main/res/drawable-xhdpi/modules.png deleted file mode 100755 index fc42d59..0000000 Binary files a/app/src/main/res/drawable-xhdpi/modules.png and /dev/null differ diff --git a/app/src/main/res/drawable-xhdpi/next_item_w.png b/app/src/main/res/drawable-xhdpi/next_item_w.png deleted file mode 100755 index ee24cd9..0000000 Binary files a/app/src/main/res/drawable-xhdpi/next_item_w.png and /dev/null differ diff --git a/app/src/main/res/drawable-xhdpi/notesicon_low_sm.png b/app/src/main/res/drawable-xhdpi/notesicon_low_sm.png deleted file mode 100755 index d9dadca..0000000 Binary files a/app/src/main/res/drawable-xhdpi/notesicon_low_sm.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxhdpi/collections.png b/app/src/main/res/drawable-xxhdpi/collections.png deleted file mode 100755 index 7ad5a70..0000000 Binary files a/app/src/main/res/drawable-xxhdpi/collections.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_action_accept.png b/app/src/main/res/drawable-xxhdpi/ic_action_accept.png deleted file mode 100644 index 68c41de..0000000 Binary files a/app/src/main/res/drawable-xxhdpi/ic_action_accept.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_action_device_access_storage_1.png b/app/src/main/res/drawable-xxhdpi/ic_action_device_access_storage_1.png deleted file mode 100755 index 8e4be20..0000000 Binary files a/app/src/main/res/drawable-xxhdpi/ic_action_device_access_storage_1.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_action_discard.png b/app/src/main/res/drawable-xxhdpi/ic_action_discard.png deleted file mode 100644 index cb1260a..0000000 Binary files a/app/src/main/res/drawable-xxhdpi/ic_action_discard.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_action_download.png b/app/src/main/res/drawable-xxhdpi/ic_action_download.png deleted file mode 100644 index ef7785a..0000000 Binary files a/app/src/main/res/drawable-xxhdpi/ic_action_download.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_action_new.png b/app/src/main/res/drawable-xxhdpi/ic_action_new.png deleted file mode 100644 index c0cd3d9..0000000 Binary files a/app/src/main/res/drawable-xxhdpi/ic_action_new.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_book_white_24dp.png b/app/src/main/res/drawable-xxhdpi/ic_book_white_24dp.png new file mode 100644 index 0000000..d181a32 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_book_white_24dp.png differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_bookmark_border_black_24dp.png b/app/src/main/res/drawable-xxhdpi/ic_bookmark_border_black_24dp.png deleted file mode 100644 index 5fb650e..0000000 Binary files a/app/src/main/res/drawable-xxhdpi/ic_bookmark_border_black_24dp.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_bookmark_border_white_24dp.png b/app/src/main/res/drawable-xxhdpi/ic_bookmark_border_white_24dp.png new file mode 100644 index 0000000..6ed27a2 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_bookmark_border_white_24dp.png differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_delete_white_24dp.png b/app/src/main/res/drawable-xxhdpi/ic_delete_white_24dp.png new file mode 100644 index 0000000..3fcdfdb Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_delete_white_24dp.png differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_description_white_24dp.png b/app/src/main/res/drawable-xxhdpi/ic_description_white_24dp.png new file mode 100644 index 0000000..9b7071b Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_description_white_24dp.png differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_done_white_24dp.png b/app/src/main/res/drawable-xxhdpi/ic_done_white_24dp.png new file mode 100644 index 0000000..0ebb555 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_done_white_24dp.png differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_drawer.png b/app/src/main/res/drawable-xxhdpi/ic_drawer.png deleted file mode 100644 index 9c4685d..0000000 Binary files a/app/src/main/res/drawable-xxhdpi/ic_drawer.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_file_download_black_24dp.png b/app/src/main/res/drawable-xxhdpi/ic_file_download_black_24dp.png deleted file mode 100644 index ce97c85..0000000 Binary files a/app/src/main/res/drawable-xxhdpi/ic_file_download_black_24dp.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_file_download_white_24dp.png b/app/src/main/res/drawable-xxhdpi/ic_file_download_white_24dp.png new file mode 100644 index 0000000..78aa591 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_file_download_white_24dp.png differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_note_add_black_24dp.png b/app/src/main/res/drawable-xxhdpi/ic_note_add_black_24dp.png deleted file mode 100644 index 4ca9de2..0000000 Binary files a/app/src/main/res/drawable-xxhdpi/ic_note_add_black_24dp.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_note_add_white_24dp.png b/app/src/main/res/drawable-xxhdpi/ic_note_add_white_24dp.png new file mode 100644 index 0000000..12efadc Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_note_add_white_24dp.png differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_search_black_24dp.png b/app/src/main/res/drawable-xxhdpi/ic_search_black_24dp.png deleted file mode 100644 index 3ae490e..0000000 Binary files a/app/src/main/res/drawable-xxhdpi/ic_search_black_24dp.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_search_white_24dp.png b/app/src/main/res/drawable-xxhdpi/ic_search_white_24dp.png new file mode 100644 index 0000000..abbb989 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_search_white_24dp.png differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_share_black_24dp.png b/app/src/main/res/drawable-xxhdpi/ic_share_black_24dp.png deleted file mode 100644 index 784933a..0000000 Binary files a/app/src/main/res/drawable-xxhdpi/ic_share_black_24dp.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_star_black_24dp.png b/app/src/main/res/drawable-xxhdpi/ic_star_black_24dp.png deleted file mode 100644 index 54d3065..0000000 Binary files a/app/src/main/res/drawable-xxhdpi/ic_star_black_24dp.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_star_white_24dp.png b/app/src/main/res/drawable-xxhdpi/ic_star_white_24dp.png new file mode 100644 index 0000000..aa58792 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_star_white_24dp.png differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_view_list_black_24dp.png b/app/src/main/res/drawable-xxhdpi/ic_view_list_black_24dp.png deleted file mode 100644 index b9483c3..0000000 Binary files a/app/src/main/res/drawable-xxhdpi/ic_view_list_black_24dp.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxhdpi/lenses.png b/app/src/main/res/drawable-xxhdpi/lenses.png deleted file mode 100755 index ffca738..0000000 Binary files a/app/src/main/res/drawable-xxhdpi/lenses.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxhdpi/logo.png b/app/src/main/res/drawable-xxhdpi/logo.png old mode 100755 new mode 100644 index 383f966..8546e1a Binary files a/app/src/main/res/drawable-xxhdpi/logo.png and b/app/src/main/res/drawable-xxhdpi/logo.png differ diff --git a/app/src/main/res/drawable-xxhdpi/magnify.png b/app/src/main/res/drawable-xxhdpi/magnify.png deleted file mode 100644 index 9c0ea3c..0000000 Binary files a/app/src/main/res/drawable-xxhdpi/magnify.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxhdpi/modules.png b/app/src/main/res/drawable-xxhdpi/modules.png deleted file mode 100755 index d00238a..0000000 Binary files a/app/src/main/res/drawable-xxhdpi/modules.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxhdpi/next_item_w.png b/app/src/main/res/drawable-xxhdpi/next_item_w.png deleted file mode 100755 index 4c460ec..0000000 Binary files a/app/src/main/res/drawable-xxhdpi/next_item_w.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxhdpi/notesicon_low_sm.png b/app/src/main/res/drawable-xxhdpi/notesicon_low_sm.png deleted file mode 100755 index aaf8aa2..0000000 Binary files a/app/src/main/res/drawable-xxhdpi/notesicon_low_sm.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/collections.png b/app/src/main/res/drawable-xxxhdpi/collections.png deleted file mode 100755 index 305c0c7..0000000 Binary files a/app/src/main/res/drawable-xxxhdpi/collections.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/ic_book_white_24dp.png b/app/src/main/res/drawable-xxxhdpi/ic_book_white_24dp.png new file mode 100644 index 0000000..938eff4 Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/ic_book_white_24dp.png differ diff --git a/app/src/main/res/drawable-xxxhdpi/ic_bookmark_border_black_24dp.png b/app/src/main/res/drawable-xxxhdpi/ic_bookmark_border_black_24dp.png deleted file mode 100644 index 5f01083..0000000 Binary files a/app/src/main/res/drawable-xxxhdpi/ic_bookmark_border_black_24dp.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/ic_delete_white_24dp.png b/app/src/main/res/drawable-xxxhdpi/ic_delete_white_24dp.png new file mode 100644 index 0000000..8d322aa Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/ic_delete_white_24dp.png differ diff --git a/app/src/main/res/drawable-xxxhdpi/ic_description_white_24dp.png b/app/src/main/res/drawable-xxxhdpi/ic_description_white_24dp.png new file mode 100644 index 0000000..f89ffeb Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/ic_description_white_24dp.png differ diff --git a/app/src/main/res/drawable-xxxhdpi/ic_done_white_24dp.png b/app/src/main/res/drawable-xxxhdpi/ic_done_white_24dp.png new file mode 100644 index 0000000..d670618 Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/ic_done_white_24dp.png differ diff --git a/app/src/main/res/drawable-xxxhdpi/ic_file_download_black_24dp.png b/app/src/main/res/drawable-xxxhdpi/ic_file_download_black_24dp.png deleted file mode 100644 index 8c83bff..0000000 Binary files a/app/src/main/res/drawable-xxxhdpi/ic_file_download_black_24dp.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/ic_file_download_white_24dp.png b/app/src/main/res/drawable-xxxhdpi/ic_file_download_white_24dp.png new file mode 100644 index 0000000..ded5652 Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/ic_file_download_white_24dp.png differ diff --git a/app/src/main/res/drawable-xxxhdpi/ic_note_add_black_24dp.png b/app/src/main/res/drawable-xxxhdpi/ic_note_add_black_24dp.png deleted file mode 100644 index 8491319..0000000 Binary files a/app/src/main/res/drawable-xxxhdpi/ic_note_add_black_24dp.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/ic_search_black_24dp.png b/app/src/main/res/drawable-xxxhdpi/ic_search_black_24dp.png deleted file mode 100644 index 21be572..0000000 Binary files a/app/src/main/res/drawable-xxxhdpi/ic_search_black_24dp.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/ic_search_white_24dp.png b/app/src/main/res/drawable-xxxhdpi/ic_search_white_24dp.png new file mode 100644 index 0000000..dd5adfc Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/ic_search_white_24dp.png differ diff --git a/app/src/main/res/drawable-xxxhdpi/ic_share_black_24dp.png b/app/src/main/res/drawable-xxxhdpi/ic_share_black_24dp.png deleted file mode 100644 index 5a8544c..0000000 Binary files a/app/src/main/res/drawable-xxxhdpi/ic_share_black_24dp.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/ic_star_black_24dp.png b/app/src/main/res/drawable-xxxhdpi/ic_star_black_24dp.png deleted file mode 100644 index 7be2280..0000000 Binary files a/app/src/main/res/drawable-xxxhdpi/ic_star_black_24dp.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/ic_star_white_24dp.png b/app/src/main/res/drawable-xxxhdpi/ic_star_white_24dp.png new file mode 100644 index 0000000..58d71b3 Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/ic_star_white_24dp.png differ diff --git a/app/src/main/res/drawable-xxxhdpi/ic_view_list_black_24dp.png b/app/src/main/res/drawable-xxxhdpi/ic_view_list_black_24dp.png deleted file mode 100644 index 7c1506b..0000000 Binary files a/app/src/main/res/drawable-xxxhdpi/ic_view_list_black_24dp.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/lenses.png b/app/src/main/res/drawable-xxxhdpi/lenses.png deleted file mode 100755 index ce684e7..0000000 Binary files a/app/src/main/res/drawable-xxxhdpi/lenses.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/logo.png b/app/src/main/res/drawable-xxxhdpi/logo.png old mode 100755 new mode 100644 index f0c3575..9ce856a Binary files a/app/src/main/res/drawable-xxxhdpi/logo.png and b/app/src/main/res/drawable-xxxhdpi/logo.png differ diff --git a/app/src/main/res/drawable-xxxhdpi/modules.png b/app/src/main/res/drawable-xxxhdpi/modules.png deleted file mode 100755 index 790c39e..0000000 Binary files a/app/src/main/res/drawable-xxxhdpi/modules.png and /dev/null differ diff --git a/app/src/main/res/drawable/button_bar_background.xml b/app/src/main/res/drawable/button_bar_background.xml deleted file mode 100755 index e06f349..0000000 --- a/app/src/main/res/drawable/button_bar_background.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - -? - - - - - - diff --git a/app/src/main/res/drawable/button_bar_default.xml b/app/src/main/res/drawable/button_bar_default.xml deleted file mode 100755 index a4a8474..0000000 --- a/app/src/main/res/drawable/button_bar_default.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - diff --git a/app/src/main/res/drawable/button_default.xml b/app/src/main/res/drawable/button_default.xml deleted file mode 100755 index aaee825..0000000 --- a/app/src/main/res/drawable/button_default.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - diff --git a/app/src/main/res/drawable/button_disabled_focused.xml b/app/src/main/res/drawable/button_disabled_focused.xml deleted file mode 100755 index cd3d51c..0000000 --- a/app/src/main/res/drawable/button_disabled_focused.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - diff --git a/app/src/main/res/drawable/button_focused.xml b/app/src/main/res/drawable/button_focused.xml deleted file mode 100755 index 9031660..0000000 --- a/app/src/main/res/drawable/button_focused.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - diff --git a/app/src/main/res/drawable/button_pressed.xml b/app/src/main/res/drawable/button_pressed.xml deleted file mode 100755 index 0199e07..0000000 --- a/app/src/main/res/drawable/button_pressed.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - diff --git a/app/src/main/res/drawable/copy.png b/app/src/main/res/drawable/copy.png deleted file mode 100755 index 86d334a..0000000 Binary files a/app/src/main/res/drawable/copy.png and /dev/null differ diff --git a/app/src/main/res/drawable/divider.xml b/app/src/main/res/drawable/divider.xml deleted file mode 100644 index 0d2cbcf..0000000 --- a/app/src/main/res/drawable/divider.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/epub_icon_sm.png b/app/src/main/res/drawable/epub_icon_sm.png deleted file mode 100755 index 12b8174..0000000 Binary files a/app/src/main/res/drawable/epub_icon_sm.png and /dev/null differ diff --git a/app/src/main/res/drawable/favorites.png b/app/src/main/res/drawable/favorites.png deleted file mode 100755 index 013994e..0000000 Binary files a/app/src/main/res/drawable/favorites.png and /dev/null differ diff --git a/app/src/main/res/drawable/favorites_selected.png b/app/src/main/res/drawable/favorites_selected.png deleted file mode 100755 index 6c100c4..0000000 Binary files a/app/src/main/res/drawable/favorites_selected.png and /dev/null differ diff --git a/app/src/main/res/drawable/favorites_unselected.png b/app/src/main/res/drawable/favorites_unselected.png deleted file mode 100755 index a85f978..0000000 Binary files a/app/src/main/res/drawable/favorites_unselected.png and /dev/null differ diff --git a/app/src/main/res/drawable/favoritesadd.png b/app/src/main/res/drawable/favoritesadd.png deleted file mode 100755 index 042c3a0..0000000 Binary files a/app/src/main/res/drawable/favoritesadd.png and /dev/null differ diff --git a/app/src/main/res/drawable/ic_menu_delete.png b/app/src/main/res/drawable/ic_menu_delete.png deleted file mode 100755 index bb533f7..0000000 Binary files a/app/src/main/res/drawable/ic_menu_delete.png and /dev/null differ diff --git a/app/src/main/res/drawable/ic_menu_refresh.png b/app/src/main/res/drawable/ic_menu_refresh.png deleted file mode 100755 index 77d70dd..0000000 Binary files a/app/src/main/res/drawable/ic_menu_refresh.png and /dev/null differ diff --git a/app/src/main/res/drawable/ic_menu_save.png b/app/src/main/res/drawable/ic_menu_save.png deleted file mode 100755 index ffd7fb7..0000000 Binary files a/app/src/main/res/drawable/ic_menu_save.png and /dev/null differ diff --git a/app/src/main/res/drawable/ic_menu_upload.png b/app/src/main/res/drawable/ic_menu_upload.png deleted file mode 100755 index fb765a2..0000000 Binary files a/app/src/main/res/drawable/ic_menu_upload.png and /dev/null differ diff --git a/app/src/main/res/drawable/ic_title_share_sm.png b/app/src/main/res/drawable/ic_title_share_sm.png deleted file mode 100755 index 4b26e09..0000000 Binary files a/app/src/main/res/drawable/ic_title_share_sm.png and /dev/null differ diff --git a/app/src/main/res/drawable/landing_logo.png b/app/src/main/res/drawable/landing_logo.png deleted file mode 100644 index 73b64d3..0000000 Binary files a/app/src/main/res/drawable/landing_logo.png and /dev/null differ diff --git a/app/src/main/res/drawable/lenses_selected.png b/app/src/main/res/drawable/lenses_selected.png deleted file mode 100755 index 91dd7bc..0000000 Binary files a/app/src/main/res/drawable/lenses_selected.png and /dev/null differ diff --git a/app/src/main/res/drawable/lenses_unselected.png b/app/src/main/res/drawable/lenses_unselected.png deleted file mode 100755 index d3f9767..0000000 Binary files a/app/src/main/res/drawable/lenses_unselected.png and /dev/null differ diff --git a/app/src/main/res/drawable/list_item_background_disabled.xml b/app/src/main/res/drawable/list_item_background_disabled.xml deleted file mode 100755 index 2348722..0000000 --- a/app/src/main/res/drawable/list_item_background_disabled.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - diff --git a/app/src/main/res/drawable/list_item_background_transition.xml b/app/src/main/res/drawable/list_item_background_transition.xml deleted file mode 100755 index 67f77cf..0000000 --- a/app/src/main/res/drawable/list_item_background_transition.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/app/src/main/res/drawable/nav_item_background_standard.xml b/app/src/main/res/drawable/nav_item_background_standard.xml index db82ff9..f4422bd 100644 --- a/app/src/main/res/drawable/nav_item_background_standard.xml +++ b/app/src/main/res/drawable/nav_item_background_standard.xml @@ -3,8 +3,8 @@ android:shape="rectangle"> \ No newline at end of file diff --git a/app/src/main/res/drawable/pdf_icon_sm.png b/app/src/main/res/drawable/pdf_icon_sm.png deleted file mode 100755 index 12e64ea..0000000 Binary files a/app/src/main/res/drawable/pdf_icon_sm.png and /dev/null differ diff --git a/app/src/main/res/drawable/search_selected.png b/app/src/main/res/drawable/search_selected.png deleted file mode 100755 index 6c543c0..0000000 Binary files a/app/src/main/res/drawable/search_selected.png and /dev/null differ diff --git a/app/src/main/res/drawable/search_unselected.png b/app/src/main/res/drawable/search_unselected.png deleted file mode 100755 index 8bee31b..0000000 Binary files a/app/src/main/res/drawable/search_unselected.png and /dev/null differ diff --git a/app/src/main/res/layout/activity_favs.xml b/app/src/main/res/layout/activity_favs.xml new file mode 100644 index 0000000..1ec1bba --- /dev/null +++ b/app/src/main/res/layout/activity_favs.xml @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_landing.xml b/app/src/main/res/layout/activity_landing.xml new file mode 100644 index 0000000..518ce45 --- /dev/null +++ b/app/src/main/res/layout/activity_landing.xml @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_noteeditor.xml b/app/src/main/res/layout/activity_noteeditor.xml new file mode 100644 index 0000000..a238ae4 --- /dev/null +++ b/app/src/main/res/layout/activity_noteeditor.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/card_row.xml b/app/src/main/res/layout/card_row.xml index 923f5df..b86e1ee 100644 --- a/app/src/main/res/layout/card_row.xml +++ b/app/src/main/res/layout/card_row.xml @@ -3,9 +3,9 @@ android:orientation="horizontal" android:layout_width="match_parent" android:layout_margin="5dp" - android:layout_height="match_parent"> + android:layout_height="wrap_content"> - + - + \ No newline at end of file diff --git a/app/src/main/res/layout/card_view.xml b/app/src/main/res/layout/card_view.xml index a9a9ac5..5508263 100644 --- a/app/src/main/res/layout/card_view.xml +++ b/app/src/main/res/layout/card_view.xml @@ -1,11 +1,12 @@ - - - + diff --git a/app/src/main/res/layout/content_landing.xml b/app/src/main/res/layout/content_landing.xml new file mode 100644 index 0000000..b2197fb --- /dev/null +++ b/app/src/main/res/layout/content_landing.xml @@ -0,0 +1,42 @@ + + + + + + + + + + diff --git a/app/src/main/res/layout/content_noteeditor.xml b/app/src/main/res/layout/content_noteeditor.xml new file mode 100644 index 0000000..365e1ed --- /dev/null +++ b/app/src/main/res/layout/content_noteeditor.xml @@ -0,0 +1,18 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/content_webview.xml b/app/src/main/res/layout/content_webview.xml new file mode 100644 index 0000000..ad5b844 --- /dev/null +++ b/app/src/main/res/layout/content_webview.xml @@ -0,0 +1,23 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/editor_activity.xml b/app/src/main/res/layout/editor_activity.xml deleted file mode 100644 index fd522ef..0000000 --- a/app/src/main/res/layout/editor_activity.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_book.xml b/app/src/main/res/layout/fragment_book.xml new file mode 100644 index 0000000..65ae58c --- /dev/null +++ b/app/src/main/res/layout/fragment_book.xml @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_book_list.xml b/app/src/main/res/layout/fragment_book_list.xml new file mode 100644 index 0000000..76b4286 --- /dev/null +++ b/app/src/main/res/layout/fragment_book_list.xml @@ -0,0 +1,25 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/grid_fragment.xml b/app/src/main/res/layout/grid_fragment.xml deleted file mode 100644 index e935b66..0000000 --- a/app/src/main/res/layout/grid_fragment.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - diff --git a/app/src/main/res/layout/gridcell.xml b/app/src/main/res/layout/gridcell.xml deleted file mode 100644 index 5292995..0000000 --- a/app/src/main/res/layout/gridcell.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/nav_drawer.xml b/app/src/main/res/layout/nav_drawer.xml index f7842f3..b077d4a 100644 --- a/app/src/main/res/layout/nav_drawer.xml +++ b/app/src/main/res/layout/nav_drawer.xml @@ -23,7 +23,7 @@ android:layout_height="wrap_content" android:layout_toRightOf="@id/nav_icon" android:layout_centerVertical="true" - android:textColor="@color/black_text" + android:textColor="@color/white_text" android:textSize="15sp" /> \ No newline at end of file diff --git a/app/src/main/res/layout/new_landing.xml b/app/src/main/res/layout/new_landing.xml deleted file mode 100644 index 3fc9ce3..0000000 --- a/app/src/main/res/layout/new_landing.xml +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/new_web_view.xml b/app/src/main/res/layout/new_web_view.xml deleted file mode 100755 index 4decb6f..0000000 --- a/app/src/main/res/layout/new_web_view.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - - - - diff --git a/app/src/main/res/layout/note_editor.xml b/app/src/main/res/layout/note_editor.xml index 8847e8b..0fe729e 100755 --- a/app/src/main/res/layout/note_editor.xml +++ b/app/src/main/res/layout/note_editor.xml @@ -3,41 +3,18 @@ http://developer.android.com/resources/samples/NotePad/index.html --> - - - - - - - - - - - - - - - + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/web_view.xml b/app/src/main/res/layout/web_view.xml new file mode 100644 index 0000000..7fd2e3d --- /dev/null +++ b/app/src/main/res/layout/web_view.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/menu/favs_options_menu.xml b/app/src/main/res/menu/favs_options_menu.xml index e6e13c1..a6b47a3 100755 --- a/app/src/main/res/menu/favs_options_menu.xml +++ b/app/src/main/res/menu/favs_options_menu.xml @@ -1,11 +1,12 @@ - + + android:icon="@drawable/ic_search_white_24dp" + android:title="@string/menu_search" + app:showAsAction="ifRoom"/> + android:icon="@drawable/ic_description_white_24dp" + app:showAsAction="never"/> \ No newline at end of file diff --git a/app/src/main/res/menu/landing_options_menu.xml b/app/src/main/res/menu/landing_options_menu.xml index 0438e33..e272c9a 100644 --- a/app/src/main/res/menu/landing_options_menu.xml +++ b/app/src/main/res/menu/landing_options_menu.xml @@ -1,8 +1,9 @@ - + + app:showAsAction="ifRoom"/> \ No newline at end of file diff --git a/app/src/main/res/menu/note_editor_menu.xml b/app/src/main/res/menu/note_editor_menu.xml new file mode 100644 index 0000000..8b57da8 --- /dev/null +++ b/app/src/main/res/menu/note_editor_menu.xml @@ -0,0 +1,16 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/menu/web_options_menu.xml b/app/src/main/res/menu/web_options_menu.xml index 9441bb9..6e98715 100755 --- a/app/src/main/res/menu/web_options_menu.xml +++ b/app/src/main/res/menu/web_options_menu.xml @@ -1,19 +1,20 @@ - + + app:showAsAction="always"/> + app:showAsAction="ifRoom"/> + app:showAsAction="ifRoom"/> + app:showAsAction="ifRoom"/> \ No newline at end of file diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 2b9170a..43732f5 100755 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -1,5 +1,8 @@ + #8BC34A + #689F38 + #FF5722 #FFBBBBBB #FFBBBBBB #006699 @@ -8,6 +11,7 @@ #FFFFFF #000000 #FF444444 + #DFFFFF #6699CC #336699 diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml new file mode 100644 index 0000000..7b1b7d3 --- /dev/null +++ b/app/src/main/res/values/dimens.xml @@ -0,0 +1,8 @@ + + 180dp + 16dp + 16dp + + 16dp + 16dp + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 9e91f6a..047d3b5 100755 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -9,28 +9,21 @@ View Downloaded Files View Files Delete Selected File - Rate this app webcontent content Select File to View View No Application Available to View File - http://cnx.org There is nothing to save. Shared via the OpenStax CNX app. Tell a friend about - savedNoteContent - http://m.cnx.org Data needed to share not available. Use the back button to refresh and try again. Cannot create note. Please try again. notes_url=?\' OpenStaxCNX\/ - .html text/plain Favorites Downloaded Files - Select Text then tap the text - Select Text Drawer Open Drawer Close OpenStaxCNX @@ -61,26 +54,8 @@ Images of Memorable Cases Understanding Basic Music Theory Programming Fundamentals - Coming Soon! - Sociology - Economics - Anatomy - Introductory, algebra-based, two-semester book - Intro book covering current events - Multi-semester biology book for science majors - Introductory biology book for non-science majors - Two-semester anatomy and physiology - One-semester introduction to statistics for students who are not mathematics or engineering majors. - A two-semester principles of economics sequence - Designed for a one-semester macroeconomics introductory course - Designed for a one-semester microeconomics introductory course - Intended for college-level Precalculus students - For a two-semester American history sequence - Introductory Psychology book College Algebra - OpenStax College College Algebra Algebra and Trigonometry - OpenStax College Algebra and Trigonometry nav_icon nav_item open<b>stax</b> cnx @@ -106,5 +81,32 @@ chemistry-atoms Prealgebra prealgebra + physics + sociology2e + biology + concepts + anatomy + statistics + econ + macro + micro + precalculus + psychology + history + chemistry + algebra + trig + ap-physics + ap-macro + ap-micro + Share + Export Note + Delete Note + Permission is needed to store the exported notes on your device + OK + University Physics Volume 1 + University Physics Volume 2 + University Physics Volume 3 + Astronomy \ No newline at end of file diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 1dbfcfe..fe103a5 100755 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -1,6 +1,12 @@ - + @@ -10,24 +16,14 @@ - - + - + @@ -65,10 +61,19 @@ @drawable/lenses_window_title_background - + + + diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml index 88c115d..ec30697 100755 --- a/app/src/main/res/values/themes.xml +++ b/app/src/main/res/values/themes.xml @@ -13,45 +13,6 @@ @style/WindowTitle @style/WindowTitleBackground - @style/Widget.Button @style/Widget.EditText - @style/Widget.ListView - @style/Widget.CNXAndroidTheme.ActionBar - - \ No newline at end of file