diff options
Diffstat (limited to 'app')
21 files changed, 544 insertions, 260 deletions
diff --git a/app/build.gradle b/app/build.gradle index 3eaec0f..a41bd51 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -8,8 +8,8 @@ android { applicationId "org.bienvenidoainternet.baiparser" minSdkVersion 15 targetSdkVersion 23 - versionCode 5 - versionName "1.5" + versionCode 6 + versionName "1.6" } buildTypes { release { @@ -30,3 +30,4 @@ dependencies { compile 'com.koushikdutta.ion:ion:2.+' } + diff --git a/app/src/main/java/layout/fragmentThreadList.java b/app/src/main/java/layout/FragmentBoardItemList.java index c06fd93..149def3 100644 --- a/app/src/main/java/layout/fragmentThreadList.java +++ b/app/src/main/java/layout/FragmentBoardItemList.java @@ -38,6 +38,7 @@ import org.bienvenidoainternet.baiparser.MainActivity; import org.bienvenidoainternet.baiparser.R; import org.bienvenidoainternet.baiparser.RecentPostAdapter; import org.bienvenidoainternet.baiparser.ResponseActivity; +import org.bienvenidoainternet.baiparser.ThemeManager; import org.bienvenidoainternet.baiparser.ThreadListAdapter; import org.bienvenidoainternet.baiparser.structure.Board; import org.bienvenidoainternet.baiparser.structure.BoardItem; @@ -55,7 +56,7 @@ import java.net.URLDecoder; import java.util.ArrayList; import java.util.List; -public class fragmentThreadList extends Fragment { +public class FragmentBoardItemList extends Fragment { public static final String ARG_CURRENTBOARD = "currentBoard", ARG_THREAD_ID = "currentThreadId", ARG_MAIN_FRAGMENT = "imMainFragment", SAVED_BOARDITEMS = "savedBoardItems", RECENT_POST_MODE = "recentpostmode", ARG_CURRENT_THREAD = "currentThread"; List<ReplyID> idList = new ArrayList<>(); @@ -80,13 +81,15 @@ public class fragmentThreadList extends Fragment { LinearLayout layoutThreadProcess; TextView txtThreadProcess; - public fragmentThreadList() { + ThemeManager tm; + + public FragmentBoardItemList() { // Required empty public constructor } - public static fragmentThreadList newInstance(boolean mainFragment, Board board, BoardItem thread){ - fragmentThreadList fragment = new fragmentThreadList(); + public static FragmentBoardItemList newInstance(boolean mainFragment, Board board, BoardItem thread){ + FragmentBoardItemList fragment = new FragmentBoardItemList(); Bundle args = new Bundle(); args.putParcelable(ARG_CURRENTBOARD, board); args.putParcelable(ARG_CURRENT_THREAD, thread); @@ -104,6 +107,7 @@ public class fragmentThreadList extends Fragment { this.currentThread = getArguments().getParcelable(ARG_CURRENT_THREAD); this.imMainFragment = getArguments().getBoolean(ARG_MAIN_FRAGMENT); } + tm = new ThemeManager(getActivity()); } @Override @@ -130,7 +134,7 @@ public class fragmentThreadList extends Fragment { // Aplicación del Tema settings = PreferenceManager.getDefaultSharedPreferences(this.getContext()); - int themeResId = ((MainActivity)getActivity()).getCurrentThemeId(); + int themeResId = tm.getCurrentThemeId(); Context context = new ContextThemeWrapper(getActivity(), themeResId); LayoutInflater localInflater = inflater.cloneInContext(context); View v = localInflater.inflate(R.layout.fragment_fragment_thread_list, container, false); @@ -145,14 +149,14 @@ public class fragmentThreadList extends Fragment { this.loadingBar = (ProgressBar)rootView.findViewById(R.id.progressBar); // Agregamos color al divider del listview - ColorDrawable cd = new ColorDrawable((((MainActivity) getActivity()).themeManager).getMarginColor()); + ColorDrawable cd = new ColorDrawable(tm.getMarginColor()); listViewBoardItems.setDivider(cd); listViewBoardItems.setDividerHeight(1); // registramos los menus del listview registerForContextMenu(listViewBoardItems); // Creamos los dos adaptadores y los seteamos dependiendo del modo del fragmento - listViewAdapter = new ThreadListAdapter(v.getContext(), boardItems, (((MainActivity) getActivity()).themeManager)); + listViewAdapter = new ThreadListAdapter(v.getContext(), boardItems, tm); recentPostAdapter = new RecentPostAdapter(v.getContext(), boardItems); if (recentPostMode){ listViewBoardItems.setAdapter(recentPostAdapter); @@ -517,6 +521,7 @@ public class fragmentThreadList extends Fragment { } } listViewAdapter.notifyDataSetChanged(); + listViewAdapter.updateBoardItems(boardItems); loadingMoreThreads = false; if (boardItems.isEmpty()){ mListener.updateToolbar(currentBoard, currentThread); @@ -610,6 +615,7 @@ public class fragmentThreadList extends Fragment { } } listViewAdapter.notifyDataSetChanged(); + listViewAdapter.updateBoardItems(boardItems); if (settings.getBoolean("setting_scrollatnewthread", true)){ listViewBoardItems.setSelection(boardItems.size()); mListener.showActionButton(); diff --git a/app/src/main/java/layout/FragmentImage.java b/app/src/main/java/layout/FragmentImage.java new file mode 100644 index 0000000..f337e5f --- /dev/null +++ b/app/src/main/java/layout/FragmentImage.java @@ -0,0 +1,211 @@ +package layout; + +import android.content.Context; +import android.content.ContextWrapper; +import android.content.Intent; +import android.net.Uri; +import android.os.Bundle; +import android.support.v4.app.Fragment; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.Button; +import android.widget.ProgressBar; +import android.widget.RelativeLayout; + +import com.davemorrissey.labs.subscaleview.ImageSource; +import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView; +import com.koushikdutta.async.future.FutureCallback; +import com.koushikdutta.ion.Ion; + +import org.bienvenidoainternet.baiparser.R; +import org.bienvenidoainternet.baiparser.ViewerActivity; +import org.bienvenidoainternet.baiparser.structure.BoardItemFile; + +import java.io.File; +import java.io.FileOutputStream; +import java.io.InputStream; + +import pl.droidsonroids.gif.GifDrawable; +import pl.droidsonroids.gif.GifImageView; + +/** + * A simple {@link Fragment} subclass. + * Activities that contain this fragment must implement the + * {@link FragmentImage.OnFragmentInteractionListener} interface + * to handle interaction events. + * Use the {@link FragmentImage#newInstance} factory method to + * create an instance of this fragment. + */ +public class FragmentImage extends Fragment { + private static final String ARG_BOARD_ITEM = "param1"; + + public BoardItemFile boardItemFile; + + private OnFragmentInteractionListener mListener; + private SubsamplingScaleImageView imageView; + private GifImageView gifView; + private static final String ARG_FILE_URL = "fileURL"; + private ProgressBar downloadBar; + + public FragmentImage() { + // Required empty public constructor + } + + public static FragmentImage newInstance(BoardItemFile boardItemFile) { + FragmentImage fragment = new FragmentImage(); + Bundle args = new Bundle(); + args.putParcelable(ARG_BOARD_ITEM, boardItemFile); +// args.putString(ARG_FILE_URL, file); + fragment.setArguments(args); + Log.v("FragmentImage", fragment.toString() + " new Fragment"); + return fragment; + } + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + if (getArguments() != null) { +// currentThread = getArguments().getParcelable(ARG_BOARD_ITEM); + boardItemFile = getArguments().getParcelable(ARG_BOARD_ITEM); + } + } + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + // Inflate the layout for this fragment + View view = inflater.inflate(R.layout.fragment_fragment_image, container, false); + imageView = (SubsamplingScaleImageView) view.findViewById(R.id.imageView); + gifView = (GifImageView) view.findViewById(R.id.gifView); + imageView.setVisibility(View.GONE); + gifView.setVisibility(View.GONE); + RelativeLayout layoutOpenBrowser = (RelativeLayout) view.findViewById(R.id.layoutOpenBrowser); + if (boardItemFile.file != null) { + if (!boardItemFile.file.endsWith(".webm") && !boardItemFile.file.endsWith(".swf")) { + layoutOpenBrowser.setVisibility(View.GONE); + downloadFile(); + }else{ + layoutOpenBrowser.setVisibility(View.VISIBLE); + } + } + Button btnOpenBrowser = (Button) view.findViewById(R.id.btnLaunchBrowser); + btnOpenBrowser.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Intent in = new Intent(Intent.ACTION_VIEW, Uri.parse(boardItemFile.fileURL)); + in.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + v.getContext().startActivity(in); + } + }); + return view; + } + + // TODO: Rename method, update argument and hook method into UI event + public void onButtonPressed(Uri uri) { + if (mListener != null) { + mListener.onFragmentInteraction(uri); + } + } + + @Override + public void onAttach(Context context) { + super.onAttach(context); + if (context instanceof OnFragmentInteractionListener) { + mListener = (OnFragmentInteractionListener) context; + } else { + throw new RuntimeException(context.toString() + + " must implement OnFragmentInteractionListener"); + } + } + + @Override + public void onDetach() { + super.onDetach(); + mListener = null; + } + + public void setDownloadBar(ProgressBar downloadBar) { + this.downloadBar = downloadBar; + } + + /** + * This interface must be implemented by activities that contain this + * fragment to allow an interaction in this fragment to be communicated + * to the activity and potentially other fragments contained in that + * activity. + * <p/> + * See the Android Training lesson <a href= + * "http://developer.android.com/training/basics/fragments/communicating.html" + * >Communicating with Other Fragments</a> for more information. + */ + public interface OnFragmentInteractionListener { + // TODO: Update argument type and name + void onFragmentInteraction(Uri uri); + } + + private void downloadFile() { + downloadBar = ((ViewerActivity)getActivity()).barDownload; + downloadBar.setVisibility(View.VISIBLE); + ContextWrapper cw = new ContextWrapper(getContext()); + File directory = cw.getDir("src", Context.MODE_PRIVATE); + final File filePath = new File(directory, boardItemFile.boardDir + "_" + boardItemFile.file); + if (filePath.exists()) { + downloadBar.setVisibility(View.GONE); + if (boardItemFile.file.endsWith(".gif")) { + try { + GifDrawable gifFromFile = new GifDrawable(filePath); + gifView.setImageDrawable(gifFromFile); + gifView.setVisibility(View.VISIBLE); + imageView.setVisibility(View.GONE); + } catch (Exception e) { + e.printStackTrace(); + } + } else { + imageView.setImage(ImageSource.uri(filePath.toURI().getPath())); + imageView.setVisibility(View.VISIBLE); + gifView.setVisibility(View.GONE); + } + } + Ion.with(getContext()) + .load(boardItemFile.fileURL) + .progressBar(downloadBar) + .asInputStream() + .setCallback(new FutureCallback<InputStream>() { + @Override + public void onCompleted(Exception e, InputStream result) { + downloadBar.setVisibility(View.GONE); + if (e != null) { + e.printStackTrace(); + } else { + FileOutputStream fout; + try { + fout = new FileOutputStream(filePath); + final byte data[] = new byte[1024]; + int count; + while ((count = result.read(data, 0, 1024)) != -1) { + fout.write(data, 0, count); + } + } catch (Exception e1) { + e1.printStackTrace(); + } + if (boardItemFile.file.endsWith(".gif")) { + try { + GifDrawable gifFromFile = new GifDrawable(filePath); + gifView.setImageDrawable(gifFromFile); + gifView.setVisibility(View.VISIBLE); + imageView.setVisibility(View.GONE); + } catch (Exception e2) { + e2.printStackTrace(); + } + } else { + imageView.setImage(ImageSource.uri(filePath.toURI().getPath())); + gifView.setVisibility(View.GONE); + imageView.setVisibility(View.VISIBLE); + } + } + } + }); + } +} diff --git a/app/src/main/java/org/bienvenidoainternet/baiparser/LicensesActivity.java b/app/src/main/java/org/bienvenidoainternet/baiparser/LicensesActivity.java index b91ce2b..575754a 100644 --- a/app/src/main/java/org/bienvenidoainternet/baiparser/LicensesActivity.java +++ b/app/src/main/java/org/bienvenidoainternet/baiparser/LicensesActivity.java @@ -1,7 +1,7 @@ package org.bienvenidoainternet.baiparser; -import android.support.v7.app.AppCompatActivity; import android.os.Bundle; +import android.support.v7.app.AppCompatActivity; import android.webkit.WebView; public class LicensesActivity extends AppCompatActivity { @@ -9,7 +9,10 @@ public class LicensesActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + ThemeManager tm = new ThemeManager(this); + this.setTheme(tm.getThemeForActivity()); setContentView(R.layout.activity_licenses); + getSupportActionBar().setTitle("Acerca de BaI App"); WebView webView = (WebView) findViewById(R.id.webView); webView.loadUrl("file:///android_asset/html/licenses.html"); } diff --git a/app/src/main/java/org/bienvenidoainternet/baiparser/MainActivity.java b/app/src/main/java/org/bienvenidoainternet/baiparser/MainActivity.java index 65b51e2..18d2e08 100644 --- a/app/src/main/java/org/bienvenidoainternet/baiparser/MainActivity.java +++ b/app/src/main/java/org/bienvenidoainternet/baiparser/MainActivity.java @@ -3,13 +3,11 @@ package org.bienvenidoainternet.baiparser; import android.app.Activity; import android.content.Intent; import android.content.SharedPreferences; -import android.graphics.Color; 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.design.widget.Snackbar; import android.support.v4.view.GravityCompat; import android.support.v4.view.ViewPager; import android.support.v4.widget.DrawerLayout; @@ -33,27 +31,25 @@ 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.fragmentThreadList; +import layout.FragmentBoardItemList; public class MainActivity extends AppCompatActivity - implements NavigationView.OnNavigationItemSelectedListener, fragmentThreadList.OnFragmentInteractionListener { - - public static final float CURRENT_VERSION = 1.5F; + 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; - fragmentThreadList childFragment; // Segunda página del ViewPager, se muestra un solo hilo (selecionado del catálogo) - fragmentThreadList mainFragment; // Primera página del ViewPager, se muestra una lista de hilos. (catálogo) -// fragmentThreadList recentFragment; + 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<>(); @@ -83,46 +79,25 @@ public class MainActivity extends AppCompatActivity @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); - themeId = Integer.valueOf(settings.getString("pref_theme", "1")); - if (settings.getString("pref_password", "").isEmpty()){ SharedPreferences.Editor edit = settings.edit(); edit.putString("pref_password", makePassword()); edit.commit(); } - switch (themeId) { - case 1: - currentThemeId = R.style.AppTheme_NoActionBar; - break; - case 2: - currentThemeId = R.style.AppTheme_Dark; - break; - case 3: - currentThemeId = R.style.AppTheme_HeadLine; - setTheme(R.style.AppTheme_HeadLine_Activity); - break; - case 4: - currentThemeId = R.style.AppTheme_Black; - setTheme(R.style.AppTheme_Black_Activity); - break; - } - - themeManager = new ThemeManager(this); - Log.d("ThemeManager", "isDarkTheme: " + themeManager.isDarkTheme()); - 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 @@ -155,20 +130,17 @@ public class MainActivity extends AppCompatActivity navigationView.setNavigationItemSelectedListener(this); if (savedInstanceState != null) { - mainFragment = (fragmentThreadList) getSupportFragmentManager().getFragment(savedInstanceState, "mainFragment"); - childFragment = (fragmentThreadList) getSupportFragmentManager().getFragment(savedInstanceState, "childFragment"); -// recentFragment = (fragmentThreadList) getSupportFragmentManager().getFragment(savedInstanceState, "recentFragment"); + mainFragment = (FragmentBoardItemList) getSupportFragmentManager().getFragment(savedInstanceState, "mainFragment"); + childFragment = (FragmentBoardItemList) getSupportFragmentManager().getFragment(savedInstanceState, "childFragment"); } else { - mainFragment = fragmentThreadList.newInstance(true, null, null); - childFragment = fragmentThreadList.newInstance(false, null, null); -// recentFragment = fragmentThreadList.newInstance(false, null, -1); + 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); -// pagerAdapter.addFragment(recentFragment); this.pager.setAdapter(pagerAdapter); pager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { @@ -380,25 +352,25 @@ public class MainActivity extends AppCompatActivity final SubMenu sub = menu.addSubMenu("Lista de Boards"); Ion.with(getApplicationContext()) .load("http://bienvenidoainternet.org/cgi/api/boards") - .asJsonObject() - .setCallback(new FutureCallback<JsonObject>() { + .asString() + .setCallback(new FutureCallback<String>() { @Override - public void onCompleted(Exception e, JsonObject result) { + public void onCompleted(Exception e, String result) { if (e != null) { e.printStackTrace(); Toast.makeText(getApplicationContext(), e.getMessage(), Toast.LENGTH_LONG).show(); - } else { - JsonArray boards = result.get("boards").getAsJsonArray(); - for (int i = 0; i < boards.size(); i++) { - try { - JSONObject board = new JSONObject(boards.get(i).toString()); + }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")); sub.add(parsedBoard.getBoardName()); boardList.add(parsedBoard); - } catch (JSONException e1) { - e1.printStackTrace(); - Toast.makeText(getApplicationContext(), "Error parsing JSON", Toast.LENGTH_LONG).show(); } + }catch (JSONException e1) { + Toast.makeText(getApplicationContext(), e1.getMessage(), Toast.LENGTH_LONG).show(); + e1.printStackTrace(); } } } diff --git a/app/src/main/java/org/bienvenidoainternet/baiparser/ResponseActivity.java b/app/src/main/java/org/bienvenidoainternet/baiparser/ResponseActivity.java index e96868a..350de99 100644 --- a/app/src/main/java/org/bienvenidoainternet/baiparser/ResponseActivity.java +++ b/app/src/main/java/org/bienvenidoainternet/baiparser/ResponseActivity.java @@ -2,12 +2,10 @@ package org.bienvenidoainternet.baiparser; import android.content.Intent; import android.content.SharedPreferences; -import android.graphics.drawable.ColorDrawable; import android.net.Uri; import android.os.Bundle; import android.preference.PreferenceManager; import android.support.v7.app.AppCompatActivity; -import android.support.v7.widget.Toolbar; import android.util.Log; import android.view.Menu; import android.view.MenuItem; @@ -45,10 +43,12 @@ public class ResponseActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + 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"); - Log.v("password", password); if (savedInstanceState != null){ this.theReply = savedInstanceState.getParcelable("theReply"); diff --git a/app/src/main/java/org/bienvenidoainternet/baiparser/SettingsActivity.java b/app/src/main/java/org/bienvenidoainternet/baiparser/SettingsActivity.java index e8e7df4..eefc5fb 100644 --- a/app/src/main/java/org/bienvenidoainternet/baiparser/SettingsActivity.java +++ b/app/src/main/java/org/bienvenidoainternet/baiparser/SettingsActivity.java @@ -95,6 +95,8 @@ public class SettingsActivity extends AppCompatPreferenceActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + ThemeManager tm = new ThemeManager(this); + this.setTheme(tm.getThemeForActivity()); setupActionBar(); getFragmentManager().beginTransaction().replace(android.R.id.content, new GeneralPreferenceFragment()).commit(); } diff --git a/app/src/main/java/org/bienvenidoainternet/baiparser/ThemeManager.java b/app/src/main/java/org/bienvenidoainternet/baiparser/ThemeManager.java index 7f0be86..28c0d74 100644 --- a/app/src/main/java/org/bienvenidoainternet/baiparser/ThemeManager.java +++ b/app/src/main/java/org/bienvenidoainternet/baiparser/ThemeManager.java @@ -1,26 +1,54 @@ package org.bienvenidoainternet.baiparser; +import android.app.Activity; +import android.content.SharedPreferences; import android.content.res.TypedArray; import android.graphics.Color; +import android.preference.PreferenceManager; +import android.util.Log; /** * Created by Renard on 16-03-2016. */ public class ThemeManager { - private MainActivity ac; private int currentThemeId; - public ThemeManager(MainActivity ac){ - this.ac = ac; - this.currentThemeId = ac.getCurrentThemeId(); + private int prefThemeId; + private Activity activity; + public ThemeManager(Activity activity){ + this.activity = activity; + setCurrentThemeId(); + } + + public void setCurrentThemeId(){ + SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(activity); + int themeId = Integer.valueOf(settings.getString("pref_theme", "1")); + prefThemeId = themeId; + switch (themeId) { + case 1: + currentThemeId = R.style.AppTheme_NoActionBar; + break; + case 2: + currentThemeId = R.style.AppTheme_Dark; + break; + case 3: + currentThemeId = R.style.AppTheme_HeadLine; +// setTheme(R.style.AppTheme_HeadLine_Activity); + break; + case 4: + currentThemeId = R.style.AppTheme_Black; +// setTheme(R.style.AppTheme_Black_Activity); + break; + } + Log.d("ThemeManager", "isDarkTheme: " + isDarkTheme()); } public int getSageColor(){ - TypedArray a = ac.getTheme().obtainStyledAttributes(currentThemeId, new int[]{R.attr.sageColor}); + TypedArray a = activity.getTheme().obtainStyledAttributes(currentThemeId, new int[]{R.attr.sageColor}); return a.getColor(0, Color.CYAN); } public int getMarginColor(){ - TypedArray a = ac.getTheme().obtainStyledAttributes(currentThemeId, new int[]{R.attr.marginColor}); + TypedArray a = activity.getTheme().obtainStyledAttributes(currentThemeId, new int[]{R.attr.marginColor}); return a.getColor(0, Color.CYAN); } @@ -29,27 +57,69 @@ public class ThemeManager { } public int getNameColor() { - TypedArray a = ac.getTheme().obtainStyledAttributes(currentThemeId, new int[]{R.attr.nameColor}); + TypedArray a = activity.getTheme().obtainStyledAttributes(currentThemeId, new int[]{R.attr.nameColor}); return a.getColor(0, Color.CYAN); } public int getTripcodeColor() { - TypedArray a = ac.getTheme().obtainStyledAttributes(currentThemeId, new int[]{R.attr.tripcodeColor}); + TypedArray a = activity.getTheme().obtainStyledAttributes(currentThemeId, new int[]{R.attr.tripcodeColor}); return a.getColor(0, Color.CYAN); } public int getPrimaryColor(){ - TypedArray a = ac.getTheme().obtainStyledAttributes(currentThemeId, new int[]{R.attr.colorPrimary}); + TypedArray a = activity.getTheme().obtainStyledAttributes(currentThemeId, new int[]{R.attr.colorPrimary}); return a.getColor(0, Color.CYAN); } public int getPrimaryDarkColor(){ - TypedArray a = ac.getTheme().obtainStyledAttributes(currentThemeId, new int[]{R.attr.colorPrimaryDark}); + TypedArray a = activity.getTheme().obtainStyledAttributes(currentThemeId, new int[]{R.attr.colorPrimaryDark}); return a.getColor(0, Color.CYAN); } public boolean isDarkTheme(){ - TypedArray a = ac.getTheme().obtainStyledAttributes(currentThemeId, new int[]{R.attr.isDarkTheme}); + TypedArray a = activity.getTheme().obtainStyledAttributes(currentThemeId, new int[]{R.attr.isDarkTheme}); return a.getBoolean(0, false); } + public int getThemeForActivity(){ + int id = R.style.AppTheme; + switch (prefThemeId) { + case 1: // pseudoch + id = R.style.AppTheme; + break; + case 2: // nightmode + id = R.style.AppTheme; + break; + case 3: // photon + id = R.style.AppTheme_HeadLineActionBar; + break; + case 4: // tomorrow + id = R.style.AppTheme_BlackActionBar; + break; + } + return id; + } + + public int getThemeForMainActivity(){ + int id = R.style.AppTheme_NoActionBar; + switch (prefThemeId) { + case 1: // pseudoch + id = R.style.AppTheme_NoActionBar; + break; + case 2: // nightmode + id = R.style.AppTheme_NoActionBar; + break; + case 3: // photon + id = R.style.AppTheme_HeadLineActionBar_NoActionBar; + break; + case 4: // tomorrow + id = R.style.AppTheme_BlackActionBar_NoActionBar; + break; + } + return id; + } + + + public int getCurrentThemeId() { + return currentThemeId; + } } diff --git a/app/src/main/java/org/bienvenidoainternet/baiparser/ThreadListAdapter.java b/app/src/main/java/org/bienvenidoainternet/baiparser/ThreadListAdapter.java index 118e9c6..7a85c1f 100644 --- a/app/src/main/java/org/bienvenidoainternet/baiparser/ThreadListAdapter.java +++ b/app/src/main/java/org/bienvenidoainternet/baiparser/ThreadListAdapter.java @@ -1,12 +1,8 @@ package org.bienvenidoainternet.baiparser; -import android.animation.ArgbEvaluator; -import android.animation.ObjectAnimator; -import android.animation.ValueAnimator; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; -import android.graphics.Color; import android.graphics.Paint; import android.graphics.Typeface; import android.graphics.drawable.ColorDrawable; @@ -28,6 +24,7 @@ import android.widget.ImageView; import android.widget.TextView; import org.bienvenidoainternet.baiparser.structure.BoardItem; +import org.bienvenidoainternet.baiparser.structure.BoardItemFile; import java.util.ArrayList; import java.util.Collections; @@ -36,7 +33,6 @@ import java.util.EnumSet; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; -import java.util.Random; import java.util.concurrent.TimeUnit; /** @@ -47,6 +43,8 @@ public class ThreadListAdapter extends ArrayAdapter<BoardItem>{ private ThemeManager tm; Typeface monaFont; public boolean listThreads = false; + private ArrayList<BoardItem> boardItems = new ArrayList<BoardItem>(); + private static final String EXTRA_FILELIST = "fileList"; public ThreadListAdapter(Context context, List<BoardItem> objects, ThemeManager tm) { super(context, 0, objects); @@ -55,6 +53,10 @@ public class ThreadListAdapter extends ArrayAdapter<BoardItem>{ monaFont = Typeface.createFromAsset(context.getAssets(), "fonts/mona.ttf"); } + public void updateBoardItems(ArrayList<BoardItem> boardItems){ + this.boardItems = boardItems; + } + private String intToHexString(int i){ return String.format("#%06X", (0xFFFFFF & i)); } @@ -73,7 +75,7 @@ public class ThreadListAdapter extends ArrayAdapter<BoardItem>{ return result; } @Override - public View getView(int position, final View convertView, final ViewGroup parent){ + public View getView(final int position, final View convertView, final ViewGroup parent){ LayoutInflater inflater = (LayoutInflater)getContext() .getSystemService(Context.LAYOUT_INFLATER_SERVICE); View listItemView = convertView; @@ -120,7 +122,18 @@ public class ThreadListAdapter extends ArrayAdapter<BoardItem>{ }else { Intent in = new Intent(convertView.getContext(), ViewerActivity.class); Bundle b = new Bundle(); - b.putParcelable("boardItem", boardItem); + ArrayList<BoardItemFile> fileList = new ArrayList<BoardItemFile>(); + int relativePosition = 0; + for (int i = 0; i < boardItems.size(); i++){ + if (!boardItems.get(i).getFile().isEmpty()){ + if (boardItems.get(i).getFile().equals(boardItem.getFile())){ + relativePosition = fileList.size(); + } + fileList.add(new BoardItemFile("http://bienvenidoainternet.org/" + boardItems.get(i).getParentBoard().getBoardDir() + "/src/" + boardItems.get(i).getFile(), boardItems.get(i).getFile(), boardItems.get(i).getParentBoard().getBoardDir())); + } + } + b.putParcelableArrayList(EXTRA_FILELIST, fileList); + b.putInt("position", relativePosition); in.putExtras(b); convertView.getContext().startActivity(in); } @@ -215,12 +228,21 @@ public class ThreadListAdapter extends ArrayAdapter<BoardItem>{ txtReplies.setVisibility(boardItem.isReply ? View.GONE : View.VISIBLE); 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); - txtFileInfo.setText((boardItem.getFileSize() / 1024) + " KB " + boardItem.getThumbHeight() + "x" + boardItem.getThumbWidth()); + txtFileInfo.setText(fileExt + " " + (boardItem.getFileSize() / 1024) + " KB " + boardItem.getThumbHeight() + "x" + boardItem.getThumbWidth()); // Trasnparentar items con sage if (convertView != null){ - convertView.setAlpha(boardItem.isSage() ? 0.75F : 1.0F); + if (settings.getBoolean("pref_transparent_sage", true)){ + convertView.setAlpha(boardItem.isSage() ? 0.75F : 1.0F); + } } /* diff --git a/app/src/main/java/org/bienvenidoainternet/baiparser/ViewerActivity.java b/app/src/main/java/org/bienvenidoainternet/baiparser/ViewerActivity.java index 4501c0f..8dc1262 100644 --- a/app/src/main/java/org/bienvenidoainternet/baiparser/ViewerActivity.java +++ b/app/src/main/java/org/bienvenidoainternet/baiparser/ViewerActivity.java @@ -2,55 +2,71 @@ package org.bienvenidoainternet.baiparser; import android.content.Context; import android.content.ContextWrapper; -import android.graphics.Bitmap; -import android.os.AsyncTask; +import android.media.MediaScannerConnection; +import android.net.Uri; import android.os.Bundle; import android.os.Environment; +import android.support.v4.view.ViewPager; import android.support.v7.app.AppCompatActivity; +import android.util.Log; import android.view.Menu; import android.view.MenuItem; -import android.view.View; import android.widget.ProgressBar; import android.widget.Toast; -import com.davemorrissey.labs.subscaleview.ImageSource; -import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView; -import com.koushikdutta.async.future.FutureCallback; -import com.koushikdutta.ion.Ion; - -import org.bienvenidoainternet.baiparser.structure.BoardItem; +import org.bienvenidoainternet.baiparser.structure.BoardItemFile; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStream; +import java.util.ArrayList; -import pl.droidsonroids.gif.GifDrawable; -import pl.droidsonroids.gif.GifImageView; - -public class ViewerActivity extends AppCompatActivity { - private SubsamplingScaleImageView imageView; - private GifImageView gifView; - private BoardItem bi; - File imagePath; +import layout.FragmentImage; +public class ViewerActivity extends AppCompatActivity implements FragmentImage.OnFragmentInteractionListener { + private static final String EXTRA_FILELIST = "fileList", EXTRA_RELATIVEPOSITION = "position"; + private ViewPager imagePager; + public ProgressBar barDownload; + private int relativePosition = 0; + public ArrayList<BoardItemFile> fileList = new ArrayList<BoardItemFile>(); + private CustomFragmentPagerAdapter pagerAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - if (savedInstanceState != null){ - bi = savedInstanceState.getParcelable("boardItem"); - } if (getIntent().getExtras() != null){ - bi = getIntent().getParcelableExtra("boardItem"); + fileList = getIntent().getParcelableArrayListExtra(EXTRA_FILELIST); + relativePosition = getIntent().getIntExtra(EXTRA_RELATIVEPOSITION, 0); } setContentView(R.layout.activity_viewer); - imageView = (SubsamplingScaleImageView)findViewById(R.id.imageView); - gifView = (GifImageView) findViewById(R.id.gifView); - setTitle(bi.getFile()); - downloadFile(); + barDownload = (ProgressBar) findViewById(R.id.downloadProgressBar); + imagePager = (ViewPager) findViewById(R.id.imagePager); + this.pagerAdapter = new CustomFragmentPagerAdapter(getSupportFragmentManager()); + for (int i = 0; i < fileList.size(); i++){ + Log.v("ImageViewer", fileList.get(i).toString()); + pagerAdapter.addFragment(FragmentImage.newInstance(fileList.get(i))); + } + imagePager.setAdapter(pagerAdapter); + imagePager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { + @Override + public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { + + } + + @Override + public void onPageSelected(int position) { + getSupportActionBar().setSubtitle("(" + (position + 1) + " / " + fileList.size() + ") " + fileList.get(position).file); + } + + @Override + public void onPageScrollStateChanged(int state) { + + } + }); + imagePager.setCurrentItem(relativePosition); this.getSupportActionBar().setDisplayHomeAsUpEnabled(true); } @@ -61,9 +77,13 @@ public class ViewerActivity extends AppCompatActivity { baiDir.mkdir(); } if (item.getItemId() == R.id.menu_save_img){ - File to = new File(Environment.getExternalStorageDirectory().getPath() + "/Bai/" + bi.getFile()); + BoardItemFile boardItemFile = fileList.get(imagePager.getCurrentItem()); + File to = new File(Environment.getExternalStorageDirectory().getPath() + "/Bai/" + boardItemFile.file); + ContextWrapper cw = new ContextWrapper(getApplicationContext()); + File directory = cw.getDir("src", Context.MODE_PRIVATE); + File fileSource = new File(directory, boardItemFile.boardDir + "_" + boardItemFile.file); try{ - InputStream in = new FileInputStream(imagePath); + InputStream in = new FileInputStream(fileSource); OutputStream out = new FileOutputStream(to); byte[] buf = new byte[1024]; int len; @@ -72,7 +92,8 @@ public class ViewerActivity extends AppCompatActivity { } in.close(); out.close(); - Toast.makeText(getApplicationContext(), bi.getFile() + " guardado.", Toast.LENGTH_LONG).show(); + Toast.makeText(getApplicationContext(), boardItemFile.file + " guardado.", Toast.LENGTH_LONG).show(); + MediaScannerConnection.scanFile(this, new String[]{to.getPath()}, new String[]{"image/jpeg"}, null); }catch (Exception e){ e.printStackTrace(); } @@ -91,135 +112,8 @@ public class ViewerActivity extends AppCompatActivity { return true; } - private void downloadFile(){ - ContextWrapper cw = new ContextWrapper(getApplicationContext()); - File directory = cw.getDir("src", Context.MODE_PRIVATE); - final File filePath = new File(directory, bi.getParentBoard().getBoardDir() + "_" + bi.getFile()); - final ProgressBar downloadBar = (ProgressBar) findViewById(R.id.downloadProgressBar); - if (filePath.exists()){ - downloadBar.setVisibility(View.GONE); - if (bi.getFile().endsWith(".gif")){ - try { - GifDrawable gifFromFile = new GifDrawable(filePath); - gifView.setImageDrawable(gifFromFile); - imageView.setVisibility(View.GONE); - }catch(Exception e){ - e.printStackTrace(); - } - }else{ - imageView.setImage(ImageSource.uri(filePath.toURI().getPath())); - gifView.setVisibility(View.GONE); - } - } - Ion.with(getApplicationContext()) - .load("http://bienvenidoainternet.org/" + bi.getParentBoard().getBoardDir() + "/src/" + bi.getFile()) - .progressBar(downloadBar) - .asInputStream() - .setCallback(new FutureCallback<InputStream>() { - @Override - public void onCompleted(Exception e, InputStream result) { - downloadBar.setVisibility(View.GONE); - if (e != null){ - e.printStackTrace(); - }else{ - FileOutputStream fout; - try { - fout = new FileOutputStream(filePath); - final byte data[] = new byte[1024]; - int count; - while ((count = result.read(data, 0, 1024)) != -1) { - fout.write(data, 0, count); - } - }catch(Exception e1) { - e1.printStackTrace(); - } - if (bi.getFile().endsWith(".gif")){ - try { - GifDrawable gifFromFile = new GifDrawable(filePath); - gifView.setImageDrawable(gifFromFile); - imageView.setVisibility(View.GONE); - }catch(Exception e2){ - e2.printStackTrace(); - } - }else{ - imageView.setImage(ImageSource.uri(filePath.toURI().getPath())); - gifView.setVisibility(View.GONE); - } - } - } - }); - } - - class TaskDownloadFile extends AsyncTask<Void, Void, File> { - - @Override - protected File doInBackground(Void... params) { - Bitmap downloadedBitmap = null; - ContextWrapper cw = new ContextWrapper(getApplicationContext()); - File directory = cw.getDir("src", Context.MODE_PRIVATE); - File mypath = new File(directory, bi.getParentBoard().getBoardDir() + "_" + bi.getFile()); - if (mypath.exists()){ - System.out.println("[Viewer] resource exist!"); - return mypath; - } - try { - String sUrl = "http://bienvenidoainternet.org/" + bi.getParentBoard().getBoardDir() + "/src/" + bi.getFile(); - System.out.println("[Viewer]dwonloading " + sUrl); -// System.out.println(sUrl); - InputStream in = new java.net.URL(sUrl).openStream(); -// downloadedBitmap = BitmapFactory.decodeStream(in); - -// if (downloadedBitmap != null){ - FileOutputStream fout = null; - try { -// in = new BufferedInputStream(new URL(urlString).openStream()); - fout = new FileOutputStream(mypath); - - final byte data[] = new byte[1024]; - int count; - while ((count = in.read(data, 0, 1024)) != -1) { - fout.write(data, 0, count); - } - - - }catch(Exception e){ - e.printStackTrace(); - }finally { - if (in != null) { - in.close(); - } - if (fout != null) { - fout.close(); - } - } -// } - } catch (Exception e) { - e.printStackTrace(); - } - - return mypath; - } - - @Override - protected void onPostExecute(File file) { - super.onPostExecute(file); - imagePath = file; -// iv.setImageBitmap(bitmap); - if (bi.getFile().endsWith(".gif")){ - try { - GifDrawable gifFromFile = new GifDrawable(file); - gifView.setImageDrawable(gifFromFile); - imageView.setVisibility(View.GONE); - }catch(Exception e){ - e.printStackTrace(); - } - }else{ - imageView.setImage(ImageSource.uri(file.toURI().getPath())); - gifView.setVisibility(View.GONE); -// imageView.setImage(ImageSource.resource(R.drawable.bai)); -// System.out.println("not a gif file: " + file.toURI().getPath()); - } + @Override + public void onFragmentInteraction(Uri uri) { - } } } diff --git a/app/src/main/java/org/bienvenidoainternet/baiparser/structure/BoardItemFile.java b/app/src/main/java/org/bienvenidoainternet/baiparser/structure/BoardItemFile.java new file mode 100644 index 0000000..eeff1c4 --- /dev/null +++ b/app/src/main/java/org/bienvenidoainternet/baiparser/structure/BoardItemFile.java @@ -0,0 +1,49 @@ +package org.bienvenidoainternet.baiparser.structure; + +import android.os.Parcel; +import android.os.Parcelable; + +/** + * Created by Renard on 08-04-2016. + */ +public class BoardItemFile implements Parcelable{ + public String file; + public String fileURL; + public String boardDir; + + public BoardItemFile(String fileURL, String file, String boardDir){ + this.fileURL = fileURL; + this.file = file; + this.boardDir = boardDir; + } + + protected BoardItemFile(Parcel in) { + file = in.readString(); + fileURL = in.readString(); + boardDir = in.readString(); + } + + public static final Creator<BoardItemFile> CREATOR = new Creator<BoardItemFile>() { + @Override + public BoardItemFile createFromParcel(Parcel in) { + return new BoardItemFile(in); + } + + @Override + public BoardItemFile[] newArray(int size) { + return new BoardItemFile[size]; + } + }; + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeString(file); + dest.writeString(fileURL); + dest.writeString(boardDir); + } +} diff --git a/app/src/main/res/layout/activity_response.xml b/app/src/main/res/layout/activity_response.xml index bfd143e..15d35eb 100644 --- a/app/src/main/res/layout/activity_response.xml +++ b/app/src/main/res/layout/activity_response.xml @@ -1,7 +1,6 @@ <?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" android:paddingBottom="@dimen/activity_vertical_margin" diff --git a/app/src/main/res/layout/activity_viewer.xml b/app/src/main/res/layout/activity_viewer.xml index b66e66b..7febe39 100644 --- a/app/src/main/res/layout/activity_viewer.xml +++ b/app/src/main/res/layout/activity_viewer.xml @@ -4,21 +4,19 @@ android:layout_width="match_parent" android:layout_height="match_parent" tools:context="org.bienvenidoainternet.baiparser.ViewerActivity"> - - <com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView - android:id="@+id/imageView" - android:layout_width="match_parent" - android:layout_height="match_parent"/> - <pl.droidsonroids.gif.GifImageView - android:id="@+id/gifView" - android:layout_width="match_parent" - android:layout_height="match_parent"/> - <ProgressBar style="?android:attr/progressBarStyleHorizontal" android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/downloadProgressBar" android:layout_alignParentTop="true" - android:layout_centerHorizontal="true" /> + android:layout_alignParentLeft="true" + android:layout_alignParentStart="true" /> + <android.support.v4.view.ViewPager + android:id="@+id/imagePager" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_below="@+id/downloadProgressBar" + android:layout_alignParentLeft="true" + android:layout_alignParentStart="true" /> </RelativeLayout> diff --git a/app/src/main/res/layout/fragment_fragment_image.xml b/app/src/main/res/layout/fragment_fragment_image.xml new file mode 100644 index 0000000..5d44190 --- /dev/null +++ b/app/src/main/res/layout/fragment_fragment_image.xml @@ -0,0 +1,42 @@ +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="match_parent" + android:layout_height="match_parent" + tools:context="layout.FragmentImage" + android:orientation="vertical"> + + <RelativeLayout + android:orientation="horizontal" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:id="@+id/layoutOpenBrowser"> + + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:textAppearance="?android:attr/textAppearanceMedium" + android:text="No se puede visualizar este archivo." + android:layout_centerVertical="true" + android:layout_centerHorizontal="true" + android:id="@+id/textView2" + android:textColor="#ff0000" /> + + <Button + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="Abrir en el navegador" + android:id="@+id/btnLaunchBrowser" + android:layout_below="@+id/textView2" + android:layout_centerHorizontal="true" /> + </RelativeLayout> + + <com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView + android:id="@+id/imageView" + android:layout_width="match_parent" + android:layout_height="match_parent"/> + <pl.droidsonroids.gif.GifImageView + android:id="@+id/gifView" + android:layout_width="match_parent" + android:layout_height="match_parent"/> + +</LinearLayout> diff --git a/app/src/main/res/layout/fragment_fragment_thread_list.xml b/app/src/main/res/layout/fragment_fragment_thread_list.xml index af88df4..477c236 100644 --- a/app/src/main/res/layout/fragment_fragment_thread_list.xml +++ b/app/src/main/res/layout/fragment_fragment_thread_list.xml @@ -1,5 +1,4 @@ <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_alignParentTop="true" diff --git a/app/src/main/res/menu/menu_viewer.xml b/app/src/main/res/menu/menu_viewer.xml index 31069eb..bb4352b 100644 --- a/app/src/main/res/menu/menu_viewer.xml +++ b/app/src/main/res/menu/menu_viewer.xml @@ -1,6 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<menu xmlns:tools="http://schemas.android.com/tools" - xmlns:android="http://schemas.android.com/apk/res/android" +<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <item android:title="Guardar" android:id="@+id/menu_save_img" diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 5806545..8274b32 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -14,8 +14,8 @@ <color name="nightMarginColor">#58636c</color> <!-- 3 58636c--> <color name="nightTextColor">#979ea3</color> <!-- 6 --> <color name="nightLinkColor">#c0c4c8</color> <!-- 8 --> - <color name="nightNameColor">#2e5f96</color> - <color name="nightSageColor">#5f962e</color> + <color name="nightNameColor">#5f962e</color> + <color name="nightSageColor">#2e5f96</color> <color name="nightTripcodeColor">#962e5f</color> <color name="headlineBackground">#DDDDDD</color> <!-- 1 --> diff --git a/app/src/main/res/values/drawables.xml b/app/src/main/res/values/drawables.xml index 52c6a6c..9036d27 100644 --- a/app/src/main/res/values/drawables.xml +++ b/app/src/main/res/values/drawables.xml @@ -1,4 +1,4 @@ -<resources xmlns:android="http://schemas.android.com/apk/res/android"> +<resources> <item name="ic_menu_camera" type="drawable">@android:drawable/ic_menu_camera</item> <item name="ic_menu_gallery" type="drawable">@android:drawable/ic_menu_gallery</item> <item name="ic_menu_slideshow" type="drawable">@android:drawable/ic_menu_slideshow</item> diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 7fa3e34..f5be573 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -73,4 +73,7 @@ <string name="title_activity_settings">Opciones</string> + <!-- TODO: Remove or change this placeholder text --> + <string name="hello_blank_fragment">Hello blank fragment</string> + </resources> diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 5cadb6e..4d0766f 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -31,7 +31,12 @@ <item name="isDarkTheme">true</item> </style> - <style name="AppTheme.HeadLine.Activity" parent="AppTheme.NoActionBar"> + <style name="AppTheme.HeadLineActionBar.NoActionBar" parent="AppTheme.HeadLineActionBar"> + <item name="windowActionBar">false</item> + <item name="windowNoTitle">true</item> + </style> + + <style name="AppTheme.HeadLineActionBar"> <item name="colorPrimary">@color/headlineTextColor</item> <item name="colorPrimaryDark">@color/blackBackground</item> <item name="colorAccent">@color/headlineLinkColor</item> @@ -53,7 +58,12 @@ <item name="isDarkTheme">false</item> </style> - <style name="AppTheme.Black.Activity" parent="AppTheme.NoActionBar"> + <style name="AppTheme.BlackActionBar.NoActionBar" parent="AppTheme.BlackActionBar"> + <item name="windowActionBar">false</item> + <item name="windowNoTitle">true</item> + </style> + + <style name="AppTheme.BlackActionBar"> <item name="colorPrimary">@color/blackBackground</item> <item name="colorPrimaryDark">@color/blackMarginColor</item> <item name="colorAccent">@color/blackMarginColor</item> diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index 7f6d5b9..459f65c 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -49,6 +49,10 @@ android:entries="@array/pref_lastreplies_desc" android:entryValues="@array/pref_lastreplies_values" android:defaultValue="30"/> + <SwitchPreference + android:title="Transparentar sages" + android:key="pref_transparent_sage" + android:defaultValue="true"/> </PreferenceCategory> <PreferenceCategory android:title="Formulario de respuesta"> |