diff --git a/app/build.gradle b/app/build.gradle index 7e901287..659247f2 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,7 +9,7 @@ android { minSdkVersion 16 targetSdkVersion 25 versionCode 2 - versionName "0.15" + versionName "0.16" } buildTypes { release { @@ -21,8 +21,8 @@ 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.0' compile 'com.jakewharton:butterknife:7.0.1' compile 'org.jsoup:jsoup:1.10.1' 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 e2428346..ccefaf6a 100644 --- a/app/src/main/java/gr/thmmy/mthmmy/activities/BaseActivity.java +++ b/app/src/main/java/gr/thmmy/mthmmy/activities/BaseActivity.java @@ -1,6 +1,5 @@ package gr.thmmy.mthmmy.activities; -import android.content.SharedPreferences; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; @@ -14,17 +13,16 @@ import okhttp3.OkHttpClient; public class BaseActivity extends AppCompatActivity { - 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 - //Shared preferences - public static final String SHARED_PREFS_NAME = "thmmySharedPrefs"; - public static final String USER_NAME = "userNameKey"; - public static final String GUEST_PREF_USERNAME = "GUEST"; - public static final String IS_LOGGED_IN = "isLogedIn"; + static final String SHARED_PREFS_NAME = "thmmySharedPrefs"; + static final String USER_NAME = "userNameKey"; + static final String GUEST_PREF_USERNAME = "GUEST"; + static final String IS_LOGGED_IN = "isLoggedIn"; + static OkHttpClient client; + static Thmmy.LoginData loginData; + private static CookieJar cookieJar; + private static SharedPrefsCookiePersistor sharedPrefsCookiePersistor; + private static boolean init =false; //To initialize stuff only once per app start public static CookieJar getCookieJar() { @@ -57,7 +55,7 @@ public class BaseActivity extends AppCompatActivity { } - public void setLoginData(Thmmy.LoginData loginData) { + void setLoginData(Thmmy.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 5e1173b3..9d4830d0 100644 --- a/app/src/main/java/gr/thmmy/mthmmy/activities/LoginActivity.java +++ b/app/src/main/java/gr/thmmy/mthmmy/activities/LoginActivity.java @@ -23,8 +23,7 @@ import static gr.thmmy.mthmmy.utils.Thmmy.login; public class LoginActivity extends BaseActivity { private static final String TAG = "LoginActivity"; - Button btnLogin; - Button btnGuest; + private Button btnLogin; private EditText inputUsername; private EditText inputPassword; private String username; @@ -38,7 +37,7 @@ public class LoginActivity extends BaseActivity { inputUsername = (EditText) findViewById(R.id.username); inputPassword = (EditText) findViewById(R.id.password); btnLogin = (Button) findViewById(R.id.btnLogin); - btnGuest = (Button) findViewById(R.id.btnContinueAsGuest); + Button btnGuest = (Button) findViewById(R.id.btnContinueAsGuest); // Login button Click Event btnLogin.setOnClickListener(new View.OnClickListener() { @@ -83,13 +82,13 @@ public class LoginActivity extends BaseActivity { moveTaskToBack(true); } - public void onLoginFailed() { + private void onLoginFailed() { Toast.makeText(getBaseContext(), "Login failed", Toast.LENGTH_LONG).show(); btnLogin.setEnabled(true); } - public boolean validate() { + private boolean validate() { boolean valid = true; if (username.isEmpty()) { 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 3dbadff0..725ccb61 100644 --- a/app/src/main/java/gr/thmmy/mthmmy/activities/TopicActivity.java +++ b/app/src/main/java/gr/thmmy/mthmmy/activities/TopicActivity.java @@ -1,18 +1,16 @@ package gr.thmmy.mthmmy.activities; +import android.content.Context; 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; @@ -36,20 +34,19 @@ 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 static final int THUMBNAIL_SIZE = 80; + private final SparseArray pagesUrls = new SparseArray<>(); private ImageLoader imageLoader = ImageController.getInstance().getImageLoader(); - private TopicAdapter topicAdapter; private ProgressBar progressBar; private List postsList; private EditText pageSelect; - + private LinearLayout postsLinearLayout; private int thisPage = 1; - private SparseArray pagesUrls = new SparseArray<>(); private String base_url = ""; private int numberOfPages = 1; @@ -61,6 +58,8 @@ public class TopicActivity extends BaseActivity { Bundle extras = getIntent().getExtras(); final String topicTitle = getIntent().getExtras().getString("TOPIC_TITLE"); + postsLinearLayout = (LinearLayout) findViewById(R.id.posts_list); + progressBar = (ProgressBar) findViewById(R.id.progressBar); if (imageLoader == null) @@ -103,76 +102,62 @@ public class TopicActivity extends BaseActivity { actionbar.setCustomView(customNav, lp); actionbar.setDisplayShowCustomEnabled(true); - postsList = new ArrayList<>(); - topicAdapter = new TopicAdapter(); - - 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")); } + @Override + protected void onDestroy() { + super.onDestroy(); + ImageController.getInstance().cancelPendingRequests(); + } - private class TopicAdapter extends RecyclerView.Adapter { - @Override - public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { - View view = LayoutInflater.from(parent.getContext()) - .inflate(R.layout.activity_topic_post_row, parent, false); - return new ViewHolder(view); - } - - - @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.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 - public int getItemCount() { - return postsList.size(); - } +//---------------------------------------TOPIC ASYNC TASK------------------------------------------- - class ViewHolder extends RecyclerView.ViewHolder { - final View mView; - final CircularNetworkImageView mThumbnailView; - final TextView mAuthorView; - final TextView mSubjectView; - final WebView mContentView; - - ViewHolder(View view) { - super(view); - mView = view; - 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); + private void populateLayout() { + LayoutInflater inflater = (LayoutInflater) getApplicationContext() + .getSystemService(Context.LAYOUT_INFLATER_SERVICE); + + for (Post item : postsList) { + View convertView = inflater.inflate(R.layout.activity_topic_post_row + , postsLinearLayout, false); + + if (imageLoader == null) + imageLoader = ImageController.getInstance().getImageLoader(); + + CircularNetworkImageView thumbnail = (CircularNetworkImageView) convertView.findViewById(R.id.thumbnail); + TextView username = (TextView) convertView.findViewById(R.id.username); + TextView postNum = (TextView) convertView.findViewById(R.id.post_number); + TextView subject = (TextView) convertView.findViewById(R.id.subject); + WebView post = (WebView) convertView.findViewById(R.id.post); + + //Avoiding errors about layout having 0 width/height + thumbnail.setMinimumWidth(1); + thumbnail.setMinimumHeight(1); + //Set thumbnail size + thumbnail.setMaxWidth(THUMBNAIL_SIZE); + thumbnail.setMaxHeight(THUMBNAIL_SIZE); + + // thumbnail image + if (item.getThumbnailUrl() != null) { + thumbnail.setImageUrl(item.getThumbnailUrl(), imageLoader); } + username.setText(item.getAuthor()); + if (item.getPostNumber() != 0) + postNum.setText("#" + item.getPostNumber()); + subject.setText(item.getSubject()); + post.loadDataWithBaseURL("file:///android_asset/", item.getContent(), "text/html", "UTF-8", null); + post.setEnabled(false); + postsLinearLayout.addView(convertView); } } - -//---------------------------------------TOPIC ASYNC TASK------------------------------------------- - public class TopicTask extends AsyncTask { private static final String TAG = "TopicTask"; private String pageLink; - private Document document; - protected void onPreExecute() { progressBar.setVisibility(ProgressBar.VISIBLE); } @@ -200,10 +185,9 @@ public class TopicActivity extends BaseActivity { } } - protected void onPostExecute(Boolean result) { progressBar.setVisibility(ProgressBar.INVISIBLE); - topicAdapter.notifyDataSetChanged(); + populateLayout(); pageSelect.setHint(String.valueOf(thisPage) + "/" + String.valueOf(numberOfPages)); } @@ -232,37 +216,52 @@ public class TopicActivity extends BaseActivity { } } - 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++) { + //Each element is a post row + Elements rows = document.select("form[id=quickModForm]>table>tbody>tr:matches(on)"); - String tmp_nickName = nickNames.get(i).html(); - Element thumbnail_urls = img_smalltexts.get(i).select("img").select(".avatar").first(); + for (Element item: rows) { //For every post + String p_userName, p_thumbnailUrl, p_subject, p_post; + int p_postNum; - String tmp_url = ""; - if (thumbnail_urls != null) { - tmp_url = thumbnail_urls.attr("abs:src"); + //Find the Username + Element userName = item.select("a[title^=View the profile of]").first(); + if(userName == null){ //Deleted profile + p_userName = item + .select("td:has(div.smalltext:containsOwn(Guest))[style^=overflow]") + .first().text(); + p_userName = p_userName.substring(0, p_userName.indexOf(" Guest")); } - String tmp_topic_subject = topic_subjectS.get(i).select("a").first().text(); - String tmp_post_text = postTextS.get(i).html(); - tmp_post_text = ("" + tmp_post_text); //style.css + else + p_userName = userName.html(); + + //Find thumbnail url + Element thumbnailUrl = item.select("img.avatar").first(); + p_thumbnailUrl = null; //In case user doesn't have an avatar + if(thumbnailUrl != null){ + p_thumbnailUrl = thumbnailUrl.attr("abs:src"); + } + + //Find subject + p_subject = item.select("div[id^=subject_]").first().select("a").first().text(); - /*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"))); - }*/ + //Find post's text + p_post = item.select("div").select(".post").first().html(); + p_post = ("" + + p_post); //style.css + + //Find post's index number + Element postNum = item.select("div.smalltext:matches(Reply #)").first(); + if(postNum == null){ //Topic starter + p_postNum = 0; + } + else{ + String tmp_str = postNum.text().substring(9); + p_postNum = Integer.parseInt(tmp_str.substring(0, tmp_str.indexOf(" on"))); + } - postsList.add(new Post(tmp_url, tmp_nickName, tmp_topic_subject, tmp_post_text)); + postsList.add(new Post(p_thumbnailUrl, p_userName, p_subject + , p_post, p_postNum)); } 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 05a579cb..d2f375f7 100644 --- a/app/src/main/java/gr/thmmy/mthmmy/data/Post.java +++ b/app/src/main/java/gr/thmmy/mthmmy/data/Post.java @@ -5,13 +5,15 @@ public class Post private final String thumbnailUrl; private final String author; private final String subject; - private String content; + private final String content; + private final int postNumber; - public Post(String thumbnailUrl, String author, String subject, String content) { + public Post(String thumbnailUrl, String author, String subject, String content, int postNumber) { this.thumbnailUrl = thumbnailUrl; this.author = author; this.subject = subject; this.content = content; + this.postNumber = postNumber; } public String getThumbnailUrl() { return thumbnailUrl;} @@ -24,7 +26,9 @@ public class Post return author; } - public String getDateTime() { + public String getSubject() { return subject; } + + public int getPostNumber(){ return postNumber;} } diff --git a/app/src/main/java/gr/thmmy/mthmmy/sections/recent/RecentFragment.java b/app/src/main/java/gr/thmmy/mthmmy/sections/recent/RecentFragment.java index 30c0431c..595c48ae 100644 --- a/app/src/main/java/gr/thmmy/mthmmy/sections/recent/RecentFragment.java +++ b/app/src/main/java/gr/thmmy/mthmmy/sections/recent/RecentFragment.java @@ -50,14 +50,13 @@ public class RecentFragment extends Fragment private ProgressBar progressBar; private SwipeRefreshLayout swipeRefreshLayout; - private CustomRecyclerView recyclerView; private RecentAdapter recentAdapter; private List topicSummaries; private OnListFragmentInteractionListener mListener; - OkHttpClient client; + private OkHttpClient client; // Required empty public constructor public RecentFragment() {} @@ -154,7 +153,7 @@ public class RecentFragment extends Fragment progressBar = (ProgressBar) rootView.findViewById(R.id.progressBar); recentAdapter = new RecentAdapter(topicSummaries, mListener); - recyclerView = (CustomRecyclerView) rootView.findViewById(R.id.list); + CustomRecyclerView recyclerView = (CustomRecyclerView) rootView.findViewById(R.id.list); recyclerView.setLayoutManager(new LinearLayoutManager(rootView.findViewById(R.id.list).getContext())); recyclerView.setAdapter(recentAdapter); @@ -205,11 +204,6 @@ public class RecentFragment extends Fragment void onFragmentInteraction(TopicSummary topicSummary); } - - int n=0; - long s=0; - - //---------------------------------------ASYNC TASK----------------------------------- public class RecentTask extends AsyncTask @@ -260,7 +254,7 @@ public class RecentFragment extends Fragment swipeRefreshLayout.setRefreshing(false); } - private boolean parse(Document document) + private void parse(Document document) { Elements recent = document.select("#block8 :first-child div"); if(recent.size()==30) @@ -279,7 +273,7 @@ public class RecentFragment extends Fragment else { Log.e(TAG, "Parsing failed (lastUser)!"); - return false; + return; } String dateTime = recent.get(i + 2).text(); @@ -290,17 +284,16 @@ public class RecentFragment extends Fragment else { Log.e(TAG, "Parsing failed (dateTime)!"); - return false; + return; } topicSummaries.add(new TopicSummary(link, title, lastUser, dateTime)); } - return true; + return; } Log.e(TAG, "Parsing failed!"); - return false; } } diff --git a/app/src/main/java/gr/thmmy/mthmmy/utils/CircularNetworkImageView.java b/app/src/main/java/gr/thmmy/mthmmy/utils/CircularNetworkImageView.java index e6420d1a..d7621eb2 100644 --- a/app/src/main/java/gr/thmmy/mthmmy/utils/CircularNetworkImageView.java +++ b/app/src/main/java/gr/thmmy/mthmmy/utils/CircularNetworkImageView.java @@ -15,8 +15,8 @@ import android.util.AttributeSet; import com.android.volley.toolbox.NetworkImageView; public class CircularNetworkImageView extends NetworkImageView { - private static final int THUMBNAIL_SIZE = 100; - Context mContext; + private static final int THUMBNAIL_SIZE = 80; + private Context mContext; public CircularNetworkImageView(Context context) { super(context); @@ -34,18 +34,6 @@ public class CircularNetworkImageView extends NetworkImageView { 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; @@ -60,18 +48,19 @@ public class CircularNetworkImageView extends NetworkImageView { * @param bitmap * @return bitmap */ - public Bitmap getCircularBitmap(Bitmap bitmap) { + private Bitmap getCircularBitmap(Bitmap bitmap) { + bitmap = Bitmap.createScaledBitmap(bitmap, THUMBNAIL_SIZE, THUMBNAIL_SIZE, false); Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Config.ARGB_8888); Canvas canvas = new Canvas(output); - int width = bitmap.getWidth(); + int size = bitmap.getWidth(); if(bitmap.getWidth()>bitmap.getHeight()) - width = bitmap.getHeight(); + size = bitmap.getHeight(); final int color = 0xff424242; final Paint paint = new Paint(); - final Rect rect = new Rect(0, 0, width, width); + final Rect rect = new Rect(0, 0, size, size); final RectF rectF = new RectF(rect); - final float roundPx = width / 2; + final float roundPx = size / 2; paint.setAntiAlias(true); canvas.drawARGB(0, 0, 0, 0); @@ -81,7 +70,6 @@ public class CircularNetworkImageView extends NetworkImageView { 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 index 864dbcd5..8eaf7045 100644 --- a/app/src/main/java/gr/thmmy/mthmmy/utils/ImageController.java +++ b/app/src/main/java/gr/thmmy/mthmmy/utils/ImageController.java @@ -10,7 +10,7 @@ import com.android.volley.toolbox.Volley; public class ImageController extends Application { - public static final String TAG = ImageController.class.getSimpleName(); + private static final String TAG = ImageController.class.getSimpleName(); private static ImageController mInstance; private RequestQueue mRequestQueue; private ImageLoader mImageLoader; @@ -25,7 +25,7 @@ public class ImageController extends Application { mInstance = this; } - public RequestQueue getRequestQueue() { + private RequestQueue getRequestQueue() { if (mRequestQueue == null) { mRequestQueue = Volley.newRequestQueue(getApplicationContext()); } @@ -53,10 +53,13 @@ public class ImageController extends Application { getRequestQueue().add(req); } - public void cancelPendingRequests(Object tag) { - if (mRequestQueue != null) { - mRequestQueue.cancelAll(tag); - } + public void cancelPendingRequests(){ + mRequestQueue.cancelAll(new RequestQueue.RequestFilter() { + @Override + public boolean apply(Request request) { + return true; + } + }); } } diff --git a/app/src/main/java/gr/thmmy/mthmmy/utils/Thmmy.java b/app/src/main/java/gr/thmmy/mthmmy/utils/Thmmy.java index 2c3b592c..553fc0f4 100644 --- a/app/src/main/java/gr/thmmy/mthmmy/utils/Thmmy.java +++ b/app/src/main/java/gr/thmmy/mthmmy/utils/Thmmy.java @@ -28,9 +28,6 @@ import okhttp3.Response; public class Thmmy { - private static final HttpUrl loginUrl = HttpUrl.parse("https://www.thmmy.gr/smf/index.php?action=login2"); - private static final HttpUrl indexUrl = HttpUrl.parse("https://www.thmmy.gr/smf/index.php"); - public static final int LOGGED_OUT = 0; public static final int LOGGED_IN = 1; public static final int WRONG_USER = 2; @@ -38,7 +35,7 @@ public class Thmmy { public static final int FAILED = 4; public static final int CERTIFICATE_ERROR = 5; public static final int OTHER_ERROR = 6; - + private static final HttpUrl loginUrl = HttpUrl.parse("https://www.thmmy.gr/smf/index.php?action=login2"); //-------------------------------------------LOGIN-------------------------------------------------- //Two options: (username, password, duration) or nothing - cookies @@ -116,71 +113,7 @@ public class Thmmy { return loginData; } - //To maintain data between activities/ between activity state change (possibly temporary solution) - public static class LoginData implements Parcelable { - private int status; - private String username; - private HttpUrl logoutLink; - - public LoginData() { - } - - public String getUsername() { - return username; - } - - public void setUsername(String username) { - this.username = username; - } - - - public int getStatus() { - return status; - } - - public void setStatus(int status) { - this.status = status; - } - - - public HttpUrl getLogoutLink() { - return logoutLink; - } - - public void setLogoutLink(HttpUrl logoutLink) { - this.logoutLink = logoutLink; - } - - - public int describeContents() { - return 0; - } - - public void writeToParcel(Parcel out, int flags) { - out.writeInt(status); - out.writeString(username); - out.writeString(logoutLink.toString()); - } - - public static final Parcelable.Creator CREATOR - = new Parcelable.Creator() { - public LoginData createFromParcel(Parcel in) { - return new LoginData(in); - } - - public LoginData[] newArray(int size) { - return new LoginData[size]; - } - }; - - private LoginData(Parcel in) { - status = in.readInt(); - username = in.readString(); - logoutLink = HttpUrl.parse(in.readString()); - } - } - - private static boolean setPersistentCookieSession() { + private static void setPersistentCookieSession() { List cookieList = BaseActivity.getCookieJar().loadForRequest(HttpUrl.parse("https://www.thmmy.gr")); if (cookieList.size() == 2) { @@ -194,13 +127,9 @@ public class Thmmy { cookieList.add(builder.build()); BaseActivity.getSharedPrefsCookiePersistor().clear(); BaseActivity.getSharedPrefsCookiePersistor().saveAll(cookieList); - return true; } } - return false; } - //-------------------------------------LOGIN ENDS----------------------------------------------- - //--------------------------------------LOGOUT-------------------------------------------------- public static int logout(LoginData loginData) { @@ -234,13 +163,10 @@ public class Thmmy { } - - -//----------------------------------------LOGOUT ENDS----------------------------------------------- - + //-------------------------------------LOGIN ENDS----------------------------------------------- //-------------------------------------------MISC--------------------------------------------------- - public static String extractUserName(Document doc) { + private static String extractUserName(Document doc) { if (doc != null) { Elements user = doc.select("div[id=myuser] > h3"); @@ -257,4 +183,67 @@ public class Thmmy { return null; } + +//----------------------------------------LOGOUT ENDS----------------------------------------------- + + //To maintain data between activities/ between activity state change (possibly temporary solution) + public static class LoginData implements Parcelable { + public static final Parcelable.Creator CREATOR + = new Parcelable.Creator() { + public LoginData createFromParcel(Parcel in) { + return new LoginData(in); + } + + public LoginData[] newArray(int size) { + return new LoginData[size]; + } + }; + private int status; + private String username; + private HttpUrl logoutLink; + + public LoginData() { + } + + private LoginData(Parcel in) { + status = in.readInt(); + username = in.readString(); + logoutLink = HttpUrl.parse(in.readString()); + } + + public String getUsername() { + return username; + } + + void setUsername(String username) { + this.username = username; + } + + public int getStatus() { + return status; + } + + public void setStatus(int status) { + this.status = status; + } + + HttpUrl getLogoutLink() { + return logoutLink; + } + + void setLogoutLink(HttpUrl logoutLink) { + this.logoutLink = logoutLink; + } + + public int describeContents() { + return 0; + } + + public void writeToParcel(Parcel out, int flags) { + out.writeInt(status); + out.writeString(username); + out.writeString(logoutLink.toString()); + } + } + } diff --git a/app/src/main/res/drawable/box_border.xml b/app/src/main/res/drawable/box_border.xml deleted file mode 100644 index 81a34095..00000000 --- a/app/src/main/res/drawable/box_border.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/row.xml b/app/src/main/res/drawable/row.xml deleted file mode 100644 index 8b48a759..00000000 --- a/app/src/main/res/drawable/row.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/thmmy_3d_wshadow.png b/app/src/main/res/drawable/thmmy_3d_wshadow.png deleted file mode 100644 index 2697af29..00000000 Binary files a/app/src/main/res/drawable/thmmy_3d_wshadow.png and /dev/null differ diff --git a/app/src/main/res/layout/activity_topic.xml b/app/src/main/res/layout/activity_topic.xml index fb2bbd67..4ea8cd36 100644 --- a/app/src/main/res/layout/activity_topic.xml +++ b/app/src/main/res/layout/activity_topic.xml @@ -1,26 +1,29 @@ - - + android:scrollbars="none" + tools:context="gr.thmmy.mthmmy.activities.TopicActivity"> + + + + + + + + android:text="sometext" + /> diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index cd46d12c..3f011e46 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -11,7 +11,8 @@ #8B8B8B #00000000 - #ffffff + #FFFFFF + #000000 #CCCCCC #D3D3D3 diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index cef3abc4..fea32b5f 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -4,4 +4,5 @@ 16dp 16dp 8dp + 80dp