From 034e14235e987b30d0ebc181b2d24c632035c453 Mon Sep 17 00:00:00 2001
From: Renard
Date: Mon, 25 Apr 2016 20:48:52 -0300
Subject: v1.7
---
.../baiparser/MainActivity.java | 84 +++++-
.../baiparser/ResponseActivity.java | 298 +++++++++++++++------
.../baiparser/ThreadListAdapter.java | 35 ++-
.../baiparser/structure/Board.java | 15 +-
.../baiparser/structure/BoardItem.java | 43 ++-
.../baiparser/structure/ReplyID.java | 10 +-
6 files changed, 368 insertions(+), 117 deletions(-)
(limited to 'app/src/main/java/org/bienvenidoainternet/baiparser')
diff --git a/app/src/main/java/org/bienvenidoainternet/baiparser/MainActivity.java b/app/src/main/java/org/bienvenidoainternet/baiparser/MainActivity.java
index 87ac15a..9a6a344 100644
--- a/app/src/main/java/org/bienvenidoainternet/baiparser/MainActivity.java
+++ b/app/src/main/java/org/bienvenidoainternet/baiparser/MainActivity.java
@@ -120,17 +120,37 @@ public class MainActivity extends AppCompatActivity
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
- if (childFragment.currentBoard != null) {
- if (!childFragment.boardItems.isEmpty()) {
- try {
- Intent in = new Intent(getApplicationContext(), ResponseActivity.class);
- Bundle b = new Bundle();
- b.putParcelable("theReply", childFragment.boardItems.get(0));
- b.putBoolean("quoting", false);
- in.putExtras(b);
- startActivity(in);
- } catch (Exception e) {
- e.printStackTrace();
+ if (pager.getCurrentItem() == 0){
+ if (!mainFragment.getMode() && mainFragment.currentBoard != null){
+ Intent in = new Intent(getApplicationContext(), ResponseActivity.class);
+ Bundle b = new Bundle();
+ BoardItem temp = new BoardItem();
+ temp.setParentBoard(mainFragment.currentBoard);
+ b.putParcelable("theReply", temp);
+ b.putBoolean("quoting", false);
+ b.putBoolean("newthread", true);
+ in.putExtras(b);
+ startActivity(in);
+ }
+ }else{
+ if (childFragment.currentBoard != null) {
+ if (!childFragment.boardItems.isEmpty()) {
+ try {
+ Intent in = new Intent(getApplicationContext(), ResponseActivity.class);
+ Bundle b = new Bundle();
+ BoardItem reply = childFragment.boardItems.get(0);
+ if (!reply.isLocked) {
+ b.putParcelable("theReply", reply);
+ b.putBoolean("quoting", false);
+ b.putBoolean("newthread", false);
+ in.putExtras(b);
+ startActivity(in);
+ }else{
+ Toast.makeText(getApplicationContext(), "Error: Este hilo está cerrado", Toast.LENGTH_LONG).show();
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
}
}
}
@@ -170,6 +190,7 @@ public class MainActivity extends AppCompatActivity
@Override
public void onPageSelected(int position) {
if (position == 0){
+ fab.setImageResource(R.drawable.ic_action_add);
if (mainFragment.currentBoard != null) {
toolbar.setTitle("Catálogo");
toolbar.setSubtitle(mainFragment.currentBoard.getBoardName());
@@ -178,14 +199,19 @@ public class MainActivity extends AppCompatActivity
toolbar.setTitle("Post recientes");
toolbar.setSubtitle("");
}
- fab.setVisibility(View.INVISIBLE);
+ if (mainFragment.getMode()){
+ fab.hide();
+ }else{
+ fab.show();
+ }
}else if (position == 1){
+ fab.setImageResource(R.drawable.ic_edit);
if (childFragment.currentBoard != null) {
toolbar.setTitle(childFragment.currentBoard.getBoardName());
if (!childFragment.boardItems.isEmpty()){
toolbar.setSubtitle(childFragment.boardItems.get(0).getSubject());
}
- fab.setVisibility(View.VISIBLE);
+ fab.show();
}
}
}
@@ -367,6 +393,32 @@ public class MainActivity extends AppCompatActivity
}
}
+ @Override
+ public void onThreadList() {
+ if (pager.getCurrentItem() == 0){
+ getSupportActionBar().setTitle("Catálogo");
+ getSupportActionBar().setSubtitle(mainFragment.currentBoard.getBoardName());
+ fab.show();
+ }
+ }
+
+ @Override
+ public void onThread() {
+ if (pager.getCurrentItem() == 1){
+ getSupportActionBar().setTitle(childFragment.currentBoard.getBoardName());
+ getSupportActionBar().setSubtitle(childFragment.boardItems.get(0).getSubject());
+ }
+ }
+
+ @Override
+ public void onRecentPosts() {
+ if (pager.getCurrentItem() == 0){
+ getSupportActionBar().setTitle("Post recientes");
+ getSupportActionBar().setSubtitle("");
+ fab.hide();
+ }
+ }
+
private void getBoardList(){
Menu menu = navigationView.getMenu();
final SubMenu sub = menu.addSubMenu("Lista de Boards");
@@ -384,7 +436,7 @@ public class MainActivity extends AppCompatActivity
JSONArray boards = new JSONObject(result).getJSONArray("boards");
for (int i = 0; i < boards.length(); i++) {
JSONObject board = boards.getJSONObject(i);
- Board parsedBoard = new Board(board.getString("name"), board.getString("dir"), board.getInt("board_type"));
+ Board parsedBoard = new Board(board.getString("name"), board.getString("dir"), board.getInt("board_type"), board.getInt("allow_image_replies") == 1 ? true : false);
sub.add(parsedBoard.getBoardName());
boardList.add(parsedBoard);
}
@@ -395,6 +447,10 @@ public class MainActivity extends AppCompatActivity
}
}
});
+
+ Board parsedBoard = new Board("Testing Field", "polka", 1, true);
+ sub.add(parsedBoard.getBoardName());
+ boardList.add(parsedBoard);
refreshNavigator();
}
diff --git a/app/src/main/java/org/bienvenidoainternet/baiparser/ResponseActivity.java b/app/src/main/java/org/bienvenidoainternet/baiparser/ResponseActivity.java
index 871aaf5..2a3ca24 100644
--- a/app/src/main/java/org/bienvenidoainternet/baiparser/ResponseActivity.java
+++ b/app/src/main/java/org/bienvenidoainternet/baiparser/ResponseActivity.java
@@ -54,7 +54,7 @@ public class ResponseActivity extends AppCompatActivity {
private String password;
private String selectedFile = "";
private final int PICK_IMAGE = 1;
- private boolean quoting = false;
+ private boolean quoting = false, newthread = false;
EditText filePath;
@Override
@@ -63,18 +63,34 @@ public class ResponseActivity extends AppCompatActivity {
ThemeManager tm = new ThemeManager(this);
this.setTheme(tm.getThemeForActivity());
setContentView(R.layout.activity_response);
- getSupportActionBar().setTitle("Respondiendo");
+
settings = PreferenceManager.getDefaultSharedPreferences(this);
password = settings.getString("pref_password", "12345678");
if (savedInstanceState != null){
this.theReply = savedInstanceState.getParcelable("theReply");
this.quoting = savedInstanceState.getBoolean("quoting");
+ this.newthread = savedInstanceState.getBoolean("newthread");
}
if (getIntent().getExtras() != null){
this.theReply = getIntent().getParcelableExtra("theReply");
this.quoting = getIntent().getBooleanExtra("quoting", false);
+ this.newthread = getIntent().getBooleanExtra("newthread", false);
+ }
+
+ if (newthread){
+ getSupportActionBar().setTitle("Nuevo hilo");
+ getSupportActionBar().setSubtitle(theReply.getParentBoard().getBoardName());
+ }else{
+ getSupportActionBar().setTitle("Respondiendo");
}
+
+ TextView txtFilePath = (TextView) findViewById(R.id.txtFilePath);
+ Button btnSelectFile = (Button) findViewById(R.id.btnSelectFiles);
+ TextView txtThreadSubject = (TextView) findViewById(R.id.txtThreadSubject);
+
+ txtThreadSubject.setVisibility(newthread ? View.VISIBLE : View.GONE);
+
if (theReply != null && quoting){
TextView txtMessage = (TextView) findViewById(R.id.txtResponse);
if (theReply.getParentBoard().getBoardType() == 1){ // BBS
@@ -82,6 +98,9 @@ public class ResponseActivity extends AppCompatActivity {
}else{
txtMessage.setText(">>" + theReply.getId());
}
+ }else if (theReply != null){
+ txtFilePath.setVisibility(theReply.getParentBoard().isCanAttachFiles() ? View.VISIBLE : View.GONE);
+ btnSelectFile.setVisibility(theReply.getParentBoard().isCanAttachFiles() ? View.VISIBLE : View.GONE);
}
LinearLayout layoutProcess = (LinearLayout)findViewById(R.id.layoutPostProcess);
@@ -89,39 +108,49 @@ public class ResponseActivity extends AppCompatActivity {
filePath = (EditText) findViewById(R.id.txtFilePath);
Button bBold = (Button) findViewById(R.id.buttonBold);
+ Button bStrike = (Button) findViewById(R.id.buttonStrike);
+ Button bList = (Button) findViewById(R.id.buttonList);
+ Button bCode = (Button) findViewById(R.id.buttonCode);
+ Button bUnder = (Button) findViewById(R.id.buttonUnderline);
+ Button bItalic = (Button) findViewById(R.id.buttonItalic);
+ Button select = (Button) findViewById(R.id.btnSelectFiles);
+
bBold.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
- TextView txtMessage = (TextView) findViewById(R.id.txtResponse);
- if (txtMessage.getSelectionStart() == -1){
- txtMessage.setText(txtMessage.getText() + "");
- }else{
- String s = txtMessage.getText().toString();
- String a = s.substring(0, txtMessage.getSelectionStart());
- String b = s.substring(txtMessage.getSelectionStart(), txtMessage.getSelectionEnd());
- String c = s.substring(txtMessage.getSelectionEnd(), txtMessage.getText().length());
- txtMessage.setText(a + "" + b + "" + c);
- }
+ applyTag("b");
}
});
- Button bItalic = (Button) findViewById(R.id.buttonItalic);
bItalic.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
- TextView txtMessage = (TextView) findViewById(R.id.txtResponse);
- if (txtMessage.getSelectionStart() == -1){
- txtMessage.setText(txtMessage.getText() + "");
- }else{
- String s = txtMessage.getText().toString();
- String a = s.substring(0, txtMessage.getSelectionStart());
- String b = s.substring(txtMessage.getSelectionStart(), txtMessage.getSelectionEnd());
- String c = s.substring(txtMessage.getSelectionEnd(), txtMessage.getText().length());
- txtMessage.setText(a + "" + b + "" + c);
- }
+ applyTag("i");
+ }
+ });
+ bStrike.setOnClickListener(new View.OnClickListener(){
+ @Override
+ public void onClick(View v) {
+ applyTag("strike");
+ }
+ });
+ bList.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ applyTag("ul");
+ }
+ });
+ bCode.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ applyTag("code");
+ }
+ });
+ bUnder.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ applyTag("u");
}
});
-
- Button select = (Button) findViewById(R.id.btnSelectFiles);
select.setOnClickListener(new View.OnClickListener() {
@Override
@@ -135,6 +164,19 @@ public class ResponseActivity extends AppCompatActivity {
}
+ private void applyTag(String tag){
+ TextView txtMessage = (TextView) findViewById(R.id.txtResponse);
+ if (txtMessage.getSelectionStart() == -1){
+ txtMessage.setText(txtMessage.getText() + "<" + tag + ">" + tag +">");
+ }else{
+ String s = txtMessage.getText().toString();
+ String a = s.substring(0, txtMessage.getSelectionStart());
+ String b = s.substring(txtMessage.getSelectionStart(), txtMessage.getSelectionEnd());
+ String c = s.substring(txtMessage.getSelectionEnd(), txtMessage.getText().length());
+ txtMessage.setText(a + "<" + tag + ">" + b + "" + tag + ">" + c);
+ }
+ }
+
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_replyform, menu);
@@ -147,7 +189,8 @@ public class ResponseActivity extends AppCompatActivity {
TextView txtName = (TextView) findViewById(R.id.txtPosterName);
TextView txtEmail = (TextView) findViewById(R.id.txtEmail);
TextView txtMessage = (TextView) findViewById(R.id.txtResponse);
- makePost(txtName.getText().toString(), txtEmail.getText().toString(), txtMessage.getText().toString());
+ TextView txtThreadSubject = (TextView) findViewById(R.id.txtThreadSubject);
+ makePost(txtName.getText().toString(), txtEmail.getText().toString(), txtMessage.getText().toString(), txtThreadSubject.getText().toString());
}
return super.onOptionsItemSelected(item);
}
@@ -168,10 +211,11 @@ public class ResponseActivity extends AppCompatActivity {
super.onSaveInstanceState(outState);
}
- private void makePost(String name, String email, String message){
- int parentId = theReply.getParentId();
- if (theReply.getParentId() == 0 || theReply.getParentId() == -1){
- parentId = theReply.getId();
+ private void makePost(String name, String email, String message, String subject){
+ int parentId = theReply.realParentId();
+ // Si el parentId = 0 && subject != "" ==> Nuevo hilo
+ if (newthread){
+ parentId = 0;
}
LinearLayout layoutProcess = (LinearLayout)findViewById(R.id.layoutPostProcess);
layoutProcess.setVisibility(View.VISIBLE);
@@ -181,62 +225,146 @@ public class ResponseActivity extends AppCompatActivity {
final TextView err = (TextView)findViewById(R.id.txtPostingState);
err.setText("");
File up = new File(selectedFile);
- if (selectedFile.isEmpty()) Ion.with(getApplicationContext())
- .load("http://bienvenidoainternet.org/cgi/post")
- .setLogging("posting", Log.VERBOSE)
- .uploadProgressBar(progess)
- .setMultipartParameter("board", theReply.getParentBoard().getBoardDir())
- .setMultipartParameter("parent", String.valueOf(theReply.realParentId()))
- .setMultipartParameter("password", password)
- .setMultipartParameter("fielda", name)
- .setMultipartParameter("fieldb", email)
- .setMultipartParameter("name", "")
- .setMultipartParameter("email", "")
- .setMultipartParameter("message", message)
- .asString()
- .setCallback(new FutureCallback() {
- @Override
- public void onCompleted(Exception e, String result) {
- Log.v("sendPost", result);
- if (e != null) {
- Toast.makeText(getApplicationContext(), "Ha ocurrido un error! ;_;", Toast.LENGTH_LONG).show();
- formSendPost.setVisibility(View.VISIBLE);
- err.setText("Error: " + e.getMessage());
- e.printStackTrace();
- } else {
- Toast.makeText(getApplicationContext(), "Post enviado", Toast.LENGTH_LONG).show();
- finish();
- }
- }
- });
- else{
- Ion.with(getApplicationContext())
- .load("http://bienvenidoainternet.org/cgi/post")
- .uploadProgressBar(progess)
- .setMultipartParameter("board", theReply.getParentBoard().getBoardDir())
- .setMultipartParameter("parent", String.valueOf(parentId))
- .setMultipartParameter("password", password)
- .setMultipartParameter("fielda", name)
- .setMultipartParameter("fieldb", email)
- .setMultipartParameter("name", "")
- .setMultipartParameter("email", "")
- .setMultipartParameter("message", message)
- .setMultipartFile("file", up)
- .asDocument()
- .setCallback(new FutureCallback() {
- @Override
- public void onCompleted(Exception e, Document result) {
- if (e != null){
- Toast.makeText(getApplicationContext(), "Ha ocurrido un error! ;_;", Toast.LENGTH_LONG).show();
- formSendPost.setVisibility(View.VISIBLE);
- err.setText("Error: " + e.getMessage());
- e.printStackTrace();
- }else{
- Toast.makeText(getApplicationContext(), "Post enviado", Toast.LENGTH_LONG).show();
- finish();
+
+ if (newthread){
+ if (selectedFile.isEmpty()){
+ Ion.with(getApplicationContext())
+ .load("http://bienvenidoainternet.org/cgi/post")
+ .setLogging("posting", Log.VERBOSE)
+ .uploadProgressBar(progess)
+ .setMultipartParameter("board", theReply.getParentBoard().getBoardDir())
+ .setMultipartParameter("password", password)
+ .setMultipartParameter("fielda", name)
+ .setMultipartParameter("fieldb", email)
+ .setMultipartParameter("name", "")
+ .setMultipartParameter("email", "")
+ .setMultipartParameter("message", message)
+ .setMultipartParameter("subject", subject)
+ .setMultipartParameter("noimage", "on")
+ .asString()
+ .setCallback(new FutureCallback() {
+ @Override
+ public void onCompleted(Exception e, String result) {
+ Log.v("sendPost", result);
+ if (e != null) {
+ Toast.makeText(getApplicationContext(), "Ha ocurrido un error! ;_;", Toast.LENGTH_LONG).show();
+ formSendPost.setVisibility(View.VISIBLE);
+ err.setText("Error: " + e.getMessage());
+ e.printStackTrace();
+ } else {
+ if (result.contains("ERROR : Flood detectado.")){
+ Toast.makeText(getApplicationContext(), "Error: Flood detectado.", Toast.LENGTH_LONG).show();
+ }else{
+ Toast.makeText(getApplicationContext(), "Post enviado", Toast.LENGTH_LONG).show();
+ }
+ finish();
+ }
}
- }
- });
+ });
+ }else{
+ Ion.with(getApplicationContext())
+ .load("http://bienvenidoainternet.org/cgi/post")
+ .uploadProgressBar(progess)
+ .setMultipartParameter("board", theReply.getParentBoard().getBoardDir())
+ .setMultipartParameter("password", password)
+ .setMultipartParameter("fielda", name)
+ .setMultipartParameter("fieldb", email)
+ .setMultipartParameter("name", "")
+ .setMultipartParameter("email", "")
+ .setMultipartParameter("message", message)
+ .setMultipartParameter("subject", subject)
+ .setMultipartFile("file", up)
+ .asString()
+ .setCallback(new FutureCallback() {
+ @Override
+ public void onCompleted(Exception e, String result) {
+ Log.v("sendPost", result);
+ if (e != null){
+ Toast.makeText(getApplicationContext(), "Ha ocurrido un error! ;_;", Toast.LENGTH_LONG).show();
+ formSendPost.setVisibility(View.VISIBLE);
+ err.setText("Error: " + e.getMessage());
+ e.printStackTrace();
+ }else{
+ if (result.contains("ERROR : Flood detectado.")){
+ Toast.makeText(getApplicationContext(), "Error: Flood detectado.", Toast.LENGTH_LONG).show();
+ }else{
+ Toast.makeText(getApplicationContext(), "Post enviado", Toast.LENGTH_LONG).show();
+ }
+ finish();
+ }
+ }
+ });
+ }
+ }else{
+ if (selectedFile.isEmpty()){
+ Ion.with(getApplicationContext())
+ .load("http://bienvenidoainternet.org/cgi/post")
+ .setLogging("posting", Log.VERBOSE)
+ .uploadProgressBar(progess)
+ .setMultipartParameter("board", theReply.getParentBoard().getBoardDir())
+ .setMultipartParameter("parent", String.valueOf(parentId))
+ .setMultipartParameter("password", password)
+ .setMultipartParameter("fielda", name)
+ .setMultipartParameter("fieldb", email)
+ .setMultipartParameter("name", "")
+ .setMultipartParameter("email", "")
+ .setMultipartParameter("message", message)
+ .setMultipartParameter("subject", subject)
+ .asString()
+ .setCallback(new FutureCallback() {
+ @Override
+ public void onCompleted(Exception e, String result) {
+ Log.v("sendPost", result);
+ if (e != null) {
+ Toast.makeText(getApplicationContext(), "Ha ocurrido un error! ;_;", Toast.LENGTH_LONG).show();
+ formSendPost.setVisibility(View.VISIBLE);
+ err.setText("Error: " + e.getMessage());
+ e.printStackTrace();
+ } else {
+ if (result.contains("ERROR : Flood detectado.")){
+ Toast.makeText(getApplicationContext(), "Error: Flood detectado.", Toast.LENGTH_LONG).show();
+ }else{
+ Toast.makeText(getApplicationContext(), "Post enviado", Toast.LENGTH_LONG).show();
+ }
+ finish();
+ }
+ }
+ });
+ }else{
+ Ion.with(getApplicationContext())
+ .load("http://bienvenidoainternet.org/cgi/post")
+ .uploadProgressBar(progess)
+ .setMultipartParameter("board", theReply.getParentBoard().getBoardDir())
+ .setMultipartParameter("parent", String.valueOf(parentId))
+ .setMultipartParameter("password", password)
+ .setMultipartParameter("fielda", name)
+ .setMultipartParameter("fieldb", email)
+ .setMultipartParameter("name", "")
+ .setMultipartParameter("email", "")
+ .setMultipartParameter("message", message)
+ .setMultipartParameter("subject", subject)
+ .setMultipartFile("file", up)
+ .asString()
+ .setCallback(new FutureCallback() {
+ @Override
+ public void onCompleted(Exception e, String result) {
+ Log.v("sendPost", result);
+ if (e != null){
+ Toast.makeText(getApplicationContext(), "Ha ocurrido un error! ;_;", Toast.LENGTH_LONG).show();
+ formSendPost.setVisibility(View.VISIBLE);
+ err.setText("Error: " + e.getMessage());
+ e.printStackTrace();
+ }else{
+ if (result.contains("ERROR : Flood detectado.")){
+ Toast.makeText(getApplicationContext(), "Error: Flood detectado.", Toast.LENGTH_LONG).show();
+ }else{
+ Toast.makeText(getApplicationContext(), "Post enviado", Toast.LENGTH_LONG).show();
+ }
+ finish();
+ }
+ }
+ });
+ }
}
}
}
diff --git a/app/src/main/java/org/bienvenidoainternet/baiparser/ThreadListAdapter.java b/app/src/main/java/org/bienvenidoainternet/baiparser/ThreadListAdapter.java
index 69c674e..6a23280 100644
--- a/app/src/main/java/org/bienvenidoainternet/baiparser/ThreadListAdapter.java
+++ b/app/src/main/java/org/bienvenidoainternet/baiparser/ThreadListAdapter.java
@@ -108,6 +108,7 @@ public class ThreadListAdapter extends ArrayAdapter{
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this.getContext());
boolean useMonaFont = settings.getBoolean("setting_monafont", true);
boolean monaBbsOnly = settings.getBoolean("setting_mona_bbsonly", true);
+ boolean resizeThumb = settings.getBoolean("setting_resize_thumbs", true);
int marginColor = tm.getMarginColor();
int sageColor = tm.getSageColor();
int nameColor = tm.getNameColor();
@@ -126,12 +127,24 @@ public class ThreadListAdapter extends ArrayAdapter{
ImageView ivMargin = (ImageView)listItemView.findViewById(R.id.ivMargin);
ImageView ivThumb = (ImageView)listItemView.findViewById(R.id.ivThumb);
+// Log.v("resize", resizeThumb + "");
+ if (resizeThumb){
+ ivThumb.setScaleType(ImageView.ScaleType.FIT_XY);
+ }else{
+ ivThumb.setScaleType(ImageView.ScaleType.FIT_CENTER);
+ }
+
ivThumb.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (!boardItem.getThumb().isEmpty() && convertView != null){
- if (boardItem.getFile().endsWith(".webm") || boardItem.getFile().endsWith(".ogg") || boardItem.getFile().endsWith(".opus") || boardItem.getFile().endsWith(".swf")){
- Intent in = new Intent(Intent.ACTION_VIEW, Uri.parse("http://bienvenidoainternet.org/" + boardItem.getParentBoard().getBoardDir() + "/src/" + boardItem.getFile()));
+ if (boardItem.getFile().endsWith(".webm") || boardItem.getFile().endsWith(".ogg") || boardItem.getFile().endsWith(".opus") || boardItem.getFile().endsWith(".swf") || boardItem.youtubeLink){
+ Intent in;
+ if (boardItem.youtubeLink){
+ in = new Intent(Intent.ACTION_VIEW, Uri.parse(boardItem.youtubeURL));
+ }else{
+ in = new Intent(Intent.ACTION_VIEW, Uri.parse("http://bienvenidoainternet.org/" + boardItem.getParentBoard().getBoardDir() + "/src/" + boardItem.getFile()));
+ }
in.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
v.getContext().startActivity(in);
}else {
@@ -244,14 +257,20 @@ public class ThreadListAdapter extends ArrayAdapter{
txtReplies.setText(boardItem.getTotalReplies() + " respuestas " + (boardItem.getTotalFiles() == 0 ? "" : ", " + boardItem.getTotalFiles() + " archivos"));
String fileExt = "";
- if (!boardItem.getFile().isEmpty()){
- String[] pathSplit = boardItem.getFile().split("\\.");
- if (pathSplit.length != 0){
- fileExt = pathSplit[1].toUpperCase();
+ txtFileInfo.setVisibility(boardItem.getThumb().isEmpty() ? View.GONE : View.VISIBLE);
+
+ if (!boardItem.getThumb().isEmpty() && boardItem.getThumb().startsWith("http")){
+ txtFileInfo.setText("YOUTUBE");
+ }else{
+ if (!boardItem.getFile().isEmpty()){
+ String[] pathSplit = boardItem.getFile().split("\\.");
+ if (pathSplit.length != 0){
+ fileExt = pathSplit[1].toUpperCase();
+ }
}
+ txtFileInfo.setText(fileExt + " " + (boardItem.getFileSize() / 1024) + " KB " + boardItem.getThumbHeight() + "x" + boardItem.getThumbWidth());
}
- txtFileInfo.setVisibility(boardItem.getThumb().isEmpty() ? View.GONE : View.VISIBLE);
- txtFileInfo.setText(fileExt + " " + (boardItem.getFileSize() / 1024) + " KB " + boardItem.getThumbHeight() + "x" + boardItem.getThumbWidth());
+
// Trasnparentar items con sage
if (convertView != null){
diff --git a/app/src/main/java/org/bienvenidoainternet/baiparser/structure/Board.java b/app/src/main/java/org/bienvenidoainternet/baiparser/structure/Board.java
index cb95e63..536f476 100644
--- a/app/src/main/java/org/bienvenidoainternet/baiparser/structure/Board.java
+++ b/app/src/main/java/org/bienvenidoainternet/baiparser/structure/Board.java
@@ -24,16 +24,28 @@ import android.os.Parcelable;
public class Board implements Parcelable{
private String boardName, boardDir;
private int boardType;
- public Board(String boardName,String boardDir,int boardType){
+
+ public boolean isCanAttachFiles() {
+ return canAttachFiles;
+ }
+
+ public void setCanAttachFiles(boolean canAttachFiles) {
+ this.canAttachFiles = canAttachFiles;
+ }
+
+ private boolean canAttachFiles;
+ public Board(String boardName, String boardDir, int boardType, boolean canAttachFiles){
this.boardName = boardName;
this.boardDir = boardDir;
this.boardType = boardType;
+ this.canAttachFiles = canAttachFiles;
}
public Board(Parcel in){
this.boardName = in.readString();
this.boardDir = in.readString();
this.boardType = in.readInt();
+ this.canAttachFiles = in.readByte() != 0;
}
public String getBoardDir() {
@@ -70,5 +82,6 @@ public class Board implements Parcelable{
dest.writeString(boardName);
dest.writeString(boardDir);
dest.writeInt(boardType);
+ dest.writeByte((byte)(canAttachFiles ? 1 : 0));
}
}
diff --git a/app/src/main/java/org/bienvenidoainternet/baiparser/structure/BoardItem.java b/app/src/main/java/org/bienvenidoainternet/baiparser/structure/BoardItem.java
index b21d598..8eb55e5 100644
--- a/app/src/main/java/org/bienvenidoainternet/baiparser/structure/BoardItem.java
+++ b/app/src/main/java/org/bienvenidoainternet/baiparser/structure/BoardItem.java
@@ -3,6 +3,12 @@ package org.bienvenidoainternet.baiparser.structure;
import android.graphics.Bitmap;
import android.os.Parcel;
import android.os.Parcelable;
+import android.util.Log;
+
+import org.jsoup.Jsoup;
+import org.jsoup.nodes.Document;
+import org.jsoup.nodes.Element;
+import org.jsoup.parser.Tag;
/**
* BaiApp - Bienvenido a internet Android Application
@@ -31,12 +37,13 @@ public class BoardItem implements Parcelable {
private String message = "";
private String subject = "";
private String posterId = "";
- private int parentid, id, idcolor, totalreplies = 0, totalfiles, thumb_height, thumb_weight, filesize, deleted_code, bbs_id = 1, parentPostCount;
+ public String youtubeURL = "", youtubeID = "";
+ private int parentid = 0, id = 0, idcolor, totalreplies = 0, totalfiles, thumb_height, thumb_weight, filesize, deleted_code, bbs_id = 1, parentPostCount;
private long timestamp = 0;
private Bitmap thumbBitmap = null;
public boolean downloadingThumb = false;
- public boolean isReply = false;
+ public boolean isReply = false, isLocked = false, youtubeLink = false;
private Board parentBoard = null;
protected BoardItem(Parcel in) {
@@ -49,6 +56,8 @@ public class BoardItem implements Parcelable {
message = in.readString();
subject = in.readString();
posterId = in.readString();
+ youtubeURL = in.readString();
+ youtubeID = in.readString();
parentid = in.readInt();
id = in.readInt();
idcolor = in.readInt();
@@ -64,6 +73,8 @@ public class BoardItem implements Parcelable {
thumbBitmap = in.readParcelable(Bitmap.class.getClassLoader());
downloadingThumb = in.readByte() != 0;
isReply = in.readByte() != 0;
+ isLocked = in.readByte() != 0;
+ youtubeLink = in.readByte() != 0;
parentBoard = in.readParcelable(Board.class.getClassLoader());
}
@@ -124,12 +135,22 @@ public class BoardItem implements Parcelable {
}
public void setMessage(String message) {
- // TODO: Dar formato a los mensajes de otra forma
- this.message = message.replace("", "");
- this.message = this.message.replace("", "");
- if (this.message.contains("
", "
") + "";
+ Document msg = Jsoup.parse(message);
+ if (!msg.getElementsByClass("yt").isEmpty()){
+ Element you = msg.getElementsByClass("yt").first();
+ if (this.getFile().isEmpty()){
+ this.thumb = you.getElementsByTag("img").attr("src");
+ String[] parts = thumb.split("/");
+ this.youtubeLink = true;
+ this.youtubeURL = "https://www.youtube.com/watch?v=" + parts[4];
+ this.youtubeID = parts[4];
+ Log.v("ID", youtubeID);
+ }
}
+ msg.select("img[src]").remove();
+ msg.select("span[class=unkfunc]").tagName("font").attr("color", "#8fb56c").wrap("");
+ msg.select("div[class=yt]").wrap("");
+ this.message = msg.html();
}
public String getName() {
@@ -288,6 +309,10 @@ public class BoardItem implements Parcelable {
return this.email.equals("sage");
}
+ public void setLockStatus(int i){
+ this.isLocked = i == 0 ? false : true;
+ }
+
@Override
public int describeContents() {
return 0;
@@ -304,6 +329,8 @@ public class BoardItem implements Parcelable {
dest.writeString(message);
dest.writeString(subject);
dest.writeString(posterId);
+ dest.writeString(youtubeURL);
+ dest.writeString(youtubeID);
dest.writeInt(parentid);
dest.writeInt(id);
dest.writeInt(idcolor);
@@ -319,6 +346,8 @@ public class BoardItem implements Parcelable {
dest.writeParcelable(thumbBitmap, flags);
dest.writeByte((byte) (downloadingThumb ? 1 : 0));
dest.writeByte((byte) (isReply ? 1 : 0));
+ dest.writeByte((byte) (isLocked ? 1 : 0));
+ dest.writeByte((byte) (youtubeLink ? 1 : 0));
dest.writeParcelable(parentBoard, flags);
}
}
diff --git a/app/src/main/java/org/bienvenidoainternet/baiparser/structure/ReplyID.java b/app/src/main/java/org/bienvenidoainternet/baiparser/structure/ReplyID.java
index 2780e74..9cf2319 100644
--- a/app/src/main/java/org/bienvenidoainternet/baiparser/structure/ReplyID.java
+++ b/app/src/main/java/org/bienvenidoainternet/baiparser/structure/ReplyID.java
@@ -4,6 +4,8 @@ import android.graphics.Color;
import android.os.Parcel;
import android.os.Parcelable;
+import org.bienvenidoainternet.baiparser.ThemeManager;
+
import java.util.Random;
/**
@@ -26,10 +28,14 @@ import java.util.Random;
public class ReplyID implements Parcelable{
public String id;
public int color;
- public ReplyID(String id){
+ public ReplyID(String id, ThemeManager tm){
this.id = id;
Random r = new Random();
- this.color = Color.rgb(r.nextInt(125) + 127, r.nextInt(127) + 127, r.nextInt(127) + 127);
+ if (tm.isDarkTheme()){
+ this.color = Color.rgb(r.nextInt(125) + 127, r.nextInt(127) + 127, r.nextInt(127) + 127);
+ }else{
+ this.color = Color.rgb(r.nextInt(125), r.nextInt(127), r.nextInt(127));
+ }
}
protected ReplyID(Parcel in) {
--
cgit v1.2.1-18-gbd029