Fixed all tabs to 4 spaces

captchafix
Florens Douwes 12 years ago
parent b9a24501c4
commit ad88ae0410
  1. 8
      Chan/src/com/android/volley/extra/JsonReaderRequest.java
  2. 2
      Chan/src/org/floens/chan/ChanApplication.java
  3. 158
      Chan/src/org/floens/chan/activity/BaseActivity.java
  4. 224
      Chan/src/org/floens/chan/activity/BoardActivity.java
  5. 4
      Chan/src/org/floens/chan/activity/BoardEditor.java
  6. 26
      Chan/src/org/floens/chan/activity/CatalogActivity.java
  7. 42
      Chan/src/org/floens/chan/activity/DeveloperActivity.java
  8. 52
      Chan/src/org/floens/chan/activity/ReplyActivity.java
  9. 14
      Chan/src/org/floens/chan/adapter/PinnedAdapter.java
  10. 68
      Chan/src/org/floens/chan/database/DatabaseHelper.java
  11. 108
      Chan/src/org/floens/chan/database/DatabaseManager.java
  12. 74
      Chan/src/org/floens/chan/fragment/PostRepliesFragment.java
  13. 88
      Chan/src/org/floens/chan/fragment/ReplyFragment.java
  14. 12
      Chan/src/org/floens/chan/fragment/SettingsFragment.java
  15. 14
      Chan/src/org/floens/chan/fragment/ThreadFragment.java
  16. 16
      Chan/src/org/floens/chan/imageview/fragment/ImageViewFragment.java
  17. 2
      Chan/src/org/floens/chan/imageview/view/NetworkPhotoView.java
  18. 10
      Chan/src/org/floens/chan/manager/BoardManager.java
  19. 42
      Chan/src/org/floens/chan/manager/PinnedManager.java
  20. 104
      Chan/src/org/floens/chan/manager/ThreadManager.java
  21. 30
      Chan/src/org/floens/chan/model/Loadable.java
  22. 6
      Chan/src/org/floens/chan/model/Pin.java
  23. 42
      Chan/src/org/floens/chan/model/Post.java
  24. 24
      Chan/src/org/floens/chan/model/PostLinkable.java
  25. 38
      Chan/src/org/floens/chan/net/ChanReaderRequest.java
  26. 38
      Chan/src/org/floens/chan/net/ChanUrls.java
  27. 8
      Chan/src/org/floens/chan/net/ThreadLoader.java
  28. 38
      Chan/src/org/floens/chan/utils/ChanPreferences.java
  29. 62
      Chan/src/org/floens/chan/utils/IOUtils.java
  30. 112
      Chan/src/org/floens/chan/utils/Logger.java
  31. 46
      Chan/src/org/floens/chan/view/PostView.java

@ -47,10 +47,10 @@ public abstract class JsonReaderRequest<T> extends Request<T> {
T read = readJson(reader);
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
// Log.e("Chan", "Total time: " + (System.currentTimeMillis() - start));

@ -40,7 +40,7 @@ public class ChanApplication extends Application {
}
public static SharedPreferences getPreferences() {
return PreferenceManager.getDefaultSharedPreferences(instance);
return PreferenceManager.getDefaultSharedPreferences(instance);
}
@Override

@ -49,18 +49,18 @@ public abstract class BaseActivity extends Activity implements PanelSlideListene
private ShareActionProvider shareActionProvider;
/**
* Called when a post has been clicked in the pinned drawer
* @param post
*/
abstract public void openPin(Pin post);
/**
* Called when a post has been clicked in the listview
* @param post
*/
abstract public void onOPClicked(Post post);
* Called when a post has been clicked in the pinned drawer
* @param post
*/
abstract public void openPin(Pin post);
/**
* Called when a post has been clicked in the listview
* @param post
*/
abstract public void onOPClicked(Post post);
@Override
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@ -72,7 +72,7 @@ public abstract class BaseActivity extends Activity implements PanelSlideListene
threadPane = (SlidingPaneLayout) findViewById(R.id.pane_container);
initPane();
}
protected void initDrawer() {
if (pinDrawerListener == null) {
return;
@ -96,23 +96,23 @@ public abstract class BaseActivity extends Activity implements PanelSlideListene
});
pinDrawerView.setOnItemLongClickListener(new OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
Pin post = pinnedAdapter.getItem(position);
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
Pin post = pinnedAdapter.getItem(position);
if (post == null || post.type == Pin.Type.HEADER) return false;
changePinTitle(post);
return true;
}
});
return true;
}
});
SwipeDismissListViewTouchListener touchListener = new SwipeDismissListViewTouchListener(pinDrawerView,
new DismissCallbacks() {
@Override
public void onDismiss(ListView listView, int[] reverseSortedPositions) {
for (int position : reverseSortedPositions) {
removePin(pinnedAdapter.getItem(position));
removePin(pinnedAdapter.getItem(position));
}
}
@ -127,7 +127,7 @@ public abstract class BaseActivity extends Activity implements PanelSlideListene
}
private void initPane() {
threadPane.setPanelSlideListener(this);
threadPane.setPanelSlideListener(this);
threadPane.setParallaxDistance(200);
threadPane.setShadowResource(R.drawable.panel_shadow);
threadPane.setSliderFadeColor(0xcce5e5e5);
@ -135,62 +135,62 @@ public abstract class BaseActivity extends Activity implements PanelSlideListene
}
public void addPin(Pin pin) {
if (PinnedManager.getInstance().add(pin)) {
pinnedAdapter.add(pin);
}
if (PinnedManager.getInstance().add(pin)) {
pinnedAdapter.add(pin);
}
}
public void removePin(Pin pin) {
PinnedManager.getInstance().remove(pin);
pinnedAdapter.remove(pin);
PinnedManager.getInstance().remove(pin);
pinnedAdapter.remove(pin);
}
public void updatePin(Pin pin) {
PinnedManager.getInstance().update(pin);
PinnedManager.getInstance().update(pin);
pinnedAdapter.notifyDataSetChanged();
}
private void changePinTitle(final Pin pin) {
final EditText text = new EditText(this);
text.setSingleLine();
text.setText(pin.loadable.title);
text.setSelectAllOnFocus(true);
AlertDialog dialog = new AlertDialog.Builder(this)
.setPositiveButton(R.string.change, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface d, int which) {
String value = text.getText().toString();
if (!TextUtils.isEmpty(value)) {
pin.loadable.title = value;
updatePin(pin);
}
}
})
.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface d, int which) {
}
})
.setTitle(R.string.drawer_pinned_change_title)
.setView(text)
.create();
text.requestFocus();
dialog.setOnShowListener(new OnShowListener() {
@Override
public void onShow(DialogInterface dialog) {
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(text, 0);
}
});
dialog.show();
}
private void changePinTitle(final Pin pin) {
final EditText text = new EditText(this);
text.setSingleLine();
text.setText(pin.loadable.title);
text.setSelectAllOnFocus(true);
AlertDialog dialog = new AlertDialog.Builder(this)
.setPositiveButton(R.string.change, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface d, int which) {
String value = text.getText().toString();
if (!TextUtils.isEmpty(value)) {
pin.loadable.title = value;
updatePin(pin);
}
}
})
.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface d, int which) {
}
})
.setTitle(R.string.drawer_pinned_change_title)
.setView(text)
.create();
text.requestFocus();
dialog.setOnShowListener(new OnShowListener() {
@Override
public void onShow(DialogInterface dialog) {
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(text, 0);
}
});
dialog.show();
}
@Override
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()) {
case R.id.action_settings:
@ -210,16 +210,16 @@ public abstract class BaseActivity extends Activity implements PanelSlideListene
}
@Override
public void onPanelClosed(View view) {
}
public void onPanelClosed(View view) {
}
@Override
public void onPanelOpened(View view) {
}
@Override
public void onPanelOpened(View view) {
}
@Override
public void onPanelSlide(View view, float offset) {
}
@Override
public void onPanelSlide(View view, float offset) {
}
/**
* Set the url that Android Beam and the share action will send.
@ -242,10 +242,10 @@ public abstract class BaseActivity extends Activity implements PanelSlideListene
}
if (shareActionProvider != null) {
Intent share = new Intent(android.content.Intent.ACTION_SEND);
share.putExtra(android.content.Intent.EXTRA_TEXT, url);
share.setType("text/plain");
shareActionProvider.setShareIntent(share);
Intent share = new Intent(android.content.Intent.ACTION_SEND);
share.putExtra(android.content.Intent.EXTRA_TEXT, url);
share.setType("text/plain");
shareActionProvider.setShareIntent(share);
}
}

@ -28,8 +28,8 @@ import android.view.View;
import android.widget.ArrayAdapter;
public class BoardActivity extends BaseActivity implements ActionBar.OnNavigationListener {
private Loadable boardLoadable = new Loadable();
private Loadable threadLoadable = new Loadable();
private Loadable boardLoadable = new Loadable();
private Loadable threadLoadable = new Loadable();
private ThreadFragment boardFragment;
private ThreadFragment threadFragment;
private boolean boardSetByIntent = false;
@ -86,7 +86,7 @@ public class BoardActivity extends BaseActivity implements ActionBar.OnNavigatio
@Override
protected void initDrawer() {
pinDrawerListener = new ActionBarDrawerToggle(this, pinDrawer,
R.drawable.ic_drawer, R.string.drawer_open, R.string.drawer_close) {};
R.drawable.ic_drawer, R.string.drawer_open, R.string.drawer_close) {};
super.initDrawer();
}
@ -104,13 +104,13 @@ public class BoardActivity extends BaseActivity implements ActionBar.OnNavigatio
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
return true;
}
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
return true;
}
@Override
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
pinDrawerListener.onConfigurationChanged(newConfig);
@ -118,14 +118,14 @@ public class BoardActivity extends BaseActivity implements ActionBar.OnNavigatio
@Override
public void openPin(Pin pin) {
startLoadingThread(pin.loadable);
startLoadingThread(pin.loadable);
pinDrawer.closeDrawer(pinDrawerView);
}
@Override
public void onOPClicked(Post post) {
startLoadingThread(new Loadable(post.board, post.no, post.subject));
startLoadingThread(new Loadable(post.board, post.no, post.subject));
}
@Override
@ -136,127 +136,127 @@ public class BoardActivity extends BaseActivity implements ActionBar.OnNavigatio
@Override
public void onBackPressed() {
if (threadPane.isOpen()) {
super.onBackPressed();
} else {
threadPane.openPane();
}
if (threadPane.isOpen()) {
super.onBackPressed();
} else {
threadPane.openPane();
}
}
private void updateActionBarState() {
final ActionBar actionBar = getActionBar();
if (threadPane.isSlideable()) {
if (threadPane.isOpen()) {
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
actionBar.setHomeButtonEnabled(true);
actionBar.setTitle("");
pinDrawerListener.setDrawerIndicatorEnabled(true);
} else {
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
actionBar.setTitle(threadLoadable.title);
pinDrawerListener.setDrawerIndicatorEnabled(false);
}
actionBar.setDisplayHomeAsUpEnabled(true);
} else {
final ActionBar actionBar = getActionBar();
if (threadPane.isSlideable()) {
if (threadPane.isOpen()) {
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
actionBar.setHomeButtonEnabled(true);
actionBar.setTitle("");
pinDrawerListener.setDrawerIndicatorEnabled(true);
} else {
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
actionBar.setTitle(threadLoadable.title);
pinDrawerListener.setDrawerIndicatorEnabled(false);
}
actionBar.setDisplayHomeAsUpEnabled(true);
} else {
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
pinDrawerListener.setDrawerIndicatorEnabled(true);
actionBar.setTitle(threadLoadable.title);
actionBar.setDisplayHomeAsUpEnabled(false);
}
actionBar.setDisplayShowTitleEnabled(true);
actionBar.setTitle(threadLoadable.title);
actionBar.setDisplayHomeAsUpEnabled(false);
}
actionBar.setDisplayShowTitleEnabled(true);
invalidateOptionsMenu();
}
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
boolean open = threadPane.isOpen();
setMenuItemEnabled(menu.findItem(R.id.action_pin), !open);
return super.onPrepareOptionsMenu(menu);
boolean open = threadPane.isOpen();
setMenuItemEnabled(menu.findItem(R.id.action_pin), !open);
return super.onPrepareOptionsMenu(menu);
}
private void setMenuItemEnabled(MenuItem item, boolean enabled) {
if (item != null) {
item.setVisible(enabled);
item.setEnabled(enabled);
}
if (item != null) {
item.setVisible(enabled);
item.setEnabled(enabled);
}
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (pinDrawerListener.onOptionsItemSelected(item)) {
return true;
}
switch(item.getItemId()) {
case R.id.action_reload:
if (threadPane.isOpen()) {
boardFragment.reload();
} else {
if (threadFragment.getThreadManager().hasThread()) {
threadFragment.reload();
}
}
return true;
case R.id.action_reply:
if (threadPane.isOpen()) {
boardFragment.getThreadManager().openReply(true); // todo if tablet
} else {
if (threadFragment.getThreadManager().hasThread()) {
threadFragment.getThreadManager().openReply(true); // todo if tablet
}
}
return true;
case R.id.action_pin:
if (threadFragment.getThreadManager().hasThread()) {
Pin pin = new Pin();
pin.loadable = threadLoadable;
addPin(pin);
pinDrawer.openDrawer(pinDrawerView);
}
public boolean onOptionsItemSelected(MenuItem item) {
if (pinDrawerListener.onOptionsItemSelected(item)) {
return true;
}
switch(item.getItemId()) {
case R.id.action_reload:
if (threadPane.isOpen()) {
boardFragment.reload();
} else {
if (threadFragment.getThreadManager().hasThread()) {
threadFragment.reload();
}
}
return true;
case R.id.action_reply:
if (threadPane.isOpen()) {
boardFragment.getThreadManager().openReply(true); // todo if tablet
} else {
if (threadFragment.getThreadManager().hasThread()) {
threadFragment.getThreadManager().openReply(true); // todo if tablet
}
}
return true;
case R.id.action_pin:
if (threadFragment.getThreadManager().hasThread()) {
Pin pin = new Pin();
pin.loadable = threadLoadable;
addPin(pin);
pinDrawer.openDrawer(pinDrawerView);
}
return true;
case R.id.action_open_browser:
if (threadPane.isOpen()) {
showUrlOpenPicker(ChanUrls.getBoardUrlDesktop(boardLoadable.board));
} else {
if (threadFragment.getThreadManager().hasThread()) {
showUrlOpenPicker(ChanUrls.getThreadUrlDesktop(threadLoadable.board, threadLoadable.no));
}
}
return true;
case android.R.id.home:
threadPane.openPane();
return true;
}
return super.onOptionsItemSelected(item);
}
case R.id.action_open_browser:
if (threadPane.isOpen()) {
showUrlOpenPicker(ChanUrls.getBoardUrlDesktop(boardLoadable.board));
} else {
if (threadFragment.getThreadManager().hasThread()) {
showUrlOpenPicker(ChanUrls.getThreadUrlDesktop(threadLoadable.board, threadLoadable.no));
}
}
return true;
case android.R.id.home:
threadPane.openPane();
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
public void onPanelClosed(View view) {
updateActionBarState();
}
@Override
public void onPanelClosed(View view) {
updateActionBarState();
}
@Override
public void onPanelOpened(View view) {
updateActionBarState();
}
private void startLoadingBoard(Loadable loadable) {
this.boardLoadable = loadable;
@Override
public void onPanelOpened(View view) {
updateActionBarState();
}
private void startLoadingBoard(Loadable loadable) {
this.boardLoadable = loadable;
boardFragment.startLoading(loadable);
setShareUrl(ChanUrls.getBoardUrlDesktop(loadable.board));
@ -264,7 +264,7 @@ public class BoardActivity extends BaseActivity implements ActionBar.OnNavigatio
}
private void startLoadingThread(Loadable loadable) {
Pin pin = PinnedManager.getInstance().findPinByLoadable(loadable);
Pin pin = PinnedManager.getInstance().findPinByLoadable(loadable);
if (pin != null) {
// Use the loadable from the pin.
// This way we can store the listview position in the pin loadable,

@ -51,7 +51,7 @@ public class BoardEditor extends Activity {
// For runtime changes
if (list.size() > 0) {
BoardManager.getInstance().setMyBoards((ArrayList<Board>) list.clone());
BoardManager.getInstance().setMyBoards((ArrayList<Board>) list.clone());
}
}
@ -65,7 +65,7 @@ public class BoardEditor extends Activity {
}
private void addBoard(String value) {
BoardManager.getInstance().addBoard(list, value);
BoardManager.getInstance().addBoard(list, value);
adapter = new BoardEditAdapter(this, R.layout.board_view, list, this);
listView.setArrayList(list);

@ -14,21 +14,21 @@ import android.view.Menu;
import android.view.MenuItem;
public class CatalogActivity extends BaseActivity {
private final Loadable loadable = new Loadable();
private ThreadFragment threadFragment;
private final Loadable loadable = new Loadable();
private ThreadFragment threadFragment;
@Override
public void onOPClicked(Post post) {
}
public void onOPClicked(Post post) {
}
@Override
public void openPin(Pin post) {
}
@Override
public void openPin(Pin post) {
}
@Override
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@ -66,7 +66,7 @@ public class CatalogActivity extends BaseActivity {
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()) {
case R.id.action_reload:
threadFragment.reload();
threadFragment.reload();
return true;
case R.id.action_open_browser:

@ -7,25 +7,25 @@ import android.widget.Button;
import android.widget.LinearLayout;
public class DeveloperActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LinearLayout wrapper = new LinearLayout(this);
Button button = new Button(this);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
@SuppressWarnings("unused")
int i = 1 / 0;
}
});
button.setText("Crash the app");
wrapper.addView(button);
setContentView(wrapper);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LinearLayout wrapper = new LinearLayout(this);
Button button = new Button(this);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
@SuppressWarnings("unused")
int i = 1 / 0;
}
});
button.setText("Crash the app");
wrapper.addView(button);
setContentView(wrapper);
}
}

@ -10,39 +10,39 @@ import android.util.Log;
import android.view.MenuItem;
public class ReplyActivity extends Activity {
private static Loadable loadable;
public static void setLoadable(Loadable l) {
loadable = l;
}
@Override
private static Loadable loadable;
public static void setLoadable(Loadable l) {
loadable = l;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (loadable != null) {
getActionBar().setDisplayHomeAsUpEnabled(true);
FragmentTransaction ft = getFragmentManager().beginTransaction();
getActionBar().setDisplayHomeAsUpEnabled(true);
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(android.R.id.content, ReplyFragment.newInstance(loadable));
ft.commitAllowingStateLoss();
loadable = null;
} else {
Log.e("Chan", "ThreadFragment was null, exiting!");
finish();
Log.e("Chan", "ThreadFragment was null, exiting!");
finish();
}
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()) {
case android.R.id.home:
finish();
return true;
}
return super.onOptionsItemSelected(item);
}
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()) {
case android.R.id.home:
finish();
return true;
}
return super.onOptionsItemSelected(item);
}
}

@ -79,14 +79,14 @@ public class PinnedAdapter extends ArrayAdapter<Pin> {
Pin item = getItem(position);
if (item == null) {
return -1;
return -1;
} else {
Integer i = idMap.get(item);
if (i == null) {
return -1;
} else {
return i;
}
Integer i = idMap.get(item);
if (i == null) {
return -1;
} else {
return i;
}
}
}
}

@ -15,40 +15,40 @@ import com.j256.ormlite.support.ConnectionSource;
import com.j256.ormlite.table.TableUtils;
public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
private static final String DATABASE_NAME = "ChanDB";
private static final int DATABASE_VERSION = 1;
public Dao<Pin, Integer> pinDao;
public Dao<Loadable, Integer> loadableDao;
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
try {
pinDao = getDao(Pin.class);
loadableDao = getDao(Loadable.class);
} catch (SQLException e) {
e.printStackTrace();
}
}
@Override
public void onCreate(SQLiteDatabase database, ConnectionSource connectionSource) {
try {
TableUtils.createTable(connectionSource, Pin.class);
TableUtils.createTable(connectionSource, Loadable.class);
} catch (SQLException e) {
Logger.e("Error creating db", e);
throw new RuntimeException(e);
}
}
@Override
public void onUpgrade(SQLiteDatabase database, ConnectionSource connectionSource, int oldVersion, int newVersion) {
switch(oldVersion) {
// Change tables if we make adjustments
}
}
private static final String DATABASE_NAME = "ChanDB";
private static final int DATABASE_VERSION = 1;
public Dao<Pin, Integer> pinDao;
public Dao<Loadable, Integer> loadableDao;
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
try {
pinDao = getDao(Pin.class);
loadableDao = getDao(Loadable.class);
} catch (SQLException e) {
e.printStackTrace();
}
}
@Override
public void onCreate(SQLiteDatabase database, ConnectionSource connectionSource) {
try {
TableUtils.createTable(connectionSource, Pin.class);
TableUtils.createTable(connectionSource, Loadable.class);
} catch (SQLException e) {
Logger.e("Error creating db", e);
throw new RuntimeException(e);
}
}
@Override
public void onUpgrade(SQLiteDatabase database, ConnectionSource connectionSource, int oldVersion, int newVersion) {
switch(oldVersion) {
// Change tables if we make adjustments
}
}
}

@ -9,58 +9,58 @@ import org.floens.chan.utils.Logger;
import android.content.Context;
public class DatabaseManager {
private static DatabaseManager instance;
private final DatabaseHelper helper;
public DatabaseManager(Context context) {
instance = this;
helper = new DatabaseHelper(context);
}
public static DatabaseManager getInstance() {
return instance;
}
public void addPin(Pin pin) {
try {
helper.loadableDao.create(pin.loadable);
helper.pinDao.create(pin);
} catch (SQLException e) {
Logger.e("Error adding pin to db", e);
}
}
public void removePin(Pin pin) {
try {
helper.pinDao.delete(pin);
helper.loadableDao.delete(pin.loadable);
} catch (SQLException e) {
Logger.e("Error removing pin from db", e);
}
}
public void updatePin(Pin pin) {
try {
helper.pinDao.update(pin);
helper.loadableDao.update(pin.loadable);
} catch (SQLException e) {
Logger.e("Error updating pin in db", e);
}
}
public List<Pin> getPinned() {
List<Pin> list = null;
try {
list = helper.pinDao.queryForAll();
for (Pin p : list) {
helper.loadableDao.refresh(p.loadable);
}
} catch (SQLException e) {
Logger.e("Error getting pins from db", e);
}
return list;
}
private static DatabaseManager instance;
private final DatabaseHelper helper;
public DatabaseManager(Context context) {
instance = this;
helper = new DatabaseHelper(context);
}
public static DatabaseManager getInstance() {
return instance;
}
public void addPin(Pin pin) {
try {
helper.loadableDao.create(pin.loadable);
helper.pinDao.create(pin);
} catch (SQLException e) {
Logger.e("Error adding pin to db", e);
}
}
public void removePin(Pin pin) {
try {
helper.pinDao.delete(pin);
helper.loadableDao.delete(pin.loadable);
} catch (SQLException e) {
Logger.e("Error removing pin from db", e);
}
}
public void updatePin(Pin pin) {
try {
helper.pinDao.update(pin);
helper.loadableDao.update(pin.loadable);
} catch (SQLException e) {
Logger.e("Error updating pin in db", e);
}
}
public List<Pin> getPinned() {
List<Pin> list = null;
try {
list = helper.pinDao.queryForAll();
for (Pin p : list) {
helper.loadableDao.refresh(p.loadable);
}
} catch (SQLException e) {
Logger.e("Error getting pins from db", e);
}
return list;
}
}

@ -37,8 +37,8 @@ public class PostRepliesFragment extends DialogFragment {
}
public void dismissNoCallback() {
callback = false;
dismiss();
callback = false;
dismiss();
}
@Override
@ -50,11 +50,11 @@ public class PostRepliesFragment extends DialogFragment {
@Override
public void onDismiss(DialogInterface dialog) {
super.onDismiss(dialog);
if (callback && manager != null) {
manager.onPostRepliesPop();
}
super.onDismiss(dialog);
if (callback && manager != null) {
manager.onPostRepliesPop();
}
}
@Override
@ -66,19 +66,19 @@ public class PostRepliesFragment extends DialogFragment {
listView = (ListView) container.findViewById(R.id.post_list);
container.findViewById(R.id.replies_back).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dismiss();
}
});
@Override
public void onClick(View v) {
dismiss();
}
});
container.findViewById(R.id.replies_close).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
manager.closeAllPostFragments();
dismiss();
}
});
@Override
public void onClick(View v) {
manager.closeAllPostFragments();
dismiss();
}
});
return container;
}
@ -88,27 +88,27 @@ public class PostRepliesFragment extends DialogFragment {
super.onActivityCreated(savedInstanceState);
if (posts == null) {
// Restoring from background.
// Restoring from background.
dismiss();
} else {
ArrayAdapter<Post> adapter = new ArrayAdapter<Post>(getActivity(), 0) {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
PostView postView = null;
if (convertView instanceof PostView) {
postView = (PostView) convertView;
} else {
postView = new PostView(getActivity());
}
postView.setPost(getItem(position), manager);
return postView;
}
};
adapter.addAll(posts);
listView.setAdapter(adapter);
ArrayAdapter<Post> adapter = new ArrayAdapter<Post>(getActivity(), 0) {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
PostView postView = null;
if (convertView instanceof PostView) {
postView = (PostView) convertView;
} else {
postView = new PostView(getActivity());
}
postView.setPost(getItem(position), manager);
return postView;
}
};
adapter.addAll(posts);
listView.setAdapter(adapter);
}
}
}

@ -78,9 +78,9 @@ public class ReplyFragment extends DialogFragment {
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
loadable.writeToBundle(getActivity(), outState);
super.onSaveInstanceState(outState);
loadable.writeToBundle(getActivity(), outState);
}
@Override
@ -88,46 +88,46 @@ public class ReplyFragment extends DialogFragment {
super.onActivityCreated(savedInstanceState);
if (loadable == null && savedInstanceState != null) {
loadable = new Loadable();
loadable.readFromBundle(getActivity(), savedInstanceState);
loadable = new Loadable();
loadable.readFromBundle(getActivity(), savedInstanceState);
}
if (loadable != null) {
setClosable(true);
Dialog dialog = getDialog();
setClosable(true);
Dialog dialog = getDialog();
Context context = getActivity();
String title = loadable.isThreadMode() ?
context.getString(R.string.reply) + " /" + loadable.board + "/" + loadable.no :
context.getString(R.string.reply_to_board) + " /" + loadable.board + "/";
context.getString(R.string.reply) + " /" + loadable.board + "/" + loadable.no :
context.getString(R.string.reply_to_board) + " /" + loadable.board + "/";
if (dialog == null) {
getActivity().getActionBar().setTitle(title);
getActivity().getActionBar().setTitle(title);
} else {
dialog.setTitle(title);
dialog.setTitle(title);
}
if (getDialog() != null) {
getDialog().setOnKeyListener(new Dialog.OnKeyListener() {
@Override
public boolean onKey(DialogInterface dialogInterface, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
if (page == 1) flipPage(0);
else if (page == 2) closeReply();
return true;
} else return false;
}
});
getDialog().setOnKeyListener(new Dialog.OnKeyListener() {
@Override
public boolean onKey(DialogInterface dialogInterface, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
if (page == 1) flipPage(0);
else if (page == 2) closeReply();
return true;
} else return false;
}
});
}
Reply draft = ReplyManager.getInstance().getReplyDraft();
if (TextUtils.isEmpty(draft.name)) {
draft.name = ChanPreferences.getDefaultName();
draft.name = ChanPreferences.getDefaultName();
}
if (TextUtils.isEmpty(draft.email)) {
draft.email = ChanPreferences.getDefaultEmail();
draft.email = ChanPreferences.getDefaultEmail();
}
nameView.setText(draft.name);
@ -138,18 +138,18 @@ public class ReplyFragment extends DialogFragment {
getCaptcha();
} else {
Log.e("Chan", "Loadable in ReplyFragment was null");
closeReply();
Log.e("Chan", "Loadable in ReplyFragment was null");
closeReply();
}
}
@Override
public void onPause() {
super.onPause();
ReplyManager replyManager = ReplyManager.getInstance();
if (shouldSaveDraft) {
super.onPause();
ReplyManager replyManager = ReplyManager.getInstance();
if (shouldSaveDraft) {
draft.name = nameView.getText().toString();
draft.email = emailView.getText().toString();
draft.subject = subjectView.getText().toString();
@ -164,10 +164,10 @@ public class ReplyFragment extends DialogFragment {
@Override
public void onDestroy() {
super.onDestroy();
ReplyManager replyManager = ReplyManager.getInstance();
replyManager.removeFileListener();
super.onDestroy();
ReplyManager replyManager = ReplyManager.getInstance();
replyManager.removeFileListener();
}
@Override
@ -246,21 +246,21 @@ public class ReplyFragment extends DialogFragment {
}
private void closeReply() {
if (getDialog() != null) {
dismiss();
} else {
getActivity().finish();
}
if (getDialog() != null) {
dismiss();
} else {
getActivity().finish();
}
}
/**
* Set if the dialog is able to be closed, by pressing outside of the dialog, or something else.
*/
private void setClosable(boolean e) {
if (getDialog() != null) {
getDialog().setCanceledOnTouchOutside(e);
setCancelable(e);
}
if (getDialog() != null) {
getDialog().setCanceledOnTouchOutside(e);
setCancelable(e);
}
}
/**

@ -49,7 +49,7 @@ public class SettingsFragment extends PreferenceFragment {
updateDeveloperPreference();
Toast.makeText(getActivity(),
(enabled ? "Enabled " : "Disabled ") + "developer options", Toast.LENGTH_LONG).show();
(enabled ? "Enabled " : "Disabled ") + "developer options", Toast.LENGTH_LONG).show();
}
return true;
@ -73,10 +73,10 @@ public class SettingsFragment extends PreferenceFragment {
}
private void updateDeveloperPreference() {
if (ChanPreferences.getDeveloper()) {
((PreferenceGroup) findPreference("group_about")).addPreference(developerPreference);
} else {
((PreferenceGroup) findPreference("group_about")).removePreference(developerPreference);
}
if (ChanPreferences.getDeveloper()) {
((PreferenceGroup) findPreference("group_about")).addPreference(developerPreference);
} else {
((PreferenceGroup) findPreference("group_about")).removePreference(developerPreference);
}
}
}

@ -73,7 +73,7 @@ public class ThreadFragment extends Fragment implements ThreadListener {
}
if (listView != null) {
listView.setOnScrollListener(null);
listView.setOnScrollListener(null);
}
}
@ -110,11 +110,11 @@ public class ThreadFragment extends Fragment implements ThreadListener {
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
if (loadable != null) {
loadable.listViewIndex = view.getFirstVisiblePosition();
View v = view.getChildAt(0);
loadable.listViewTop = (v == null) ? 0 : v.getTop();
}
if (loadable != null) {
loadable.listViewIndex = view.getFirstVisiblePosition();
View v = view.getChildAt(0);
loadable.listViewTop = (v == null) ? 0 : v.getTop();
}
}
});
}
@ -140,7 +140,7 @@ public class ThreadFragment extends Fragment implements ThreadListener {
@Override
public void onPostClicked(Post post) {
baseActivity.onOPClicked(post);
baseActivity.onOPClicked(post);
}
@Override

@ -118,15 +118,15 @@ public class ImageViewFragment extends Fragment implements View.OnLongClickListe
return false;
}
@Override
public void onViewTap(View view, float x, float y) {
activity.finish();
}
@Override
public void onViewTap(View view, float x, float y) {
activity.finish();
}
@Override
public void onClick(View v) {
activity.finish();
}
@Override
public void onClick(View v) {
activity.finish();
}
}

@ -36,7 +36,7 @@ public class NetworkPhotoView extends NetworkImageView {
}
public void setOnViewTapListenerToAttacher(OnViewTapListener listener) {
viewTapListener = listener;
viewTapListener = listener;
}
@Override

@ -17,8 +17,8 @@ import com.android.volley.Response;
import com.android.volley.VolleyError;
public class BoardManager {
private static BoardManager instance;
private static BoardManager instance;
private final Context context;
// Including nsfw ones
private ArrayList<Board> allBoards = new ArrayList<Board>();
@ -28,8 +28,8 @@ public class BoardManager {
private final ArrayList<String> myBoardsValues = new ArrayList<String>();
public BoardManager(Context context) {
instance = this;
instance = this;
this.context = context;
loadFromServer();
@ -38,7 +38,7 @@ public class BoardManager {
}
public static BoardManager getInstance() {
return instance;
return instance;
}
/**

@ -10,20 +10,20 @@ import org.floens.chan.model.Pin;
import android.content.Context;
public class PinnedManager {
private static PinnedManager instance;
private final Context context;
private static PinnedManager instance;
private final Context context;
private final List<Pin> pins;
public PinnedManager(Context context) {
instance = this;
this.context = context;
instance = this;
this.context = context;
pins = DatabaseManager.getInstance().getPinned();
}
public static PinnedManager getInstance() {
return instance;
return instance;
}
public PinnedAdapter getAdapter() {
@ -56,23 +56,23 @@ public class PinnedManager {
public boolean add(Pin pin) {
// No duplicates
for (Pin e : pins) {
if (e.loadable.equals(pin.loadable)) {
return false;
}
if (e.loadable.equals(pin.loadable)) {
return false;
}
}
pins.add(pin);
DatabaseManager.getInstance().addPin(pin);
return true;
}
pins.add(pin);
DatabaseManager.getInstance().addPin(pin);
return true;
}
public void remove(Pin pin) {
pins.remove(pin);
DatabaseManager.getInstance().removePin(pin);
}
public void remove(Pin pin) {
pins.remove(pin);
DatabaseManager.getInstance().removePin(pin);
}
public void update(Pin pin) {
DatabaseManager.getInstance().updatePin(pin);
public void update(Pin pin) {
DatabaseManager.getInstance().updatePin(pin);
}
}

@ -65,7 +65,7 @@ public class ThreadManager {
}
public boolean hasThread() {
return loadable != null;
return loadable != null;
}
public Post findPostById(int id) {
@ -118,9 +118,9 @@ public class ThreadManager {
}
public void onPostClicked(Post post) {
if (loadable.isBoardMode()) {
threadListener.onPostClicked(post);
}
if (loadable.isBoardMode()) {
threadListener.onPostClicked(post);
}
}
public void onPostLongClicked(final Post post) {
@ -140,8 +140,8 @@ public class ThreadManager {
showPostInfo(post);
break;
case 3: // Show clickables
showPostLinkables(post);
break;
showPostLinkables(post);
break;
case 4: // Copy text
copyText(post.comment.toString());
break;
@ -164,7 +164,7 @@ public class ThreadManager {
}
public void onPostLinkableClicked(PostLinkable linkable) {
handleLinkableSelected(linkable);
handleLinkableSelected(linkable);
}
/**
@ -271,17 +271,17 @@ public class ThreadManager {
}
public void showPostReplies(Post post) {
List<Post> p = new ArrayList<Post>();
for (int no : post.repliesFrom) {
Post r = findPostById(no);
if (r != null) {
p.add(r);
}
}
if (p.size() > 0) {
showPostsReplies(p);
}
List<Post> p = new ArrayList<Post>();
for (int no : post.repliesFrom) {
Post r = findPostById(no);
if (r != null) {
p.add(r);
}
}
if (p.size() > 0) {
showPostsReplies(p);
}
}
/**
@ -350,50 +350,50 @@ public class ThreadManager {
* @param linkable Linkable with an url.
*/
private void openLink(PostLinkable linkable) {
activity.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(linkable.value)));
activity.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(linkable.value)));
}
private void showPostsReplies(List<Post> list) {
// Post popups are now queued up, more than 32 popups on top of each other makes the system crash!
popupQueue.add(list);
if (currentPopupFragment != null) {
currentPopupFragment.dismissNoCallback();
}
PostRepliesFragment popup = PostRepliesFragment.newInstance(list, this);
FragmentTransaction ft = activity.getFragmentManager().beginTransaction();
ft.add(popup, "postPopup");
ft.commit();
currentPopupFragment = popup;
}
// Post popups are now queued up, more than 32 popups on top of each other makes the system crash!
popupQueue.add(list);
if (currentPopupFragment != null) {
currentPopupFragment.dismissNoCallback();
}
PostRepliesFragment popup = PostRepliesFragment.newInstance(list, this);
FragmentTransaction ft = activity.getFragmentManager().beginTransaction();
ft.add(popup, "postPopup");
ft.commit();
currentPopupFragment = popup;
}
public void onPostRepliesPop() {
if (popupQueue.size() == 0) return;
popupQueue.remove(popupQueue.size() - 1);
if (popupQueue.size() > 0) {
PostRepliesFragment popup = PostRepliesFragment.newInstance(popupQueue.get(popupQueue.size() - 1), this);
FragmentTransaction ft = activity.getFragmentManager().beginTransaction();
ft.add(popup, "postPopup");
ft.commit();
currentPopupFragment = popup;
} else {
currentPopupFragment = null;
}
if (popupQueue.size() == 0) return;
popupQueue.remove(popupQueue.size() - 1);
if (popupQueue.size() > 0) {
PostRepliesFragment popup = PostRepliesFragment.newInstance(popupQueue.get(popupQueue.size() - 1), this);
FragmentTransaction ft = activity.getFragmentManager().beginTransaction();
ft.add(popup, "postPopup");
ft.commit();
currentPopupFragment = popup;
} else {
currentPopupFragment = null;
}
}
public void closeAllPostFragments() {
popupQueue.clear();
currentPopupFragment = null;
popupQueue.clear();
currentPopupFragment = null;
}
public interface ThreadListener {
public interface ThreadListener {
public void onThreadLoaded(List<Post> result);
public void onThreadLoadError(VolleyError error);
public void onPostClicked(Post post);

@ -11,25 +11,25 @@ import com.j256.ormlite.table.DatabaseTable;
*/
@DatabaseTable
public class Loadable {
@DatabaseField(generatedId = true)
private int id;
@DatabaseField
@DatabaseField(generatedId = true)
private int id;
@DatabaseField
public int mode = Mode.INVALID;
@DatabaseField
@DatabaseField
public String board = "";
@DatabaseField
@DatabaseField
public int no = -1;
@DatabaseField
@DatabaseField
public String title = "";
@DatabaseField
@DatabaseField
public int listViewIndex;
@DatabaseField
@DatabaseField
public int listViewTop;
/**
@ -97,7 +97,7 @@ public class Loadable {
}
public boolean isCatalogMode() {
return mode == Mode.CATALOG;
return mode == Mode.CATALOG;
}
public void readFromBundle(Context context, Bundle bundle) {

@ -5,9 +5,9 @@ import com.j256.ormlite.table.DatabaseTable;
@DatabaseTable
public class Pin {
@DatabaseField(generatedId = true)
private int id;
@DatabaseField(generatedId = true)
private int id;
public Type type = Type.THREAD;
@DatabaseField(canBeNull = false, foreign = true)

@ -75,11 +75,11 @@ public class Post {
}
public void setLinkableListener(PostView listener) {
linkableListener = listener;
linkableListener = listener;
}
public PostView getLinkableListener() {
return linkableListener;
return linkableListener;
}
/**
@ -144,24 +144,24 @@ public class Post {
String[] parts = text.split("\\s");
for (String item : parts) {
if (item.contains("://")) {
try {
URL url = new URL(item);
SpannableString link = new SpannableString(url.toString());
// link.setSpan(new ForegroundColorSpan(Color.argb(255, 0, 0, 180)), 0, link.length(), 0);
// linkables.add(new PostLinkable(this, item, item, PostLinkable.Type.LINK));
PostLinkable pl = new PostLinkable(this, item, item, PostLinkable.Type.LINK);
link.setSpan(pl, 0, link.length(), 0);
linkables.add(pl);
total = TextUtils.concat(total, link, " ");
} catch(Exception e) {
total = TextUtils.concat(total, item, " ");
}
}
if (item.contains("://")) {
try {
URL url = new URL(item);
SpannableString link = new SpannableString(url.toString());
// link.setSpan(new ForegroundColorSpan(Color.argb(255, 0, 0, 180)), 0, link.length(), 0);
// linkables.add(new PostLinkable(this, item, item, PostLinkable.Type.LINK));
PostLinkable pl = new PostLinkable(this, item, item, PostLinkable.Type.LINK);
link.setSpan(pl, 0, link.length(), 0);
linkables.add(pl);
total = TextUtils.concat(total, link, " ");
} catch(Exception e) {
total = TextUtils.concat(total, item, " ");
}
}
}
} else {
total = TextUtils.concat(total, text);
@ -186,7 +186,7 @@ public class Post {
linkables.add(pl);
if (t == Type.QUOTE) {
try {
try {
// Get post id
String[] splitted = anchor.attr("href").split("#p");
if (splitted.length == 2) {

@ -17,22 +17,22 @@ public class PostLinkable extends ClickableSpan {
public final Type type;
public PostLinkable(Post post, String key, String value, Type type) {
this.post = post;
this.post = post;
this.key = key;
this.value = value;
this.type = type;
}
@Override
public void onClick(View widget) {
if (post.getLinkableListener() != null) {
post.getLinkableListener().onLinkableClick(this);
}
}
@Override
public void updateDrawState(TextPaint ds) {
ds.setColor(type == Type.QUOTE ? Color.argb(255, 221, 0, 0) : Color.argb(255, 0, 0, 180));
@Override
public void onClick(View widget) {
if (post.getLinkableListener() != null) {
post.getLinkableListener().onLinkableClick(this);
}
}
@Override
public void updateDrawState(TextPaint ds) {
ds.setColor(type == Type.QUOTE ? Color.argb(255, 221, 0, 0) : Color.argb(255, 0, 0, 180));
ds.setUnderlineText(true);
}
}
}

@ -37,7 +37,7 @@ public class ChanReaderRequest extends JsonReaderRequest<ArrayList<Post>> {
} else if (loadable.isThreadMode()) {
url = ChanUrls.getThreadUrl(loadable.board, loadable.no);
} else if (loadable.isCatalogMode()) {
url = ChanUrls.getCatalogUrl(loadable.board);
url = ChanUrls.getCatalogUrl(loadable.board);
} else {
throw new IllegalArgumentException("Unknown mode");
}
@ -58,9 +58,9 @@ public class ChanReaderRequest extends JsonReaderRequest<ArrayList<Post>> {
if (loadable.isBoardMode()) {
return loadBoard(reader);
} else if (loadable.isThreadMode()) {
return loadThread(reader);
return loadThread(reader);
} else if (loadable.isCatalogMode()) {
return loadCatalog(reader);
return loadCatalog(reader);
} else {
throw new IllegalArgumentException("Unknown mode");
}
@ -155,22 +155,22 @@ public class ChanReaderRequest extends JsonReaderRequest<ArrayList<Post>> {
reader.beginArray(); // Array of pages
while (reader.hasNext()) {
reader.beginObject(); // Page object
while (reader.hasNext()) {
if (reader.nextName().equals("threads")) {
reader.beginArray(); // Threads array
while (reader.hasNext()) {
list.add(readPostObject(reader, loadable.board));
}
reader.endArray();
} else {
reader.skipValue();
}
}
reader.beginObject(); // Page object
while (reader.hasNext()) {
if (reader.nextName().equals("threads")) {
reader.beginArray(); // Threads array
while (reader.hasNext()) {
list.add(readPostObject(reader, loadable.board));
}
reader.endArray();
} else {
reader.skipValue();
}
}
reader.endObject();
}

@ -24,35 +24,35 @@ public class ChanUrls {
}
public static String getImageUrl(String board, String code, String extension) {
return "https://i.4cdn.org/" + board + "/src/" + code + "." + extension;
}
return "https://i.4cdn.org/" + board + "/src/" + code + "." + extension;
}
public static String getThumbnailUrl(String board, String code) {
return "https://t.4cdn.org/" + board + "/thumb/" + code + "s.jpg";
}
public static String getThumbnailUrl(String board, String code) {
return "https://t.4cdn.org/" + board + "/thumb/" + code + "s.jpg";
}
public static String getCountryFlagUrl(String countryCode) {
public static String getCountryFlagUrl(String countryCode) {
return "https://s.4cdn.org/image/country/" + countryCode.toLowerCase(Locale.ENGLISH) + ".gif";
}
public static String getBoardsUrl() {
return "https://a.4cdn.org/boards.json";
}
return "https://a.4cdn.org/boards.json";
}
public static String getPostUrl(String board) {
return "https://sys.4chan.org/" + board + "/post";
// return "http://192.168.6.214/Testing/PostEchoer/post.php";
}
public static String getPostUrl(String board) {
return "https://sys.4chan.org/" + board + "/post";
// return "http://192.168.6.214/Testing/PostEchoer/post.php";
}
public static String getBoardUrlDesktop(String board) {
return "https://boards.4chan.org/" + board + "/";
}
public static String getBoardUrlDesktop(String board) {
return "https://boards.4chan.org/" + board + "/";
}
public static String getThreadUrlDesktop(String board, int no) {
return "https://boards.4chan.org/" + board + "/res/" + no;
}
public static String getThreadUrlDesktop(String board, int no) {
return "https://boards.4chan.org/" + board + "/res/" + no;
}
public static String getCatalogUrlDesktop(String board) {
public static String getCatalogUrlDesktop(String board) {
return "https://boards.4chan.org/" + board + "/catalog";
}
}

@ -107,13 +107,13 @@ public class ThreadLoader {
}
private void processPosts(List<Post> posts) {
for (Post post : posts) {
for (Post post : posts) {
postsById.append(post.no, post);
for (Post other : posts) {
if (other.repliesTo.contains(post.no)) {
post.repliesFrom.add(other.no);
}
if (other.repliesTo.contains(post.no)) {
post.repliesFrom.add(other.no);
}
}
}
}

@ -3,23 +3,23 @@ package org.floens.chan.utils;
import org.floens.chan.ChanApplication;
public class ChanPreferences {
public static boolean getOpenLinkConfirmation() {
return ChanApplication.getPreferences().getBoolean("preference_open_link_confirmation", true);
}
public static String getDefaultName() {
return ChanApplication.getPreferences().getString("preference_default_name", "");
}
public static String getDefaultEmail() {
return ChanApplication.getPreferences().getString("preference_default_email", "");
}
public static boolean getDeveloper() {
return ChanApplication.getPreferences().getBoolean("preference_developer", false);
}
public static void setDeveloper(boolean developer) {
ChanApplication.getPreferences().edit().putBoolean("preference_developer", developer).commit();
}
public static boolean getOpenLinkConfirmation() {
return ChanApplication.getPreferences().getBoolean("preference_open_link_confirmation", true);
}
public static String getDefaultName() {
return ChanApplication.getPreferences().getString("preference_default_name", "");
}
public static String getDefaultEmail() {
return ChanApplication.getPreferences().getString("preference_default_email", "");
}
public static boolean getDeveloper() {
return ChanApplication.getPreferences().getBoolean("preference_developer", false);
}
public static void setDeveloper(boolean developer) {
ChanApplication.getPreferences().edit().putBoolean("preference_developer", developer).commit();
}
}

@ -9,28 +9,28 @@ import java.io.StringWriter;
import java.io.Writer;
public class IOUtils {
public static String readString(InputStream is) {
StringWriter sw = new StringWriter();
try {
copy(new InputStreamReader(is), sw);
is.close();
sw.close();
} catch (IOException e) {
e.printStackTrace();
}
return sw.toString();
}
/**
* Copies the inputstream to the outputstream and closes both streams.
* @param is
* @param os
* @throws IOException
*/
public static void copy(InputStream is, OutputStream os) throws IOException {
int read = 0;
public static String readString(InputStream is) {
StringWriter sw = new StringWriter();
try {
copy(new InputStreamReader(is), sw);
is.close();
sw.close();
} catch (IOException e) {
e.printStackTrace();
}
return sw.toString();
}
/**
* Copies the inputstream to the outputstream and closes both streams.
* @param is
* @param os
* @throws IOException
*/
public static void copy(InputStream is, OutputStream os) throws IOException {
int read = 0;
byte[] buffer = new byte[4096];
while ((read = is.read(buffer)) != -1) {
os.write(buffer, 0, read);
@ -38,13 +38,13 @@ public class IOUtils {
is.close();
os.close();
}
public static void copy(Reader input, Writer output) throws IOException {
char[] buffer = new char[4096];
int read = 0;
while ((read = input.read(buffer)) != -1) {
output.write(buffer, 0, read);
}
}
}
public static void copy(Reader input, Writer output) throws IOException {
char[] buffer = new char[4096];
int read = 0;
while ((read = input.read(buffer)) != -1) {
output.write(buffer, 0, read);
}
}
}

@ -5,62 +5,62 @@ import org.floens.chan.ChanApplication;
import android.util.Log;
public class Logger {
public static final String TAG = "Chan";
public static final String TAG_TEST = "ChanTest";
public static void v(String message) {
Log.v(TAG, message);
}
public static void v(String message, Throwable throwable) {
Log.v(TAG, message, throwable);
}
public static void d(String message) {
Log.d(TAG, message);
}
public static void d(String message, Throwable throwable) {
Log.d(TAG, message, throwable);
}
public static void i(String message) {
Log.i(TAG, message);
}
public static void i(String message, Throwable throwable) {
Log.i(TAG, message, throwable);
}
public static void w(String message) {
Log.w(TAG, message);
}
public static void w(String message, Throwable throwable) {
Log.w(TAG, message, throwable);
}
public static void e(String message) {
Log.e(TAG, message);
}
public static void e(String message, Throwable throwable) {
Log.e(TAG, message, throwable);
}
public static void wtf(String message) {
Log.wtf(TAG, message);
}
public static void wtf(String message, Throwable throwable) {
Log.wtf(TAG, message, throwable);
}
public static void test(String message) {
if (ChanApplication.DEVELOPER_MODE) {
Log.i(TAG_TEST, message);
}
}
public static final String TAG = "Chan";
public static final String TAG_TEST = "ChanTest";
public static void v(String message) {
Log.v(TAG, message);
}
public static void v(String message, Throwable throwable) {
Log.v(TAG, message, throwable);
}
public static void d(String message) {
Log.d(TAG, message);
}
public static void d(String message, Throwable throwable) {
Log.d(TAG, message, throwable);
}
public static void i(String message) {
Log.i(TAG, message);
}
public static void i(String message, Throwable throwable) {
Log.i(TAG, message, throwable);
}
public static void w(String message) {
Log.w(TAG, message);
}
public static void w(String message, Throwable throwable) {
Log.w(TAG, message, throwable);
}
public static void e(String message) {
Log.e(TAG, message);
}
public static void e(String message, Throwable throwable) {
Log.e(TAG, message, throwable);
}
public static void wtf(String message) {
Log.wtf(TAG, message);
}
public static void wtf(String message, Throwable throwable) {
Log.wtf(TAG, message, throwable);
}
public static void test(String message) {
if (ChanApplication.DEVELOPER_MODE) {
Log.i(TAG_TEST, message);
}
}
}

@ -74,11 +74,11 @@ public class PostView extends LinearLayout implements View.OnClickListener, View
@Override
protected void onDetachedFromWindow() {
super.onDetachedFromWindow();
if (post != null) {
post.setLinkableListener(null);
}
super.onDetachedFromWindow();
if (post != null) {
post.setLinkableListener(null);
}
}
public void setPost(final Post post, final ThreadManager manager) {
@ -147,21 +147,21 @@ public class PostView extends LinearLayout implements View.OnClickListener, View
commentView.setText(post.comment);
commentView.setMovementMethod(LinkMovementMethod.getInstance());
commentView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
PostView.this.onClick(v);
}
});
@Override
public void onClick(View v) {
PostView.this.onClick(v);
}
});
commentView.setOnLongClickListener(new OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
return PostView.this.onLongClick(v);
}
});
@Override
public boolean onLongClick(View v) {
return PostView.this.onLongClick(v);
}
});
if (manager.getLoadable().isThreadMode()) {
post.setLinkableListener(this);
post.setLinkableListener(this);
}
if (manager.getLoadable().isBoardMode()) {
@ -192,12 +192,12 @@ public class PostView extends LinearLayout implements View.OnClickListener, View
}
if (manager.getLoadable().isThreadMode()) {
repliesCountView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
manager.showPostReplies(post);
}
});
repliesCountView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
manager.showPostReplies(post);
}
});
}
repliesCountView.setText(text);
@ -329,7 +329,7 @@ public class PostView extends LinearLayout implements View.OnClickListener, View
}
public void onLinkableClick(PostLinkable linkable) {
manager.onPostLinkableClicked(linkable);
manager.onPostLinkableClicked(linkable);
}
@Override

Loading…
Cancel
Save