diff options
Diffstat (limited to 'app/src/main/java/org/bienvenidoainternet/baiparser/MainActivity.java')
-rw-r--r-- | app/src/main/java/org/bienvenidoainternet/baiparser/MainActivity.java | 489 |
1 files changed, 0 insertions, 489 deletions
diff --git a/app/src/main/java/org/bienvenidoainternet/baiparser/MainActivity.java b/app/src/main/java/org/bienvenidoainternet/baiparser/MainActivity.java deleted file mode 100644 index 9a6a344..0000000 --- a/app/src/main/java/org/bienvenidoainternet/baiparser/MainActivity.java +++ /dev/null @@ -1,489 +0,0 @@ -package org.bienvenidoainternet.baiparser; - -import android.app.Activity; -import android.content.Intent; -import android.content.SharedPreferences; -import android.net.Uri; -import android.os.Bundle; -import android.preference.PreferenceManager; -import android.support.design.widget.FloatingActionButton; -import android.support.design.widget.NavigationView; -import android.support.v4.view.GravityCompat; -import android.support.v4.view.ViewPager; -import android.support.v4.widget.DrawerLayout; -import android.support.v7.app.ActionBarDrawerToggle; -import android.support.v7.app.AppCompatActivity; -import android.support.v7.widget.Toolbar; -import android.util.Log; -import android.view.Menu; -import android.view.MenuItem; -import android.view.SubMenu; -import android.view.View; -import android.widget.BaseAdapter; -import android.widget.HeaderViewListAdapter; -import android.widget.ListView; -import android.widget.Toast; - -import com.google.gson.JsonArray; -import com.google.gson.JsonObject; -import com.koushikdutta.async.future.FutureCallback; -import com.koushikdutta.ion.Ion; - -import org.bienvenidoainternet.baiparser.structure.Board; -import org.bienvenidoainternet.baiparser.structure.BoardItem; -import org.json.JSONArray; -import org.json.JSONException; -import org.json.JSONObject; - -import java.util.ArrayList; -import java.util.Random; - -import layout.FragmentBoardItemList; - -/** - * BaiApp - Bienvenido a internet Android Application - * Copyright (C) 2016 Renard1911(https://github.com/Renard1911) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -public class MainActivity extends AppCompatActivity - implements NavigationView.OnNavigationItemSelectedListener, FragmentBoardItemList.OnFragmentInteractionListener { - private ViewPager pager; // variable del ViewPager - CustomFragmentPagerAdapter pagerAdapter; // Adaptador del ViewPager - NavigationView navigationView; - DrawerLayout drawer; - FloatingActionButton fab; - public ThemeManager themeManager; - FragmentBoardItemList childFragment; // Segunda página del ViewPager, se muestra un solo hilo (selecionado del catálogo) - FragmentBoardItemList mainFragment; // Primera página del ViewPager, se muestra una lista de hilos. (catálogo) - Toolbar toolbar = null; - public int currentThemeId = 0, themeId = 0; // Id del recurso, Id del tema - public ArrayList<Board> boardList = new ArrayList<>(); - - @Override - public void onSaveInstanceState(Bundle outState) { - super.onSaveInstanceState(outState); - outState.putInt("currentThemeId", currentThemeId); - outState.putInt("themeId", themeId); - outState.putParcelableArrayList("boardList", boardList); - if (getSupportFragmentManager().getFragments() != null) { - if (getSupportFragmentManager().getFragments().size() != 0) { - try { - getSupportFragmentManager().putFragment(outState, "mainFragment", mainFragment); - getSupportFragmentManager().putFragment(outState, "childFragment", childFragment); - }catch (Exception e){ - e.printStackTrace(); - } - } - } - } - - public int getCurrentThemeId() { - return currentThemeId; - } - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - ThemeManager tm = new ThemeManager(this); - this.setTheme(tm.getThemeForMainActivity()); - - if (savedInstanceState != null) { - currentThemeId = savedInstanceState.getInt("currentThemeId"); - boardList = savedInstanceState.getParcelableArrayList("boardList"); - } - SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this); - if (settings.getString("pref_password", "").isEmpty()){ - SharedPreferences.Editor edit = settings.edit(); - edit.putString("pref_password", makePassword()); - edit.commit(); - } - - setContentView(R.layout.activity_main); - toolbar = (Toolbar) findViewById(R.id.toolbar); - toolbar.setTitle("Bievenido a internet"); - this.setSupportActionBar(toolbar); - - fab = (FloatingActionButton) findViewById(R.id.fab); - fab.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - 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(); - } - } - } - } - } - }); - fab.setVisibility(View.GONE); - - drawer = (DrawerLayout) findViewById(R.id.drawer_layout); - ActionBarDrawerToggle toggle = new ActionBarDrawerToggle( - this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); - drawer.setDrawerListener(toggle); - toggle.syncState(); - - navigationView = (NavigationView) findViewById(R.id.nav_view); - navigationView.setNavigationItemSelectedListener(this); - - if (savedInstanceState != null) { - mainFragment = (FragmentBoardItemList) getSupportFragmentManager().getFragment(savedInstanceState, "mainFragment"); - childFragment = (FragmentBoardItemList) getSupportFragmentManager().getFragment(savedInstanceState, "childFragment"); - } else { - mainFragment = FragmentBoardItemList.newInstance(true, null, null); - childFragment = FragmentBoardItemList.newInstance(false, null, null); - } - - this.pager = (ViewPager) findViewById(R.id.pager); - this.pagerAdapter = new CustomFragmentPagerAdapter(getSupportFragmentManager()); - pagerAdapter.addFragment(mainFragment); - pagerAdapter.addFragment(childFragment); - this.pager.setAdapter(pagerAdapter); - - pager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { - @Override - public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { - - } - - @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()); - } - if (mainFragment.getMode()){ - toolbar.setTitle("Post recientes"); - toolbar.setSubtitle(""); - } - 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.show(); - } - } - } - - @Override - public void onPageScrollStateChanged(int state) { - - } - }); - - if (boardList.isEmpty()){ - getBoardList(); - }else{ - Menu menu = navigationView.getMenu(); - SubMenu sub = menu.addSubMenu("Lista de Boards"); - for (Board b : boardList) { - sub.add(b.getBoardName()); - } - refreshNavigator(); - } - - if (tm.isDarkTheme()){ - navigationView.setBackgroundColor(0xFF888888); - } - } - - - @Override - protected void onActivityResult(int requestCode, int resultCode, Intent data) { - super.onActivityResult(requestCode, resultCode, data); - if (requestCode == 1) { - if(resultCode == Activity.RESULT_OK){ - boolean result = data.getBooleanExtra("result", false); - if (result){ - this.recreate(); - } - } - } - } - - @Override - public void onBackPressed() { - if (this.pager.getCurrentItem() == 0) { - super.onBackPressed(); - } else { - this.pager.setCurrentItem(this.pager.getCurrentItem() - 1); - return; - } - DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); - if (drawer.isDrawerOpen(GravityCompat.START)) { - drawer.closeDrawer(GravityCompat.START); - } else { - super.onBackPressed(); - } - } - - @Override - public boolean onCreateOptionsMenu(Menu menu) { - getMenuInflater().inflate(R.menu.main, menu); - return true; - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - int id = item.getItemId(); - switch (id) { - case R.id.action_exit: - System.exit(0); - break; - case R.id.action_refresh: - if (pager.getCurrentItem() == 0) { - mainFragment.refresh(); - } else { - childFragment.refresh(); - } - if (boardList.isEmpty()){ - getBoardList(); - } - break; - case R.id.action_settings: - Intent in2 = new Intent(getApplicationContext(), SettingsActivity.class); - startActivityForResult(in2, 1); - break; - case R.id.action_to_bot: - if (pager.getCurrentItem() == 0) { - mainFragment.scrollToBotton(); - } else { - childFragment.scrollToBotton(); - } - break; - case R.id.action_to_top: - if (pager.getCurrentItem() == 0) { - mainFragment.scrollToTop(); - } else { - childFragment.scrollToTop(); - } - break; - case R.id.action_about: - startActivity(new Intent(getApplicationContext(), LicensesActivity.class)); - break; - } - return super.onOptionsItemSelected(item); - } - - @SuppressWarnings("StatementWithEmptyBody") - @Override - public boolean onNavigationItemSelected(MenuItem item) { - // Handle navigation view item clicks here. - DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); - drawer.closeDrawer(GravityCompat.START); - int id = item.getItemId(); - toolbar.setSubtitle(item.getTitle()); - if (id == R.id.nav_recent_post){ - toolbar.setTitle("Post recientes"); - toolbar.setSubtitle(""); - pager.setCurrentItem(0); - mainFragment.loadRecentPost(); - } - for (Board b : boardList){ - if (b.getBoardName() == item.getTitle()){ - System.out.println("Updating mainfragment to " + b.getBoardName() + " d: " + b.getBoardDir()); - mainFragment.setCatalogMode(); - mainFragment.updateBoardItems(b, null); - pager.setCurrentItem(0); - navigationView.getMenu().findItem(R.id.nav_recent_post).setChecked(false); - } - } - return true; - } - - public Board getBoardFromDir(String dir){ - for (Board b : boardList){ - if (b.getBoardDir().equals(dir)){ - return b; - } - } - System.out.println("[MainActivity] Board not found " + dir); - return null; - } - - - @Override - public void onFragmentInteraction(Uri uri) { - - } - - @Override - public void showThread(Board board, BoardItem thread) { - childFragment.updateBoardItems(board, thread); - pager.setCurrentItem(1); - } - - - @Override - public void updateToolbar(Board cBoard, BoardItem btem) { - if (pager.getCurrentItem() == 1){ - toolbar.setTitle(cBoard.getBoardName()); - toolbar.setSubtitle(btem.getSubject()); - } - } - - @Override - public void updateToolbar(String s) { - toolbar.setTitle(s); - toolbar.setSubtitle(""); - } - - @Override - public void hideActionButton() { - if (pager.getCurrentItem() == 1){ - fab.hide(); - } - } - - @Override - public void showActionButton() { - if (pager.getCurrentItem() == 1){ - fab.show(); - } - } - - @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"); - Ion.with(getApplicationContext()) - .load("http://bienvenidoainternet.org/cgi/api/boards") - .asString() - .setCallback(new FutureCallback<String>() { - @Override - public void onCompleted(Exception e, String result) { - if (e != null) { - e.printStackTrace(); - Toast.makeText(getApplicationContext(), e.getMessage(), Toast.LENGTH_LONG).show(); - }else { - try { - 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.getInt("allow_image_replies") == 1 ? true : false); - sub.add(parsedBoard.getBoardName()); - boardList.add(parsedBoard); - } - }catch (JSONException e1) { - Toast.makeText(getApplicationContext(), e1.getMessage(), Toast.LENGTH_LONG).show(); - e1.printStackTrace(); - } - } - } - }); - - Board parsedBoard = new Board("Testing Field", "polka", 1, true); - sub.add(parsedBoard.getBoardName()); - boardList.add(parsedBoard); - refreshNavigator(); - } - - public void refreshNavigator(){ - for (int i = 0, count = navigationView.getChildCount(); i < count; i++) { - final View child = navigationView.getChildAt(i); - if (child != null && child instanceof ListView) { - final ListView menuView = (ListView) child; - final HeaderViewListAdapter adapter = (HeaderViewListAdapter) menuView.getAdapter(); - final BaseAdapter wrapped = (BaseAdapter) adapter.getWrappedAdapter(); - wrapped.notifyDataSetChanged(); - } - } - } - - /* - Crea una secuencia de caracteres de 8 digitos aleatorios (incluye mayusculas, minisculas y numeros). - */ - public String makePassword(){ - Random r = new Random(); - String rnd = ""; - for (int i = 0; i < 8; i++){ - int a = r.nextInt(3); - char b; - if (a == 0){ - b = (char)(66 + r.nextInt(25)); - }else if (a == 1){ - b = (char)(97 + r.nextInt(25)); - }else{ - b = (char) (48 + r.nextInt(9)); - } - rnd = rnd + b; - } - return rnd; - } -} |