From 4186327981c5cbbd1dd9f6c13a2dc881bf1e2306 Mon Sep 17 00:00:00 2001
From: Apostolof <apotwohd@gmail.com>
Date: Wed, 16 Nov 2016 03:16:56 +0200
Subject: [PATCH] Code rearrange and cleaned, moved card_view backgroundColor
 to theme Work on topic layout, activity and helper classes Thumbnail images
 may not appear or be mixed app --> holder bug!!

---
 app/build.gradle                              |  11 +-
 app/src/main/AndroidManifest.xml              |   3 +-
 app/src/main/assets/style.css                 | 838 ++++++++++++++++++
 .../thmmy/mthmmy/activities/BaseActivity.java |  32 +-
 .../mthmmy/activities/LoginActivity.java      |  54 +-
 .../thmmy/mthmmy/activities/MainActivity.java |   6 +
 .../mthmmy/activities/TopicActivity.java      | 204 +++--
 .../main/java/gr/thmmy/mthmmy/data/Post.java  |  15 +-
 .../utils/CircularNetworkImageView.java       |  87 ++
 .../thmmy/mthmmy/utils/ImageController.java   |  63 ++
 .../gr/thmmy/mthmmy/utils/LruBitmapCache.java |  41 +
 app/src/main/res/anim/push_right_in.xml       |   8 +
 app/src/main/res/anim/push_right_out.xml      |   8 +
 app/src/main/res/drawable/page_first.xml      |   8 +
 app/src/main/res/drawable/page_last.xml       |   8 +
 app/src/main/res/drawable/page_next.xml       |   8 +
 app/src/main/res/drawable/page_previous.xml   |   8 +
 app/src/main/res/layout/activity_main.xml     |  12 +-
 app/src/main/res/layout/activity_topic.xml    |  42 +-
 .../res/layout/activity_topic_post_row.xml    | 207 +++--
 app/src/main/res/layout/fragment_recent.xml   |  21 +-
 .../main/res/layout/fragment_recent_row.xml   | 101 +--
 app/src/main/res/layout/topic_page_select.xml |  14 +
 app/src/main/res/values/colors.xml            |  21 +-
 app/src/main/res/values/styles.xml            |   1 +
 25 files changed, 1490 insertions(+), 331 deletions(-)
 create mode 100644 app/src/main/assets/style.css
 create mode 100644 app/src/main/java/gr/thmmy/mthmmy/utils/CircularNetworkImageView.java
 create mode 100644 app/src/main/java/gr/thmmy/mthmmy/utils/ImageController.java
 create mode 100644 app/src/main/java/gr/thmmy/mthmmy/utils/LruBitmapCache.java
 create mode 100644 app/src/main/res/anim/push_right_in.xml
 create mode 100644 app/src/main/res/anim/push_right_out.xml
 create mode 100644 app/src/main/res/drawable/page_first.xml
 create mode 100644 app/src/main/res/drawable/page_last.xml
 create mode 100644 app/src/main/res/drawable/page_next.xml
 create mode 100644 app/src/main/res/drawable/page_previous.xml
 create mode 100644 app/src/main/res/layout/topic_page_select.xml

diff --git a/app/build.gradle b/app/build.gradle
index 4106623e..e3f337ea 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -21,13 +21,14 @@ android {
 
 dependencies {
     compile fileTree(dir: 'libs', include: ['*.jar'])
-    compile 'com.android.support:appcompat-v7:25.0.0'
-    compile 'com.android.support:design:25.0.0'
+    compile 'com.android.support:appcompat-v7:25.0.1'
+    compile 'com.android.support:design:25.0.1'
     compile 'com.squareup.okhttp3:okhttp:3.4.1'
     compile 'org.jsoup:jsoup:1.10.1'
-    compile 'com.android.support:support-v4:25.0.0'
-    compile 'com.android.support:cardview-v7:25.0.0'
-    compile 'com.android.support:recyclerview-v7:25.0.0'
+    compile 'com.android.support:support-v4:25.0.1'
+    compile 'com.android.support:cardview-v7:25.0.1'
+    compile 'com.android.support:recyclerview-v7:25.0.1'
+    compile 'com.android.volley:volley:1.0.0'
     compile 'com.github.franmontiel:PersistentCookieJar:v1.0.0'
     compile('com.mikepenz:materialdrawer:5.7.0@aar') {
         transitive = true
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index a41b86e0..7611e6f0 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -6,6 +6,7 @@
     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
 
     <application
+        android:name=".utils.ImageController"
         android:allowBackup="true"
         android:icon="@mipmap/ic_launcher"
         android:label="@string/app_name"
@@ -23,8 +24,8 @@
         </activity>
         <activity
             android:name=".activities.MainActivity"
-            android:label="@string/app_name"
             android:configChanges="orientation|screenSize"
+            android:label="@string/app_name"
             android:launchMode="singleTop"
             android:theme="@style/AppTheme.NoActionBar">
         </activity>
diff --git a/app/src/main/assets/style.css b/app/src/main/assets/style.css
new file mode 100644
index 00000000..fe34bcac
--- /dev/null
+++ b/app/src/main/assets/style.css
@@ -0,0 +1,838 @@
+/* TP specific classes */
+.sitemap{
+	margin: 0;
+	padding: 0;
+	list-style: none;
+}
+.sitemap_topheader{
+	background: #ECEDF3;
+	border-bottom: solid 1px #ffffff;
+	padding: 4px;
+}
+
+.sitemap_header{
+	background: #ECEDF3;
+	border-bottom: solid 1px #ffffff;
+	padding: 4px;
+	display: block;
+	font-weight: bold;
+ }
+
+.sitemap_header_active{
+	background: #C8D6E1;
+	border-bottom: solid 1px #ffffff;
+	padding: 4px;
+	display: block;
+	font-weight: bold;
+}
+
+.sitemap_header:hover , .sitemap_header_active:hover{
+	background: #DBE4ED;
+	border-bottom: solid 1px #ffffff;
+	padding: 4px;
+	display: block;
+	text-decoration: none;
+}
+
+/* TP other styles */
+ul#articlelist
+{
+	margin: 0;
+	padding: 0.5ex 0;
+	list-style: none;
+}
+ul#catlist
+{
+	margin: 0;
+	padding: 0;
+	list-style: none;
+	border-top: solid 1px #d0d0d0;
+}
+
+ul#articlelist li
+{
+	margin: 0;
+	display: block;
+	padding: 0 0 0 3ex;
+	background: url(images/divider.gif) no-repeat 5px 3px;
+}
+ul#catlist li
+{
+	display: block;
+	padding: 0 0 0 3ex;
+	margin: 0;
+}
+
+/* TP rss feed styles */
+.rss_title{
+ font-weight: bold;
+}
+
+.rss_body{
+	margin-bottom: 1ex;
+}
+
+.rss_image{
+	margin: 4px 0 4px 0;
+}
+/* Normal, standard links. */
+a:link, a:visited
+{
+	color: #004080;
+	text-decoration: none;
+}
+a:hover
+{
+	text-decoration: underline;
+}
+
+/* Navigation links - for the link tree. */
+.nav, .nav:link, .nav:visited
+{
+	color: #000000;
+	text-decoration: none;
+}
+a.nav:hover
+{
+	color: #cc3333;
+}
+
+/* Tables should show empty cells. */
+table
+{
+	empty-cells: show;
+}
+/* The main body of the entire forum. */
+body
+{
+	background: white;
+	margin: 0;
+	padding: 0;
+}
+/* By default (td, body..) use verdana in black. */
+body, td, th , tr
+{
+	color: #000000;
+	font-size: small;
+	font-family: Trebuchet, sans-serif;
+}
+
+
+
+/* Input boxes - just a bit smaller than normal so they align well. */
+input, textarea, button
+{
+	color: #000000;
+	font-family: Trebuchet, sans-serif;
+	border: 1px solid #aaa;
+}
+input, button
+{
+	font-size: 90%;
+}
+
+textarea
+{
+	font-size: 100%;
+	color: #000000;
+	font-family: Trebuchet, sans-serif;
+}
+
+/* All input elements that are checkboxes or radio buttons. */
+input.check
+{
+}
+
+/* Selects are a bit smaller, because it makes them look even better 8). */
+select
+{
+	font-size: 90%;
+	font-weight: normal;
+	color: #000000;
+	font-family: Trebuchet, sans-serif;
+}
+
+/* Standard horizontal rule.. ([hr], etc.) */
+hr, .hrcolor
+{
+	height: 1px;
+	border: 0;
+	color: #666666;
+	background-color: #666666;
+}
+
+/* No image should have a border when linked */
+a img
+{
+	border: 0;
+}
+/* A quote, perhaps from another post. */
+.quote
+{	
+	font-family: tahoma, sans-serif;
+	color: #000000;
+	background-color: #D7DAEC;
+	border: 1px solid #000000;
+	margin: 1px;
+	padding: 1px;
+	font-size: x-small;
+	line-height: 1.4em;
+}
+
+/* A code block - maybe even PHP ;). */
+.code
+{
+	color: #000000;
+	background-color: #dddddd;
+	font-family: "Comic Sans MS", "times new roman", monospace;
+	font-size: x-small;
+	line-height: 1.3em;
+	/* Put a nice border around it. */
+	border: 1px solid #000000;
+	margin: 1px auto 1px auto;
+	padding: 1px;
+	width: 99%;
+	/* Don't wrap its contents, and show scrollbars. */
+	white-space: nowrap;
+	overflow: auto;
+	/* Stop after about 24 lines, and just show a scrollbar. */
+	max-height: 24em;
+}
+
+/* The "Quote:" and "Code:" header parts... */
+.quoteheader, .codeheader
+{
+	font-family: tahoma, sans-serif;
+	color: #000000;
+	text-decoration: none;
+	font-style: normal;
+	font-weight: bold;
+	font-size: x-small;
+	line-height: 1.2em;
+}
+
+/* Generally, those [?] icons.  This makes your cursor a help icon. */
+.help
+{
+	cursor: help;
+}
+
+/* /me uses this a lot. (emote, try typing /me in a post.) */
+.meaction
+{
+	color: red;
+}
+
+/* The main post box - this makes it as wide as possible. */
+.editor
+{
+	width: 96%;
+}
+
+/* Highlighted text - such as search results. */
+.highlight
+{
+	background-color: yellow;
+	font-weight: bold;
+	color: black;
+}
+
+/* Alternating backgrounds for posts, and several other sections of the forum. */
+.windowbg
+{
+	color: #000000;
+	background-color: #E3E6E1;
+}
+.windowbg2
+{
+	color: #000000;
+	background-color: #F2F5F0;
+}
+.windowbg3
+{
+	color: #000000;
+	background-color: #E1E8E0;
+}
+/* the today container in calendar */
+.calendar_today
+{
+	background-color: #FFFFFF;
+}
+
+/* These are used primarily for titles, but also for headers (the row that says what everything in the table is.) */
+.titlebg, tr.titlebg th, tr.titlebg td, .titlebg2, tr.titlebg2 th, tr.titlebg2 td
+{
+	background-color: #A3A392;
+	padding-top: 10px;
+}
+.titlebg, tr.titlebg th, tr.titlebg td, .titlebg a:link, .titlebg a:visited, .titlebg2, tr.titlebg2 th, tr.titlebg2 td, .titlebg2 a:link, .titlebg2 a:visited
+{
+	color: white;
+	font-style: normal;
+}
+.titlebg a:hover
+{
+	color: #dfdfdf;
+}
+
+.catbg, .catbg2, .catbg3
+{
+	font-weight: bold;
+	background-color: #e4e2e0;
+	color: #000000;
+}
+/* This is used for tables that have a grid/border background color (such as the topic listing.) */
+.bordercolor
+{
+	background-color: white;
+}
+
+/* This is used on tables that should just have a border around them. */
+.tborder
+{
+	background-color: #FFFFFF;
+}
+
+/* Default font sizes: small (8pt), normal (10pt), and large (14pt). */
+.smalltext
+{
+	font-size: x-small;
+	font-family: tahoma, sans-serif;
+}
+.middletext
+{
+	font-size: 90%;
+}
+.normaltext
+{
+	font-size: small;
+}
+.largetext
+{
+	font-size: large;
+}
+
+
+/* Posts and personal messages displayed throughout the forum. */
+.post, .personalmessage
+{
+	width: 100%;
+	overflow: auto;
+	line-height: 1.3em;
+}
+
+/* All the signatures used in the forum.  If your forum users use Mozilla, Opera, or Safari, you might add max-height here ;). */
+.signature
+{
+	width: 100%;
+	overflow: auto;
+	padding-bottom: 3px;
+	line-height: 1.3em;
+}
+
+/* Sometimes there will be an error when you post */
+.error
+{
+	color: red;
+}
+
+
+/* definitions for the main tab, active means the tab reflects which page is displayed */
+.maintab_first, .maintab_back, .maintab_last, .maintab_active_first, .maintab_active_back, .maintab_active_last
+{
+	text-transform: uppercase;
+	vertical-align: top;
+}
+.maintab_back, .maintab_active_back
+{
+	text-decoration: none;
+	font-size:  9px;
+	vertical-align: top;
+	padding: 2px 6px 6px 6px;
+	font-family: Trebuchet, sans-serif;
+}
+
+.maintab_first
+{
+	display: none;
+}
+.maintab_back
+{
+}
+.maintab_last
+{
+	display: none;
+}
+.maintab_active_first
+{
+	display: none;
+}
+.maintab_active_back
+{
+	background: #ffd;
+}
+.maintab_active_last
+{
+	display: none;
+}
+
+/* how links behave in main tab. */
+.maintab_back a:link , .maintab_back a:visited, .maintab_active_back a:link , .maintab_active_back a:visited
+{
+	color: black;
+	text-decoration: none;
+}
+
+.maintab_back a:hover, .maintab_active_back a:hover
+{
+	text-decoration: underline;
+}
+/* definitions for the mirror tab */
+.mirrortab_first, .mirrortab_back, .mirrortab_last, .mirrortab_active_first, .mirrortab_active_back, .mirrortab_active_last
+{
+	color: black;
+	text-transform: uppercase;
+	vertical-align: top;
+}
+.mirrortab_back, .mirrortab_active_back
+{
+	text-decoration: none;
+	font-size: 9px;
+	vertical-align: bottom;
+	padding: 6px 6px 2px 6px;
+	font-family: Trebuchet, sans-serif;
+}
+
+.mirrortab_first
+{
+	display: none;
+}
+.mirrortab_back
+{
+}
+.mirrortab_last
+{
+	display: none;
+}
+.mirrortab_active_first
+{
+	display: none;
+}
+.mirrortab_active_back
+{
+	background: #ffd;
+}
+.mirrortab_active_last
+{
+	display: none;
+}
+
+/* how links behave in mirror tab. */
+.mirrortab_back a:link , .mirrortab_back a:visited, .mirrortab_active_back a:link , .mirrortab_active_back a:visited
+{
+	color: black;
+	text-decoration: none;
+}
+
+.mirrortab_back a:hover, .mirrortab_active_back a:hover
+{
+	text-decoration: underline;
+}
+
+/* The AJAX notifier */
+#ajax_in_progress
+{
+	background: #32CD32;
+	color: white;
+	text-align: center;
+	font-weight: bold;
+	font-size: 18pt;
+	padding: 3px;
+	width: 100%;
+	position: fixed;
+	top: 0;
+	left: 0;
+}
+
+/* ################################### */
+
+#left
+{
+	background: url(images/img2/leftbg.jpg) repeat-y white;
+	margin: auto;
+}
+#right
+{
+	background: url(images/img2/rightbg.gif) repeat-y top right;
+}
+#top
+{
+	background: url(images/img2/top.jpg) repeat-x;
+}
+#topleft
+{
+	background: url(images/img2/lefttop.jpg) no-repeat;
+}
+#topright
+{
+	background: url(images/img2/logo.jpg) no-repeat top right;
+}
+#main
+{
+	padding: 100px 81px 20px 81px;
+}
+/* #################### */
+
+ul#menubox
+{
+	padding: 0 0 44px 0;
+	margin: 0;
+	list-style: none;
+	position: absolute;
+	left: 0;
+	top: 87px;
+	background: url(images/img2/leftbot.gif) no-repeat bottom left;
+}
+#smfshout
+{
+	padding: 6px;
+	font-size: xx-small;
+}
+.smfshout_delete
+{
+	border: solid 1px #888;
+	background: white;
+	padding: 1px;
+}
+.smfshout_body
+{
+	border: solid 1px #888;
+	background: white;
+	padding: 3px;
+	text-align: left;
+}
+.smfshout_frame
+{
+	padding: 5px 0 0 0;
+}
+ul#menubox li
+{
+	padding: 0 0 0 8px;
+	width: 65px;
+	height: 44px;
+	margin: 0;
+	background: url(images/img2/left.gif) repeat-y;
+}
+ul#menubox li a
+{
+	font-family: "Comic Sans MS", serif;
+	display: block;
+	color: black;
+	width: 45px;
+	height: 42px;
+	padding: 0 0 0 6px;
+}
+ul#menubox li a span
+{
+	display: none;
+}
+
+ul#menubox li.m1
+{
+	padding-left: 2px;
+}
+ul#menubox li.m2
+{
+	padding-left: 6px;
+}
+ul#menubox li.m3
+{
+	padding-left: 10px;
+}
+ul#menubox li.m4
+{
+	padding-left: 14px;
+}
+ul#menubox li.m5
+{
+	padding-left: 18px;
+}
+
+/* home button */
+a#homebtn
+{
+	background: url(images/features/home.gif) no-repeat;
+}
+a#homebtn:hover
+{
+	background: url(images/features/home-over.gif) no-repeat;
+}
+a.chosen#homebtn
+{
+	background: url(images/features/home-select.gif) no-repeat;
+}
+/* help button */
+a#helpbtn
+{
+	background: url(images/features/help.gif) no-repeat;
+}
+a#helpbtn:hover
+{
+	background: url(images/features/help-over.gif) no-repeat;
+}
+a.chosen#helpbtn
+{
+	background: url(images/features/help-select.gif) no-repeat;
+}
+/* forum button */
+a#forumbtn
+{
+	background: url(images/features/forum.gif) no-repeat;
+}
+a#forumbtn:hover
+{
+	background: url(images/features/forum-over.gif) no-repeat;
+}
+a.chosen#forumbtn
+{
+	background: url(images/features/forum-select.gif) no-repeat;
+}
+/* search button */
+a#searchbtn
+{
+	background: url(images/features/search.gif) no-repeat;
+}
+a#searchbtn:hover
+{
+	background: url(images/features/search-over.gif) no-repeat;
+}
+a.chosen#searchbtn
+{
+	background: url(images/features/search-select.gif) no-repeat;
+}
+/* profile button */
+a#profilebtn
+{
+	background: url(images/features/profile.gif) no-repeat;
+}
+a#profilebtn:hover
+{
+	background: url(images/features/profile-over.gif) no-repeat;
+}
+a.chosen#profilebtn
+{
+	background: url(images/features/profile-select.gif) no-repeat;
+}
+/* admin button */
+a#adminbtn
+{
+	background: url(images/features/admin.gif) no-repeat;
+}
+a#adminbtn:hover
+{
+	background: url(images/features/admin-over.gif) no-repeat;
+}
+a.chosen#adminbtn
+{
+	background: url(images/features/admin-select.gif) no-repeat;
+}
+/* pm button */
+a#pmbtn
+{
+	background: url(images/features/pm.gif) no-repeat;
+}
+a#pmbtn:hover
+{
+	background: url(images/features/pm-over.gif) no-repeat;
+}
+a.chosen#pmbtn
+{
+	background: url(images/features/pm-select.gif) no-repeat;
+}
+/* calendar button */
+a#calendarbtn
+{
+	background: url(images/features/calendar.gif) no-repeat;
+}
+a#calendarbtn:hover
+{
+	background: url(images/features/calendar-over.gif) no-repeat;
+}
+a.chosen#calendarbtn
+{
+	background: url(images/features/calendar-select.gif) no-repeat;
+}
+/* register button */
+a#registerbtn
+{
+	background: url(images/features/register.gif) no-repeat;
+}
+a#registerbtn:hover
+{
+	background: url(images/features/register-over.gif) no-repeat;
+}
+a.chosen#registerbtn
+{
+	background: url(images/features/register-select.gif) no-repeat;
+}
+/* login button */
+a#loginbtn
+{
+	background: url(images/features/login.gif) no-repeat;
+}
+a#loginbtn:hover
+{
+	background: url(images/features/login-over.gif) no-repeat;
+}
+a.chosen#loginbtn
+{
+	background: url(images/features/login-select.gif) no-repeat;
+}
+/* logout button */
+a#logoutbtn
+{
+	background: url(images/features/logout.gif) no-repeat;
+}
+a#logoutbtn:hover
+{
+	background: url(images/features/logout-over.gif) no-repeat;
+}
+a.chosen#logoutbtn
+{
+	background: url(images/features/logout-select.gif) no-repeat;
+}
+/* shop button */
+a#shopbtn
+{
+	background: url(images/features/shop.gif) no-repeat;
+}
+a#shopbtn:hover
+{
+	background: url(images/features/shop-over.gif) no-repeat;
+}
+a.chosen#shopbtn
+{
+	background: url(images/features/shop-select.gif) no-repeat;
+}
+/* arcade button */
+a#arcadebtn
+{
+	background: url(images/features/arcade.gif) no-repeat;
+}
+a#arcadebtn:hover
+{
+	background: url(images/features/arcade-over.gif) no-repeat;
+}
+a.chosen#arcadebtn
+{
+	background: url(images/features/arcade-select.gif) no-repeat;
+}
+/* gallery button */
+a#gallerybtn
+{
+	background: url(images/features/gallery.gif) no-repeat;
+}
+a#gallerybtn:hover
+{
+	background: url(images/features/gallery-over.gif) no-repeat;
+}
+a.chosen#gallerybtn
+{
+	background: url(images/features/gallery-select.gif) no-repeat;
+}
+
+#myuser
+{
+	font-size: small;
+	padding-bottom: 1em;
+}
+#ava
+{
+	float: right;
+	margin-right: 10px;
+	text-align: right;
+	font-family: "Comic Sans MS", sans-serif;
+}
+#bodyarea
+{
+	border-bottom: solid 1px #ddd;
+	margin-bottom: 1em;
+	padding-bottom: 1em;
+}
+.clearfix:after 
+{
+	 content: "."; 
+	 display: block; 
+	 height: 0; 
+	 clear: both; 
+	 visibility: hidden;
+}
+
+.clearfix 
+{
+	display: inline-block;
+}
+
+/* Hides from IE-mac \*/
+* html .clearfix , * html .catbg, * html .catbg2, * html .catbg3
+{
+	height: 1%;
+}
+/* End hide from IE-mac */
+
+ul#topmenu
+{
+	position: absolute;
+	top: 45px;
+	margin: 0 195px 0 40px;
+	padding: 0 5px 4px 5px;
+	list-style: none;
+	font-weight: bold;
+	font-size: 11px;
+	border-bottom: groove 2px #EDF4ED;
+}
+ul#topmenu li
+{
+	float: left;
+}
+ul#topmenu li a
+{
+	display: block;
+	padding: 2px 5px 2px 5px;
+	border-style: solid solid;
+	border-width: 0px 1px;
+	border-color: #E3E6E1;
+	font-size: 11px;
+	color: #004080;
+}
+ul#topmenu li a:hover
+{
+	background: #E3E6E1;
+	text-decoration: none;
+	color: #E78E13;
+}
+#pages
+{
+	padding-top: 1em;
+}
+#uppersection
+{
+	padding: 1em;
+	background: url(images/img/upper.jpg) repeat-x;
+}
+.errorbar
+{
+	color: white;
+	font-size: xx-small;
+	text-align: center;
+	padding: 3px;
+	border-bottom: solid 1px black;
+}
+#errorpanel
+{
+	position: absolute;
+	top: 0;
+	left: 0;
+	z-index: 90;
+	width: 100%;
+}
\ No newline at end of file
diff --git a/app/src/main/java/gr/thmmy/mthmmy/activities/BaseActivity.java b/app/src/main/java/gr/thmmy/mthmmy/activities/BaseActivity.java
index 483787e8..fb0afd67 100644
--- a/app/src/main/java/gr/thmmy/mthmmy/activities/BaseActivity.java
+++ b/app/src/main/java/gr/thmmy/mthmmy/activities/BaseActivity.java
@@ -13,13 +13,24 @@ import okhttp3.OkHttpClient;
 
 public class BaseActivity extends AppCompatActivity {
 
-    private static boolean init =false;   //To initialize stuff only once per app start
-
     protected static OkHttpClient client;
     protected static CookieJar cookieJar;
     protected static SharedPrefsCookiePersistor sharedPrefsCookiePersistor;
-
     protected static Thmmy.LoginData loginData;
+    private static boolean init =false;   //To initialize stuff only once per app start
+
+    public static CookieJar getCookieJar()
+    {
+        return cookieJar;
+    }
+
+    public static SharedPrefsCookiePersistor getSharedPrefsCookiePersistor() {
+        return sharedPrefsCookiePersistor;
+    }
+
+    public static OkHttpClient getClient() {
+        return client;
+    }
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
@@ -39,20 +50,7 @@ public class BaseActivity extends AppCompatActivity {
 
     }
 
-    public static CookieJar getCookieJar()
-    {
-        return cookieJar;
-    }
-
-    public static SharedPrefsCookiePersistor getSharedPrefsCookiePersistor() {
-        return sharedPrefsCookiePersistor;
-    }
-
-    public static OkHttpClient getClient() {
-        return client;
-    }
-
     public void setLoginData(Thmmy.LoginData loginData) {
-        this.loginData = loginData;
+        BaseActivity.loginData = loginData;
     }
 }
diff --git a/app/src/main/java/gr/thmmy/mthmmy/activities/LoginActivity.java b/app/src/main/java/gr/thmmy/mthmmy/activities/LoginActivity.java
index ee086929..d62c9334 100644
--- a/app/src/main/java/gr/thmmy/mthmmy/activities/LoginActivity.java
+++ b/app/src/main/java/gr/thmmy/mthmmy/activities/LoginActivity.java
@@ -23,19 +23,19 @@ import static gr.thmmy.mthmmy.utils.Thmmy.login;
 public class LoginActivity extends BaseActivity {
     private static final String TAG = "LoginActivity";
     private static boolean passed=false; //becomes true after (guest) login - to redirect to Main
-    private EditText inputUsername;
-    private EditText inputPassword;
     Button btnLogin;
     Button btnGuest;
+    private EditText inputUsername;
+    private EditText inputPassword;
 
     @Override
     public void onCreate(Bundle savedInstanceState) {
-        if(passed)  //redirect to MainActivity if user passed this one at least once
+        /*if(passed)  //redirect to MainActivity if user passed this one at least once
         {
             Intent intent = new Intent(LoginActivity.this, MainActivity.class);
             startActivity(intent);
             finish();
-        }
+        }*/
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_login);
 
@@ -89,6 +89,29 @@ public class LoginActivity extends BaseActivity {
         btnLogin.setEnabled(true);
     }
 
+    public boolean validate() {
+        boolean valid = true;
+
+        String email = inputUsername.getText().toString();
+        String password = inputPassword.getText().toString();
+
+        if (email.isEmpty()) {
+            inputUsername.setError("Enter a valid username");
+            valid = false;
+        } else {
+            inputUsername.setError(null);
+        }
+
+        if (password.isEmpty()) {
+            inputPassword.setError("Enter a valid password");
+            valid = false;
+        } else {
+            inputPassword.setError(null);
+        }
+
+        return valid;
+    }
+
     private class LoginTask extends AsyncTask<String, Void, Integer>
     {
         ProgressDialog progressDialog;
@@ -154,28 +177,5 @@ public class LoginActivity extends BaseActivity {
             progressDialog.dismiss();
         }
     }
-
-    public boolean validate() {
-        boolean valid = true;
-
-        String email = inputUsername.getText().toString();
-        String password = inputPassword.getText().toString();
-
-        if (email.isEmpty()) {
-            inputUsername.setError("Enter a valid username");
-            valid = false;
-        } else {
-            inputUsername.setError(null);
-        }
-
-        if (password.isEmpty()) {
-            inputPassword.setError("Enter a valid password");
-            valid = false;
-        } else {
-            inputPassword.setError(null);
-        }
-
-        return valid;
-    }
 }
 
diff --git a/app/src/main/java/gr/thmmy/mthmmy/activities/MainActivity.java b/app/src/main/java/gr/thmmy/mthmmy/activities/MainActivity.java
index 8d38bf1e..aea722cb 100644
--- a/app/src/main/java/gr/thmmy/mthmmy/activities/MainActivity.java
+++ b/app/src/main/java/gr/thmmy/mthmmy/activities/MainActivity.java
@@ -79,6 +79,12 @@ public class MainActivity extends BaseActivity implements RecentFragment.OnListF
         }
         else if (id == R.id.action_logout)
             new LogoutTask().execute();
+        else{
+            Intent intent = new Intent(MainActivity.this,LoginActivity.class);
+            startActivity(intent);
+            finish();
+            overridePendingTransition(R.anim.push_right_in, R.anim.push_right_out);
+        }
 
         return super.onOptionsItemSelected(item);
     }
diff --git a/app/src/main/java/gr/thmmy/mthmmy/activities/TopicActivity.java b/app/src/main/java/gr/thmmy/mthmmy/activities/TopicActivity.java
index b153e47f..3dbadff0 100644
--- a/app/src/main/java/gr/thmmy/mthmmy/activities/TopicActivity.java
+++ b/app/src/main/java/gr/thmmy/mthmmy/activities/TopicActivity.java
@@ -1,20 +1,32 @@
 package gr.thmmy.mthmmy.activities;
 
+import android.content.Intent;
 import android.os.AsyncTask;
 import android.os.Bundle;
 import android.support.v7.app.ActionBar;
 import android.support.v7.widget.LinearLayoutManager;
 import android.support.v7.widget.RecyclerView;
 import android.util.Log;
+import android.util.SparseArray;
+import android.view.Gravity;
+import android.view.KeyEvent;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
+import android.view.inputmethod.EditorInfo;
 import android.webkit.WebView;
+import android.widget.EditText;
+import android.widget.LinearLayout;
 import android.widget.ProgressBar;
 import android.widget.TextView;
+import android.widget.Toast;
+
+import com.android.volley.toolbox.ImageLoader;
 
 import org.jsoup.Jsoup;
 import org.jsoup.nodes.Document;
+import org.jsoup.nodes.Element;
+import org.jsoup.select.Elements;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -23,46 +35,87 @@ import javax.net.ssl.SSLHandshakeException;
 
 import gr.thmmy.mthmmy.R;
 import gr.thmmy.mthmmy.data.Post;
+import gr.thmmy.mthmmy.utils.CircularNetworkImageView;
 import gr.thmmy.mthmmy.utils.CustomRecyclerView;
+import gr.thmmy.mthmmy.utils.ImageController;
 import okhttp3.Request;
 import okhttp3.Response;
 
 public class TopicActivity extends BaseActivity {
-
-    private CustomRecyclerView recyclerView;
+    private ImageLoader imageLoader = ImageController.getInstance().getImageLoader();
     private TopicAdapter topicAdapter;
     private ProgressBar progressBar;
-
     private List<Post> postsList;
+    private EditText pageSelect;
+
+    private int thisPage = 1;
+    private SparseArray<String> pagesUrls = new SparseArray<>();
+    private String base_url = "";
+    private int numberOfPages = 1;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_topic);
 
+        Bundle extras = getIntent().getExtras();
+        final String topicTitle = getIntent().getExtras().getString("TOPIC_TITLE");
+
         progressBar = (ProgressBar) findViewById(R.id.progressBar);
 
+        if (imageLoader == null)
+            imageLoader = ImageController.getInstance().getImageLoader();
 
-        Bundle extras = getIntent().getExtras();
         ActionBar actionbar = getSupportActionBar();
-        if(actionbar!=null)
-            actionbar.setTitle(extras.getString("TOPIC_TITLE"));
+        if (actionbar != null)
+            actionbar.setTitle(topicTitle);
+
+        ActionBar.LayoutParams lp = new ActionBar.LayoutParams(
+                LinearLayout.LayoutParams.WRAP_CONTENT
+                , LinearLayout.LayoutParams.WRAP_CONTENT
+                , Gravity.END | Gravity.CENTER_VERTICAL);
+        View customNav = LayoutInflater.from(this).inflate(R.layout.topic_page_select, null);
+
+        pageSelect = (EditText) customNav.findViewById(R.id.select_page);
+        pageSelect.setOnEditorActionListener(new TextView.OnEditorActionListener() {
+            @Override
+            public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
+                if (actionId == EditorInfo.IME_ACTION_GO) {
+                    int pageRequested = Integer.parseInt(pageSelect.getText().toString());
+                    if (pageRequested == thisPage) {
+                        Toast.makeText(getBaseContext()
+                                , "You already are here!", Toast.LENGTH_LONG).show();
+                    } else if (pageRequested >= 1 && pageRequested <= numberOfPages) {
+                        Intent intent = getIntent();
+                        intent.putExtra("TOPIC_URL", pagesUrls.get(pageRequested - 1));
+                        intent.putExtra("TOPIC_TITLE", topicTitle);
+                        finish();
+                        startActivity(intent);
+                    } else {
+                        Toast.makeText(getBaseContext()
+                                , "There is no such page!", Toast.LENGTH_LONG).show();
+                    }
+                }
+                return true;
+            }
+        });
+        assert actionbar != null;
+        actionbar.setCustomView(customNav, lp);
+        actionbar.setDisplayShowCustomEnabled(true);
 
-        postsList = new ArrayList<>();
 
+        postsList = new ArrayList<>();
         topicAdapter = new TopicAdapter();
 
-        recyclerView = (CustomRecyclerView) findViewById(R.id.list);
-        recyclerView.setLayoutManager(new LinearLayoutManager(findViewById(R.id.list).getContext()));
+        CustomRecyclerView recyclerView = (CustomRecyclerView) findViewById(R.id.posts_list);
+        recyclerView.setLayoutManager(new LinearLayoutManager(findViewById(R.id.posts_list).getContext()));
         recyclerView.setAdapter(topicAdapter);
 
         new TopicTask().execute(extras.getString("TOPIC_URL"));
-
     }
 
 
-    private class TopicAdapter extends RecyclerView.Adapter<TopicAdapter.ViewHolder>
-    {
+    private class TopicAdapter extends RecyclerView.Adapter<TopicAdapter.ViewHolder> {
         @Override
         public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
             View view = LayoutInflater.from(parent.getContext())
@@ -71,29 +124,19 @@ public class TopicActivity extends BaseActivity {
         }
 
 
-
         @Override
         public void onBindViewHolder(final ViewHolder holder, final int position) {
 
+//----------------------------------- Holder behaves erratically -----------------------------------
+            if (postsList.get(position).getThumbnailUrl() != "") {
+                holder.mThumbnailView.setImageUrl(postsList.get(position).getThumbnailUrl(), imageLoader);
+            }
             holder.mAuthorView.setText(postsList.get(position).getAuthor());
-            holder.mDateTimeView.setText(postsList.get(position).getDateTime());
-            holder.mContentView.loadData(postsList.get(position).getContent(), "text/html", null);
-
-//            holder.topic = recentList.get(position);
-//
-//            holder.mView.setOnClickListener(new View.OnClickListener() {
-//                @Override
-//                public void onClick(View v) {
-//
-//                    if (null != mListener) {
-//                        // Notify the active callbacks interface (the activity, if the
-//                        // fragment is attached to one) that an item has been selected.
-//                        mListener.onFragmentInteraction(holder.topic);  //?
-//
-//                    }
-//
-//                }
-//            });
+            holder.mSubjectView.setText(postsList.get(position).getDateTime());
+            holder.mContentView.loadDataWithBaseURL("file:///android_asset/"
+                    , postsList.get(position).getContent()
+                    , "text/html", "UTF-8", null);
+//----------------------------------- Holder behaves erratically -----------------------------------
         }
 
         @Override
@@ -101,30 +144,30 @@ public class TopicActivity extends BaseActivity {
             return postsList.size();
         }
 
-        public class ViewHolder extends RecyclerView.ViewHolder {
-            public final View mView;
-            public final TextView mAuthorView;
-            public final WebView mContentView;
-            public final TextView mDateTimeView;
+        class ViewHolder extends RecyclerView.ViewHolder {
+            final View mView;
+            final CircularNetworkImageView mThumbnailView;
+            final TextView mAuthorView;
+            final TextView mSubjectView;
+            final WebView mContentView;
 
-            public ViewHolder(View view) {
+            ViewHolder(View view) {
                 super(view);
                 mView = view;
-                mAuthorView = (TextView) view.findViewById(R.id.author);
-                mContentView = (WebView) view.findViewById(R.id.content);
-                mDateTimeView = (TextView) view.findViewById(R.id.dateTime);
+                mThumbnailView = (CircularNetworkImageView) view.findViewById(R.id.thumbnail);
+                mAuthorView = (TextView) view.findViewById(R.id.username);
+                mSubjectView = (TextView) view.findViewById(R.id.subject);
+                mContentView = (WebView) view.findViewById(R.id.post);
             }
 
         }
     }
 
 
-
 //---------------------------------------TOPIC ASYNC TASK-------------------------------------------
 
-    public class TopicTask extends AsyncTask<String, Void, Boolean>
-    {
-        private static final String TAG="TopicTask";
+    public class TopicTask extends AsyncTask<String, Void, Boolean> {
+        private static final String TAG = "TopicTask";
         private String pageLink;
 
         private Document document;
@@ -134,8 +177,9 @@ public class TopicActivity extends BaseActivity {
             progressBar.setVisibility(ProgressBar.VISIBLE);
         }
 
-        protected Boolean doInBackground(String... strings)
-        {
+        protected Boolean doInBackground(String... strings) {
+            base_url = strings[0].substring(0, strings[0].lastIndexOf("."));
+
             pageLink = strings[0];
 
             Request request = new Request.Builder()
@@ -154,23 +198,73 @@ public class TopicActivity extends BaseActivity {
                 Log.e("TAG", "ERROR", e);
                 return false;
             }
-
         }
 
 
-
-        protected void onPostExecute(Boolean result)
-        {
+        protected void onPostExecute(Boolean result) {
             progressBar.setVisibility(ProgressBar.INVISIBLE);
             topicAdapter.notifyDataSetChanged();
+            pageSelect.setHint(String.valueOf(thisPage) + "/" + String.valueOf(numberOfPages));
         }
 
-        private boolean parse(Document document)
-        {
-            return true;
+        private boolean parse(Document document) {
+            {
+                Elements findCurrentPage = document.select("td:contains(Pages:)>b");
+                for (Element item : findCurrentPage) {
+                    if (!item.text().contains("...")
+                            && !item.text().contains("Pages")) {
+                        thisPage = Integer.parseInt(item.text());
+                        break;
+                    }
+                }
+            }
+            {
+                Elements footer_pages = document.select("td:contains(Pages:)>a.navPages");
+                if (footer_pages.size() != 0) {
+                    numberOfPages = thisPage;
+                    for (Element item : footer_pages) {
+                        if (Integer.parseInt(item.text()) > numberOfPages)
+                            numberOfPages = Integer.parseInt(item.text());
+                    }
+                }
+                for (int i = 0; i < numberOfPages; i++) {
+                    pagesUrls.put(i, base_url + "." + String.valueOf(i * 15));
+                }
+            }
 
+            Elements form_quickModForm = document.select("form[id=quickModForm]");
+            Elements nickNames = form_quickModForm.select("a[title^=View the profile of]");
+            Elements topic_subjectS = form_quickModForm.select("div[id^=subject_]");
+            Elements postTextS = form_quickModForm.select("div").select(".post");
+            Elements img_smalltexts = form_quickModForm.select("div").select(":matches(Posts:)");
+            //Elements replies_smalltexts = form_quickModForm.select("div.smalltext:matches(Reply #)");
+
+            for (int i = 0; i < nickNames.size(); i++) {
+
+                String tmp_nickName = nickNames.get(i).html();
+                Element thumbnail_urls = img_smalltexts.get(i).select("img").select(".avatar").first();
+
+                String tmp_url = "";
+                if (thumbnail_urls != null) {
+                    tmp_url = thumbnail_urls.attr("abs:src");
+                }
+                String tmp_topic_subject = topic_subjectS.get(i).select("a").first().text();
+                String tmp_post_text = postTextS.get(i).html();
+                tmp_post_text = ("<link rel=\"stylesheet\" type=\"text/css\" href=\"style.css\" />" + tmp_post_text); //style.css
+
+
+                /*int tmp_postNum = 0; //topic starter
+                if (replies_smalltexts.size() == nickNames.size()) {
+                    String tmp_prep = replies_smalltexts.get(i).text().substring(9);
+                    tmp_postNum = Integer.parseInt(tmp_prep.substring(0, tmp_prep.indexOf(" on")));
+                } else if (i != 0) {
+                    String tmp_prep = replies_smalltexts.get(i - 1).text().substring(9);
+                    tmp_postNum = Integer.parseInt(tmp_prep.substring(0, tmp_prep.indexOf(" on")));
+                }*/
+
+                postsList.add(new Post(tmp_url, tmp_nickName, tmp_topic_subject, tmp_post_text));
+            }
+            return true;
         }
-
-
     }
 }
diff --git a/app/src/main/java/gr/thmmy/mthmmy/data/Post.java b/app/src/main/java/gr/thmmy/mthmmy/data/Post.java
index c7eb6bee..05a579cb 100644
--- a/app/src/main/java/gr/thmmy/mthmmy/data/Post.java
+++ b/app/src/main/java/gr/thmmy/mthmmy/data/Post.java
@@ -1,20 +1,21 @@
 package gr.thmmy.mthmmy.data;
 
-/**
- * Created by ezero on 14/9/2016.
- */
 public class Post
 {
+    private final String thumbnailUrl;
     private final String author;
-    private final String dateTime;
+    private final String subject;
     private String content;
 
-    public Post(String author, String dateTime, String content) {
+    public Post(String thumbnailUrl, String author, String subject, String content) {
+        this.thumbnailUrl = thumbnailUrl;
         this.author = author;
-        this.dateTime = dateTime;
+        this.subject = subject;
         this.content = content;
     }
 
+    public String getThumbnailUrl() { return thumbnailUrl;}
+
     public String getContent() {
         return content;
     }
@@ -24,6 +25,6 @@ public class Post
     }
 
     public String getDateTime() {
-        return dateTime;
+        return subject;
     }
 }
diff --git a/app/src/main/java/gr/thmmy/mthmmy/utils/CircularNetworkImageView.java b/app/src/main/java/gr/thmmy/mthmmy/utils/CircularNetworkImageView.java
new file mode 100644
index 00000000..e6420d1a
--- /dev/null
+++ b/app/src/main/java/gr/thmmy/mthmmy/utils/CircularNetworkImageView.java
@@ -0,0 +1,87 @@
+package gr.thmmy.mthmmy.utils;
+
+import android.content.Context;
+import android.graphics.Bitmap;
+import android.graphics.Bitmap.Config;
+import android.graphics.Canvas;
+import android.graphics.Paint;
+import android.graphics.PorterDuff.Mode;
+import android.graphics.PorterDuffXfermode;
+import android.graphics.Rect;
+import android.graphics.RectF;
+import android.graphics.drawable.BitmapDrawable;
+import android.util.AttributeSet;
+
+import com.android.volley.toolbox.NetworkImageView;
+
+public class CircularNetworkImageView extends NetworkImageView {
+    private static final int THUMBNAIL_SIZE = 100;
+    Context mContext;
+
+    public CircularNetworkImageView(Context context) {
+        super(context);
+        mContext = context;
+    }
+
+    public CircularNetworkImageView(Context context, AttributeSet attrs) {
+        this(context, attrs, 0);
+        mContext = context;
+    }
+
+    public CircularNetworkImageView(Context context, AttributeSet attrs,
+                                    int defStyle) {
+        super(context, attrs, defStyle);
+        mContext = context;
+    }
+
+    public static Bitmap scaleDown(Bitmap realImage, float maxImageSize,
+                                   boolean filter) {
+        float ratio = Math.min(
+                maxImageSize / realImage.getWidth(),
+                maxImageSize / realImage.getHeight());
+        int width = Math.round(ratio * realImage.getWidth());
+        int height = Math.round(ratio * realImage.getHeight());
+
+        return Bitmap.createScaledBitmap(realImage, width,
+                height, filter);
+    }
+
+    @Override
+    public void setImageBitmap(Bitmap bm) {
+        if(bm==null) return;
+        setImageDrawable(new BitmapDrawable(mContext.getResources(),
+                getCircularBitmap(bm)));
+    }
+
+    /**
+     * Creates a circular bitmap and uses whichever dimension is smaller to determine the width
+     * <br/>Also constrains the circle to the leftmost part of the image
+     *
+     * @param bitmap
+     * @return bitmap
+     */
+    public Bitmap getCircularBitmap(Bitmap bitmap) {
+        Bitmap output = Bitmap.createBitmap(bitmap.getWidth(),
+                bitmap.getHeight(), Config.ARGB_8888);
+        Canvas canvas = new Canvas(output);
+        int width = bitmap.getWidth();
+        if(bitmap.getWidth()>bitmap.getHeight())
+            width = bitmap.getHeight();
+        final int color = 0xff424242;
+        final Paint paint = new Paint();
+        final Rect rect = new Rect(0, 0, width, width);
+        final RectF rectF = new RectF(rect);
+        final float roundPx = width / 2;
+
+        paint.setAntiAlias(true);
+        canvas.drawARGB(0, 0, 0, 0);
+        paint.setColor(color);
+        canvas.drawRoundRect(rectF, roundPx, roundPx, paint);
+
+        paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
+        canvas.drawBitmap(bitmap, rect, rect, paint);
+
+        output = scaleDown(output, THUMBNAIL_SIZE, true);
+        return output;
+    }
+}
\ No newline at end of file
diff --git a/app/src/main/java/gr/thmmy/mthmmy/utils/ImageController.java b/app/src/main/java/gr/thmmy/mthmmy/utils/ImageController.java
new file mode 100644
index 00000000..864dbcd5
--- /dev/null
+++ b/app/src/main/java/gr/thmmy/mthmmy/utils/ImageController.java
@@ -0,0 +1,63 @@
+package gr.thmmy.mthmmy.utils;
+
+import android.app.Application;
+import android.text.TextUtils;
+
+import com.android.volley.Request;
+import com.android.volley.RequestQueue;
+import com.android.volley.toolbox.ImageLoader;
+import com.android.volley.toolbox.Volley;
+
+public class ImageController extends Application {
+
+    public static final String TAG = ImageController.class.getSimpleName();
+    private static ImageController mInstance;
+    private RequestQueue mRequestQueue;
+    private ImageLoader mImageLoader;
+
+    public static synchronized ImageController getInstance() {
+        return mInstance;
+    }
+
+    @Override
+    public void onCreate() {
+        super.onCreate();
+        mInstance = this;
+    }
+
+    public RequestQueue getRequestQueue() {
+        if (mRequestQueue == null) {
+            mRequestQueue = Volley.newRequestQueue(getApplicationContext());
+        }
+
+        return mRequestQueue;
+    }
+
+    public ImageLoader getImageLoader() {
+        getRequestQueue();
+        if (mImageLoader == null) {
+            mImageLoader = new ImageLoader(this.mRequestQueue,
+                    new LruBitmapCache());
+        }
+        return this.mImageLoader;
+    }
+
+    public <T> void addToRequestQueue(Request<T> req, String tag) {
+        // set the default tag if tag is empty
+        req.setTag(TextUtils.isEmpty(tag) ? TAG : tag);
+        getRequestQueue().add(req);
+    }
+
+    public <T> void addToRequestQueue(Request<T> req) {
+        req.setTag(TAG);
+        getRequestQueue().add(req);
+    }
+
+    public void cancelPendingRequests(Object tag) {
+        if (mRequestQueue != null) {
+            mRequestQueue.cancelAll(tag);
+        }
+    }
+}
+
+
diff --git a/app/src/main/java/gr/thmmy/mthmmy/utils/LruBitmapCache.java b/app/src/main/java/gr/thmmy/mthmmy/utils/LruBitmapCache.java
new file mode 100644
index 00000000..330c2e45
--- /dev/null
+++ b/app/src/main/java/gr/thmmy/mthmmy/utils/LruBitmapCache.java
@@ -0,0 +1,41 @@
+package gr.thmmy.mthmmy.utils;
+
+import android.graphics.Bitmap;
+import android.support.v4.util.LruCache;
+
+import com.android.volley.toolbox.ImageLoader.ImageCache;
+
+class LruBitmapCache extends LruCache<String, Bitmap> implements
+        ImageCache {
+    private static final int CACHE_SIZE_DIVIDER = 8;
+
+     LruBitmapCache() {
+        this(getDefaultLruCacheSize());
+    }
+
+     private LruBitmapCache(int sizeInKiloBytes) {
+        super(sizeInKiloBytes);
+    }
+
+    private static int getDefaultLruCacheSize() {
+        final int maxMemory = (int) (Runtime.getRuntime().maxMemory() / 1024);
+        final int cacheSize = maxMemory / CACHE_SIZE_DIVIDER;
+
+        return cacheSize;
+    }
+
+    @Override
+    protected int sizeOf(String key, Bitmap value) {
+        return value.getRowBytes() * value.getHeight() / 1024;
+    }
+
+    @Override
+    public Bitmap getBitmap(String url) {
+        return get(url);
+    }
+
+    @Override
+    public void putBitmap(String url, Bitmap bitmap) {
+        put(url, bitmap);
+    }
+}
\ No newline at end of file
diff --git a/app/src/main/res/anim/push_right_in.xml b/app/src/main/res/anim/push_right_in.xml
new file mode 100644
index 00000000..6b4cdf8d
--- /dev/null
+++ b/app/src/main/res/anim/push_right_in.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<set xmlns:android="http://schemas.android.com/apk/res/android">
+    <translate
+        android:duration="500"
+        android:fromXDelta="-100%p"
+        android:toXDelta="0" />
+
+</set>
\ No newline at end of file
diff --git a/app/src/main/res/anim/push_right_out.xml b/app/src/main/res/anim/push_right_out.xml
new file mode 100644
index 00000000..1d45e3b5
--- /dev/null
+++ b/app/src/main/res/anim/push_right_out.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<set xmlns:android="http://schemas.android.com/apk/res/android">
+    <translate
+        android:duration="500"
+        android:fromXDelta="0"
+        android:toXDelta="100%p" />
+
+</set>
\ No newline at end of file
diff --git a/app/src/main/res/drawable/page_first.xml b/app/src/main/res/drawable/page_first.xml
new file mode 100644
index 00000000..258658e2
--- /dev/null
+++ b/app/src/main/res/drawable/page_first.xml
@@ -0,0 +1,8 @@
+<!-- drawable/page_first.xml -->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportHeight="24"
+    android:viewportWidth="24">
+    <path android:fillColor="#000" android:pathData="M18.41,16.59L13.82,12L18.41,7.41L17,6L11,12L17,18L18.41,16.59M6,6H8V18H6V6Z" />
+</vector>
\ No newline at end of file
diff --git a/app/src/main/res/drawable/page_last.xml b/app/src/main/res/drawable/page_last.xml
new file mode 100644
index 00000000..9e9d9915
--- /dev/null
+++ b/app/src/main/res/drawable/page_last.xml
@@ -0,0 +1,8 @@
+<!-- drawable/page_last.xml -->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportHeight="24"
+    android:viewportWidth="24">
+    <path android:fillColor="#000" android:pathData="M5.59,7.41L10.18,12L5.59,16.59L7,18L13,12L7,6L5.59,7.41M16,6H18V18H16V6Z" />
+</vector>
\ No newline at end of file
diff --git a/app/src/main/res/drawable/page_next.xml b/app/src/main/res/drawable/page_next.xml
new file mode 100644
index 00000000..7692c3ef
--- /dev/null
+++ b/app/src/main/res/drawable/page_next.xml
@@ -0,0 +1,8 @@
+<!-- drawable/page_next.xml -->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportHeight="24"
+    android:viewportWidth="24">
+    <path android:fillColor="#000" android:pathData="M16,18H18V6H16M6,18L14.5,12L6,6V18Z" />
+</vector>
diff --git a/app/src/main/res/drawable/page_previous.xml b/app/src/main/res/drawable/page_previous.xml
new file mode 100644
index 00000000..58c22797
--- /dev/null
+++ b/app/src/main/res/drawable/page_previous.xml
@@ -0,0 +1,8 @@
+<!-- drawable/page_previous.xml -->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportHeight="24"
+    android:viewportWidth="24">
+    <path android:fillColor="#000" android:pathData="M6,18V6H8V18H6M9.5,12L18,6V18L9.5,12Z" />
+</vector>
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index a471081e..f374eccd 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
-<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<android.support.design.widget.CoordinatorLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     xmlns:tools="http://schemas.android.com/tools"
     android:id="@+id/main_content"
@@ -21,22 +22,17 @@
             android:layout_height="?attr/actionBarSize"
             android:background="?attr/colorPrimary"
             app:popupTheme="@style/popupTheme">
-
         </android.support.v7.widget.Toolbar>
 
         <android.support.design.widget.TabLayout
             android:id="@+id/tabs"
             android:layout_width="match_parent"
-            android:layout_height="wrap_content" />
-
+            android:layout_height="wrap_content"/>
     </android.support.design.widget.AppBarLayout>
 
     <android.support.v4.view.ViewPager
         android:id="@+id/container"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
-        app:layout_behavior="@string/appbar_scrolling_view_behavior" />
-
-
-
+        app:layout_behavior="@string/appbar_scrolling_view_behavior"/>
 </android.support.design.widget.CoordinatorLayout>
diff --git a/app/src/main/res/layout/activity_topic.xml b/app/src/main/res/layout/activity_topic.xml
index 154aa4b2..fb2bbd67 100644
--- a/app/src/main/res/layout/activity_topic.xml
+++ b/app/src/main/res/layout/activity_topic.xml
@@ -1,34 +1,34 @@
 <?xml version="1.0" encoding="utf-8"?>
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:tools="http://schemas.android.com/tools"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    tools:context="gr.thmmy.mthmmy.activities.TopicActivity">
+                xmlns:app="http://schemas.android.com/apk/res-auto"
+                xmlns:tools="http://schemas.android.com/tools"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:background="@color/background"
+                tools:context="gr.thmmy.mthmmy.activities.TopicActivity">
 
 
     <view
-    class="gr.thmmy.mthmmy.utils.CustomRecyclerView"
-    android:id="@+id/list"
-    android:name="gr.thmmy.mthmmy.activities.Topic"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:paddingTop="4dp"
-    android:paddingBottom="4dp"
-    android:clipToPadding="false"
-    android:background="@color/white"
-    app:layoutManager="LinearLayoutManager"
-    tools:context="gr.thmmy.mthmmy.activities.TopicActivity"
-    tools:listitem="@layout/activity_topic_post_row" />
+        android:id="@+id/posts_list"
+        android:name="gr.thmmy.mthmmy.activities.Topic"
+        class="gr.thmmy.mthmmy.utils.CustomRecyclerView"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:layout_alignParentTop="true"
+        android:clipToPadding="false"
+        android:paddingBottom="4dp"
+        android:paddingTop="4dp"
+        app:layoutManager="LinearLayoutManager"
+        tools:context="gr.thmmy.mthmmy.activities.TopicActivity"
+        tools:listitem="@layout/activity_topic_post_row"/>
 
     <ProgressBar
-        android:visibility="invisible"
+        android:id="@+id/progressBar"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
-        android:id="@+id/progressBar"
+        android:layout_centerHorizontal="true"
         android:layout_centerVertical="true"
-        android:layout_centerHorizontal="true" />
-
+        android:visibility="invisible"/>
 </RelativeLayout>
 
 
diff --git a/app/src/main/res/layout/activity_topic_post_row.xml b/app/src/main/res/layout/activity_topic_post_row.xml
index 2242102d..456db2f6 100644
--- a/app/src/main/res/layout/activity_topic_post_row.xml
+++ b/app/src/main/res/layout/activity_topic_post_row.xml
@@ -1,111 +1,104 @@
 <?xml version="1.0" encoding="utf-8"?>
-<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:layout_marginBottom="5dp">
-
-    <TextView
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_alignParentTop="true"
-        android:layout_alignParentLeft="true"
-        android:layout_alignParentStart="true"
-        android:text="Author"
-        android:id="@+id/author" />
-
-    <TextView
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_alignBaseline="@+id/author"
-        android:layout_alignParentRight="true"
-        android:layout_alignParentEnd="true"
-        android:text="DateTime"
-        android:id="@+id/dateTime" />
-
-    <WebView
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+              android:layout_width="wrap_content"
+              android:layout_height="wrap_content"
+              android:orientation="vertical"
+              android:paddingEnd="4dp"
+              android:paddingStart="4dp">
+
+    <android.support.v7.widget.CardView
+        xmlns:card_view="http://schemas.android.com/apk/res-auto"
+        android:id="@+id/card_view"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
-        android:id="@+id/content"
-        android:layout_below="@+id/author"
-        android:layout_alignRight="@+id/dateTime"
-        android:layout_alignEnd="@+id/dateTime" />
-</RelativeLayout>
-
-    <!--<?xml version="1.0" encoding="utf-8"?>-->
-<!--<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"-->
-<!--xmlns:app="http://schemas.android.com/apk/res-auto"-->
-<!--android:layout_width="wrap_content"-->
-<!--android:layout_height="wrap_content"-->
-<!--android:paddingEnd="4dp"-->
-<!--android:paddingStart="4dp"-->
-<!--android:orientation="vertical"-->
-<!--android:background="@color/white">-->
-
-<!--<android.support.v7.widget.CardView-->
-    <!--xmlns:card_view="http://schemas.android.com/apk/res-auto"-->
-    <!--android:id="@+id/card_view"-->
-    <!--android:layout_gravity="center"-->
-    <!--android:layout_width="match_parent"-->
-    <!--android:layout_height="wrap_content"-->
-    <!--android:foreground="?android:attr/selectableItemBackground"-->
-    <!--card_view:cardCornerRadius="0dp"-->
-    <!--card_view:cardBackgroundColor="@color/white"-->
-    <!--card_view:cardElevation="2dp"-->
-    <!--card_view:cardPreventCornerOverlap="true"-->
-    <!--card_view:cardUseCompatPadding="true">-->
-
-    <!--<RelativeLayout-->
-        <!--android:layout_width="wrap_content"-->
-        <!--android:layout_height="wrap_content"-->
-        <!--android:paddingTop="6dp"-->
-        <!--android:paddingBottom="6dp"-->
-        <!--android:paddingLeft="10dp"-->
-        <!--android:paddingRight="10dp"-->
-        <!--android:layout_alignParentTop="true">-->
-
-        <!--<TextView-->
-            <!--android:id="@+id/username"-->
-            <!--android:layout_width="match_parent"-->
-            <!--android:layout_height="wrap_content"-->
-            <!--android:layout_alignParentTop="true"-->
-            <!--android:layout_alignParentLeft="true"-->
-            <!--android:layout_alignParentStart="true"-->
-            <!--android:textAppearance="?attr/textAppearanceListItem"-->
-            <!--android:textColor="@color/md_grey_500" />-->
-        <!--<Space-->
-            <!--android:id="@+id/spacer"-->
-            <!--android:layout_below="@+id/username"-->
-            <!--android:layout_width="match_parent"-->
-            <!--android:layout_height="20dp"-->
-            <!--android:layout_alignParentBottom="@+id/username"-->
-            <!--android:layout_toRightOf="@+id/dateTime"-->
-            <!--android:layout_toEndOf="@+id/dateTime"/>-->
-
-        <!--<TextView-->
-            <!--android:id="@+id/content"-->
-            <!--android:layout_below="@+id/spacer"-->
-            <!--android:layout_width="match_parent"-->
-            <!--android:layout_height="wrap_content"-->
-            <!--android:textAppearance="?attr/textAppearanceListItem"-->
-            <!--android:textColor="@color/md_grey_500" />-->
-
-        <!--<TextView-->
-            <!--android:id="@+id/dateTime"-->
-            <!--android:layout_width="wrap_content"-->
-            <!--android:layout_height="wrap_content"-->
-            <!--android:layout_below="@+id/spacer"-->
-            <!--android:layout_alignParentLeft="true"-->
-            <!--android:layout_alignParentStart="true"-->
-            <!--android:textColor="@color/md_grey_500"/>-->
-
-
-
-
-
-    <!--</RelativeLayout>-->
-
-<!--</android.support.v7.widget.CardView>-->
-
-
-<!--</LinearLayout>-->
+        android:layout_gravity="center"
+        android:foreground="?android:attr/selectableItemBackground"
+        card_view:cardBackgroundColor="@color/white"
+        card_view:cardCornerRadius="0dp"
+        card_view:cardElevation="2dp"
+        card_view:cardPreventCornerOverlap="true"
+        card_view:cardUseCompatPadding="true">
+
+        <LinearLayout
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:orientation="vertical"
+            android:padding="5dp">
+
+            <RelativeLayout
+                android:id="@+id/header"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent">
+
+                <FrameLayout
+                    android:id="@+id/thumbnail_holder"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_alignParentTop="true"
+                    android:layout_centerVertical="true"
+                    android:layout_marginBottom="3dp"
+                    android:layout_marginTop="3dp">
+
+                    <gr.thmmy.mthmmy.utils.CircularNetworkImageView
+                        android:id="@+id/thumbnail"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:adjustViewBounds="false"
+                        android:maxHeight="60dp"
+                        android:maxWidth="60dp"
+                        android:paddingEnd="2dp"
+                        android:paddingLeft="2dp"
+                        android:paddingRight="5dp"
+                        android:paddingStart="2dp"/>
+                </FrameLayout>
+
+                <TextView
+                    android:id="@+id/username"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_alignParentTop="true"
+                    android:layout_toEndOf="@+id/thumbnail_holder"
+                    android:layout_toRightOf="@+id/thumbnail_holder"
+                    android:text="sometext"
+                    android:textStyle="bold"/>
+
+                <TextView
+                    android:id="@+id/subject"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_below="@+id/username"
+                    android:layout_toEndOf="@+id/thumbnail_holder"
+                    android:layout_toRightOf="@+id/thumbnail_holder"
+                    android:text="sometext"/>
+
+            </RelativeLayout>
+
+            <View
+                android:id="@+id/divider"
+                android:layout_width="match_parent"
+                android:layout_height="1dp"
+                android:layout_marginBottom="9dp"
+                android:layout_marginLeft="8dp"
+                android:layout_marginRight="8dp"
+                android:layout_marginTop="3dp"
+                android:background="@color/divider"/>
+
+            <FrameLayout
+                android:layout_width="match_parent"
+                android:layout_height="match_parent">
+
+                <WebView
+                    android:id="@+id/post"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_gravity="center"
+                    android:layout_marginLeft="8dp"
+                    android:layout_marginRight="8dp"
+                    android:background="@color/white"
+                    android:text="sometext"
+                    />
+            </FrameLayout>
+        </LinearLayout>
+    </android.support.v7.widget.CardView>
+</LinearLayout>
 
diff --git a/app/src/main/res/layout/fragment_recent.xml b/app/src/main/res/layout/fragment_recent.xml
index 9e185aab..845233f2 100644
--- a/app/src/main/res/layout/fragment_recent.xml
+++ b/app/src/main/res/layout/fragment_recent.xml
@@ -3,8 +3,8 @@
     xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     xmlns:tools="http://schemas.android.com/tools"
-    android:layout_height="match_parent"
-    android:layout_width="match_parent">
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
 
     <android.support.v4.widget.SwipeRefreshLayout
         android:id="@+id/swiperefresh"
@@ -12,27 +12,26 @@
         android:layout_height="match_parent">
 
         <view
-            class="gr.thmmy.mthmmy.utils.CustomRecyclerView"
             android:id="@+id/list"
             android:name="gr.thmmy.mthmmy.sections.recent.RecentFragment"
+            class="gr.thmmy.mthmmy.utils.CustomRecyclerView"
             android:layout_width="match_parent"
             android:layout_height="match_parent"
-            android:paddingTop="4dp"
-            android:paddingBottom="4dp"
-            android:clipToPadding="false"
             android:background="@color/white"
+            android:clipToPadding="false"
+            android:paddingBottom="4dp"
+            android:paddingTop="4dp"
             app:layoutManager="LinearLayoutManager"
             tools:context="gr.thmmy.mthmmy.sections.recent.RecentFragment"
-            tools:listitem="@layout/fragment_recent_row" />
-
+            tools:listitem="@layout/fragment_recent_row"/>
     </android.support.v4.widget.SwipeRefreshLayout>
 
     <ProgressBar
-        android:visibility="invisible"
+        android:id="@+id/progressBar"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
-        android:id="@+id/progressBar"
+        android:layout_centerHorizontal="true"
         android:layout_centerVertical="true"
-        android:layout_centerHorizontal="true" />
+        android:visibility="invisible"/>
 
 </RelativeLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_recent_row.xml b/app/src/main/res/layout/fragment_recent_row.xml
index bfc62f09..8c62b89e 100644
--- a/app/src/main/res/layout/fragment_recent_row.xml
+++ b/app/src/main/res/layout/fragment_recent_row.xml
@@ -1,77 +1,68 @@
 <?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    android:layout_width="wrap_content"
-    android:layout_height="wrap_content"
-    android:paddingEnd="4dp"
-    android:paddingStart="4dp"
-    android:orientation="vertical">
+              android:layout_width="wrap_content"
+              android:layout_height="wrap_content"
+              android:orientation="vertical"
+              android:paddingEnd="4dp"
+              android:paddingStart="4dp">
 
     <android.support.v7.widget.CardView
         xmlns:card_view="http://schemas.android.com/apk/res-auto"
         android:id="@+id/card_view"
-        android:layout_gravity="center"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
+        android:layout_gravity="center"
         android:foreground="?android:attr/selectableItemBackground"
         card_view:cardCornerRadius="0dp"
-        card_view:cardBackgroundColor="@color/white"
         card_view:cardElevation="2dp"
         card_view:cardPreventCornerOverlap="true"
         card_view:cardUseCompatPadding="true">
 
-    <RelativeLayout
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:paddingTop="6dp"
-        android:paddingBottom="6dp"
-        android:paddingLeft="10dp"
-        android:paddingRight="10dp"
-        android:layout_alignParentTop="true">
-
-        <TextView
-            android:id="@+id/title"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:layout_alignParentTop="true"
-            android:layout_alignParentLeft="true"
-            android:layout_alignParentStart="true"
-            android:textAppearance="?attr/textAppearanceListItem"
-            android:textColor="@color/md_grey_850" />
-        <Space
-            android:id="@+id/spacer"
-            android:layout_below="@+id/title"
-            android:layout_width="match_parent"
-            android:layout_height="20dp"
-            android:layout_alignParentBottom="@+id/title"
-            android:layout_toRightOf="@+id/dateTime"
-            android:layout_toEndOf="@+id/dateTime"/>
-
-        <TextView
-            android:id="@+id/dateTime"
+        <RelativeLayout
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:layout_below="@+id/spacer"
-            android:layout_alignParentLeft="true"
-            android:layout_alignParentStart="true"
-            android:textColor="@color/md_grey_500"/>
-
-        <TextView
-            android:id="@+id/lastUser"
-            android:textStyle="italic"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_alignBaseline="@+id/dateTime"
-            android:layout_alignBottom="@+id/dateTime"
-            android:layout_alignParentRight="true"
-            android:layout_alignParentEnd="true"
-            android:textColor="@color/md_grey_500"/>
+            android:layout_alignParentTop="true"
+            android:paddingBottom="6dp"
+            android:paddingLeft="10dp"
+            android:paddingRight="10dp"
+            android:paddingTop="6dp">
 
+            <TextView
+                android:id="@+id/title"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_alignParentLeft="true"
+                android:layout_alignParentStart="true"
+                android:layout_alignParentTop="true"
+                android:textAppearance="?attr/textAppearanceListItem"
+                android:textColor="@color/md_grey_850"/>
 
+            <Space
+                android:id="@+id/spacer"
+                android:layout_width="match_parent"
+                android:layout_height="20dp"
+                android:layout_alignParentBottom="@+id/title"
+                android:layout_below="@+id/title"
+                android:layout_toEndOf="@+id/dateTime"
+                android:layout_toRightOf="@+id/dateTime"/>
 
-    </RelativeLayout>
+            <TextView
+                android:id="@+id/dateTime"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_alignParentLeft="true"
+                android:layout_alignParentStart="true"
+                android:layout_below="@+id/spacer"/>
 
+            <TextView
+                android:id="@+id/lastUser"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_alignBaseline="@+id/dateTime"
+                android:layout_alignBottom="@+id/dateTime"
+                android:layout_alignParentEnd="true"
+                android:layout_alignParentRight="true"
+                android:textStyle="italic"/>
+        </RelativeLayout>
     </android.support.v7.widget.CardView>
-
-
 </LinearLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/topic_page_select.xml b/app/src/main/res/layout/topic_page_select.xml
new file mode 100644
index 00000000..e2ac2907
--- /dev/null
+++ b/app/src/main/res/layout/topic_page_select.xml
@@ -0,0 +1,14 @@
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+              android:layout_width="wrap_content"
+              android:layout_height="wrap_content">
+
+    <EditText
+        android:id="@+id/select_page"
+        android:layout_width="50dp"
+        android:layout_height="match_parent"
+        android:imeOptions="actionGo"
+        android:inputType="number|textNoSuggestions"
+        android:textAlignment="center"
+        android:textColor="@color/white"
+        android:textSize="20sp"/>
+</LinearLayout>
\ 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 88b48966..cd46d12c 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -1,30 +1,17 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-    <!--Teal-Indigo-->
-    <!--<color name="primary">#009688</color>
-    <color name="primary_dark">#00796B</color>
-    <color name="primary_light">#B2DFDB</color>
-    <color name="accent">#536DFE</color>
-    <color name="primary_text">#E7E7E7</color>
-    <color name="secondary_text">#757575</color>-->
-
-    <!--Indigo-Teal-->
+    <!--Indigo-->
     <color name="primary">#3F51B5</color>
     <color name="primary_dark">#303F9F</color>
     <color name="primary_light">#C5CAE9</color>
     <color name="accent">#FFFFFF</color>
     <color name="primary_text">#E7E7E7</color>
     <color name="secondary_text">#757575</color>
+    <color name="card_background">#FFFFFF</color>
+    <color name="divider">#8B8B8B</color>
 
     <color name="transparent">#00000000</color>
     <color name="white">#ffffff</color>
     <color name="iron">#CCCCCC</color>
-    <color name="background">#616161</color>
-
-    <color name="myColor1">#ffb74d</color>
-    <color name="myColor2">#1e88e5</color>
-    <color name="myColor3">#f57f17</color>
-    <color name="myColor4">#7e57c2</color>
-    <color name="myColor5">#388e3c</color>
-    <color name="myColor6">#d32f2f</color>
+    <color name="background">#D3D3D3</color>
 </resources>
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index 444ec77e..854e6cdf 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -9,6 +9,7 @@
         <item name="android:textColorPrimary">@color/primary_text</item>
         <item name="android:textColorSecondary">@color/secondary_text</item>
         <item name="android:windowBackground">@color/primary</item>
+        <item name="cardBackgroundColor">@color/card_background</item>
 
         <item name="colorControlNormal">@color/iron</item>
         <item name="colorControlActivated">@color/white</item>