aboutsummaryrefslogtreecommitdiffstats
path: root/app/src/main/java/net/lacolaco/smileessence/view/page/PostFragment.java
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/net/lacolaco/smileessence/view/page/PostFragment.java')
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/view/page/PostFragment.java334
1 files changed, 0 insertions, 334 deletions
diff --git a/app/src/main/java/net/lacolaco/smileessence/view/page/PostFragment.java b/app/src/main/java/net/lacolaco/smileessence/view/page/PostFragment.java
deleted file mode 100644
index c8426383..00000000
--- a/app/src/main/java/net/lacolaco/smileessence/view/page/PostFragment.java
+++ /dev/null
@@ -1,334 +0,0 @@
-/*
- * The MIT License (MIT)
- *
- * Copyright (c) 2012-2014 lacolaco.net
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-package net.lacolaco.smileessence.view.page;
-
-import android.content.Intent;
-import android.net.Uri;
-import android.os.Bundle;
-import android.support.annotation.NonNull;
-import android.support.v4.content.ContextCompat;
-import android.text.Editable;
-import android.text.Spannable;
-import android.text.TextUtils;
-import android.text.TextWatcher;
-import android.text.method.ArrowKeyMovementMethod;
-import android.view.*;
-import android.widget.*;
-import com.twitter.Validator;
-import net.lacolaco.smileessence.R;
-import net.lacolaco.smileessence.World;
-import net.lacolaco.smileessence.activity.MainActivity;
-import net.lacolaco.smileessence.data.PostState;
-import net.lacolaco.smileessence.entity.Tweet;
-import net.lacolaco.smileessence.logging.Logger;
-import net.lacolaco.smileessence.preference.UserPreferenceHelper;
-import net.lacolaco.smileessence.twitter.task.Tweets;
-import net.lacolaco.smileessence.util.BitmapThumbnailTask;
-import net.lacolaco.smileessence.util.IntentUtils;
-import net.lacolaco.smileessence.util.SystemServiceHelper;
-import net.lacolaco.smileessence.util.UIHandler;
-import net.lacolaco.smileessence.view.Partials;
-
-import java.io.File;
-
-public class PostFragment extends PageFragment implements TextWatcher, View.OnFocusChangeListener, View.OnClickListener,
- PostState.OnPostStateChangeListener {
- // ------------------------------ FIELDS ------------------------------
-
- private EditText editText;
- private TextView textViewCount;
- private Button buttonTweet;
- private ViewGroup viewGroupReply;
- private ViewGroup viewGroupMedia;
-
- @Override
- public void refresh() {
- }
-
- // --------------------- Interface OnClickListener ---------------------
-
- @Override
- public void onClick(View v) {
- switch (v.getId()) {
- case R.id.button_post_delete: {
- deletePost();
- break;
- }
- case R.id.button_post_media: {
- setImage();
- break;
- }
- case R.id.button_post_tweet: {
- submitPost();
- break;
- }
- case R.id.button_post_reply_delete: {
- deleteReply();
- break;
- }
- case R.id.button_post_media_delete: {
- removeImage();
- break;
- }
- case R.id.image_post_media: {
- displayImage();
- break;
- }
- }
- }
-
- // --------------------- Interface OnFocusChangeListener ---------------------
-
- @Override
- public void onFocusChange(View v, boolean hasFocus) {
- if (hasFocus) {
- SystemServiceHelper.showIM(getActivity(), editText);
- } else {
- SystemServiceHelper.hideIM(getActivity(), editText);
- }
- }
-
- // --------------------- Interface OnPostStateChangeListener ---------------------
-
-
- @Override
- public void onPostStateChange(final PostState postState) {
- Logger.debug("onPostStateChange");
- final MainActivity activity = (MainActivity) getActivity();
- if (editText != null) {
- final int start = postState.getSelectionStart();
- final int end = postState.getSelectionEnd();
- editText.removeTextChangedListener(this);
- editText.setTextKeepState(postState.getText());
- editText.addTextChangedListener(this);
- updateTextCount(editText.getText());
- new UIHandler().postAtFrontOfQueue(() -> editText.setSelection(start, end));
- }
- if (viewGroupReply != null) {
- if (postState.getInReplyTo() != null) {
- viewGroupReply.setVisibility(View.VISIBLE);
- ImageButton imageButtonDeleteReply = (ImageButton) viewGroupReply.findViewById(R.id.button_post_reply_delete);
- imageButtonDeleteReply.setOnClickListener(this);
-
- Tweet tweet = postState.getInReplyTo();
- View header = viewGroupReply.findViewById(R.id.layout_post_reply_status);
- header = Partials.getTweetView(tweet, activity, header, true);
- header.setBackgroundColor(ContextCompat.getColor(getActivity(), R.color.transparent));
- header.setClickable(false);
- } else {
- viewGroupReply.setVisibility(View.GONE);
- }
- }
- if (viewGroupMedia != null) {
- ImageView imageViewMedia = (ImageView) viewGroupMedia.findViewById(R.id.image_post_media);
- if (TextUtils.isEmpty(postState.getMediaFilePath())) {
- viewGroupMedia.setVisibility(View.GONE);
- } else {
- viewGroupMedia.setVisibility(View.VISIBLE);
-
- }
- new BitmapThumbnailTask(postState.getMediaFilePath(), imageViewMedia).execute();
- }
- }
-
- // --------------------- Interface TextWatcher ---------------------
-
- @Override
- public void beforeTextChanged(CharSequence s, int start, int count, int after) {
- }
-
- @Override
- public void onTextChanged(CharSequence s, int start, int before, int count) {
- updateTextCount(s);
- }
-
- private void updateTextCount(CharSequence s) {
- Validator validator = new Validator();
- int remainingCount = 140 - validator.getTweetLength(s.toString());
- if (!TextUtils.isEmpty(getWorld().getPostState().getMediaFilePath())) {
- remainingCount -= validator.getShortUrlLength();
- }
- textViewCount.setText(String.valueOf(remainingCount));
- if (remainingCount == 140 || remainingCount < 0) {
- textViewCount.setTextColor(ContextCompat.getColor(getActivity(), R.color.red));
- } else {
- textViewCount.setTextAppearance(getActivity(), android.R.style.TextAppearance_Widget_TextView);
- }
- setStateFromView();
- }
-
- @Override
- public void afterTextChanged(Editable s) {
- }
-
- // ------------------------ OVERRIDE METHODS ------------------------
-
- @Override
- public void onCreate(Bundle savedInstanceState) {
- Logger.debug("onCreate");
- super.onCreate(savedInstanceState);
- setHasOptionsMenu(true);
- }
-
- @Override
- public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
- super.onCreateOptionsMenu(menu, inflater);
- SystemServiceHelper.showIM(getActivity(), editText);
- }
-
- public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
- Logger.debug("onCreateView");
- getWorld().getPostState().setListener(this);
- View v = inflater.inflate(R.layout.fragment_post, null);
- buttonTweet = getTweetButton(v);
- buttonTweet.setOnClickListener(this);
- editText = getEditText(v);
- textViewCount = getCountTextView(v);
- int textSize = UserPreferenceHelper.getInstance().getTextSize();
- editText.addTextChangedListener(this);
- editText.setOnFocusChangeListener(this);
- editText.setTextSize(textSize + 4);
- editText.setMovementMethod(new ArrowKeyMovementMethod() {
- @Override
- protected boolean right(@NonNull TextView widget, Spannable buffer) {
- //Don't back to Home
- return widget.getSelectionEnd() == widget.length() || super.right(widget, buffer);
- }
- });
- ImageButton imageButtonDeleteText = (ImageButton) v.findViewById(R.id.button_post_delete);
- imageButtonDeleteText.setOnClickListener(this);
- ImageButton imageButtonMedia = (ImageButton) v.findViewById(R.id.button_post_media);
- imageButtonMedia.setOnClickListener(this);
- //Reply view
- viewGroupReply = getReplyViewGroup(v);
- ImageButton imageButtonDeleteReply = (ImageButton) viewGroupReply.findViewById(R.id.button_post_reply_delete);
- imageButtonDeleteReply.setOnClickListener(this);
- //Media view
- viewGroupMedia = getMediaViewGroup(v);
- ImageView imageViewMedia = (ImageView) viewGroupMedia.findViewById(R.id.image_post_media);
- ImageButton imageButtonDeleteMedia = (ImageButton) viewGroupMedia.findViewById(R.id.button_post_media_delete);
- imageViewMedia.setOnClickListener(this);
- imageButtonDeleteMedia.setOnClickListener(this);
- editText.requestFocus();
- return v;
- }
-
- @Override
- public void onDestroyView() {
- Logger.debug("onDestroyView");
- super.onDestroyView();
- setStateFromView();
- getWorld().getPostState().removeListener();
- }
-
- @Override
- public void onViewStateRestored(Bundle savedInstanceState) {
- Logger.debug("onViewStateRestored");
- super.onViewStateRestored(savedInstanceState);
- PostState state = getWorld().getPostState();
- onPostStateChange(state);
- }
-
- private void deletePost() {
- editText.setText("");
- getWorld().getPostState().beginTransaction().setText("").setCursor(0).commit();
- deleteReply();
- }
-
- private void deleteReply() {
- viewGroupReply.setVisibility(View.GONE);
- getWorld().getPostState().beginTransaction().setInReplyTo(null).commit();
- }
-
- private void displayImage() {
- Intent intent = new Intent();
- intent.setAction(Intent.ACTION_VIEW);
- intent.addCategory(Intent.CATEGORY_DEFAULT);
- intent.setDataAndType(Uri.fromFile(new File(getWorld().getPostState().getMediaFilePath())), "image/*");
- IntentUtils.startActivityIfFound(getActivity(), intent);
- }
-
- private TextView getCountTextView(View v) {
- return (TextView) v.findViewById(R.id.post_text_count);
- }
-
- private EditText getEditText(View v) {
- return (EditText) v.findViewById(R.id.post_edit_text);
- }
-
- private ViewGroup getMediaViewGroup(View v) {
- return (ViewGroup) v.findViewById(R.id.post_media_parent);
- }
-
- private ViewGroup getReplyViewGroup(View v) {
- return (ViewGroup) v.findViewById(R.id.post_inreplyto_parent);
- }
-
- private Button getTweetButton(View v) {
- return (Button) v.findViewById(R.id.button_post_tweet);
- }
-
- private void removeImage() {
- SystemServiceHelper.hideIM(getActivity(), editText);
- viewGroupMedia.setVisibility(View.GONE);
- ((ImageView) viewGroupMedia.findViewById(R.id.image_post_media)).setImageBitmap(null);
- getWorld().getPostState().beginTransaction().setMediaFilePath("").commit();
- }
-
- private void setImage() {
- setStateFromView();
- SystemServiceHelper.hideIM(getActivity(), editText);
-
- Intent intent = new Intent(Intent.ACTION_PICK);
- intent.setType("image/*");
- IntentUtils.startActivityForResultIfFound(getActivity(), intent, MainActivity.REQUEST_GET_PICTURE_FROM_GALLERY);
- }
-
- private void setStateFromView() {
- PostState state = getWorld().getPostState();
- state.removeListener();
- state.beginTransaction()
- .setText(editText.getText().toString())
- .setSelection(editText.getSelectionStart(), editText.getSelectionEnd())
- .commit();
- state.setListener(this);
- }
-
- private void submitPost() {
- SystemServiceHelper.hideIM(getActivity(), editText);
- setStateFromView();
- PostState state = getWorld().getPostState();
- MainActivity mainActivity = (MainActivity) getActivity();
- boolean resizeFlag = UserPreferenceHelper.getInstance().get(R.string.key_setting_resize_post_image, false);
- new Tweets.CreateTask(getWorld().getAccount(), state.toStatusUpdate(), state.getMediaFilePath(), resizeFlag)
- .onDoneUI(t -> {
- getWorld().notify(R.string.notice_tweet_succeeded);
- getWorld().getPostState().beginTransaction().clear().commit();
- })
- .onFail(e -> getWorld().notifyError(R.string.notice_tweet_failed, e))
- .execute();
- mainActivity.openHomePage();
- }
-}