diff options
Diffstat (limited to 'app/src/main/java/net/lacolaco/smileessence/data/PostState.java')
-rw-r--r-- | app/src/main/java/net/lacolaco/smileessence/data/PostState.java | 184 |
1 files changed, 0 insertions, 184 deletions
diff --git a/app/src/main/java/net/lacolaco/smileessence/data/PostState.java b/app/src/main/java/net/lacolaco/smileessence/data/PostState.java deleted file mode 100644 index 4bbd83a4..00000000 --- a/app/src/main/java/net/lacolaco/smileessence/data/PostState.java +++ /dev/null @@ -1,184 +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.data; - -import net.lacolaco.smileessence.activity.MainActivity; -import net.lacolaco.smileessence.entity.Tweet; -import net.lacolaco.smileessence.view.DialogHelper; -import twitter4j.StatusUpdate; - -public class PostState { - private String text = ""; - private Tweet inReplyTo; - private String mediaFilePath = ""; - private boolean directMessage = false; - private OnPostStateChangeListener listener; - private int selectionStart, selectionEnd; - - public Tweet getInReplyTo() { - return inReplyTo; - } - - public String getMediaFilePath() { - return mediaFilePath; - } - - public int getSelectionEnd() { - if (selectionEnd < 0) { - return text.length(); - } - return selectionEnd; - } - - public int getSelectionStart() { - if (selectionStart < 0) { - return text.length(); - } - return selectionStart; - } - - public String getText() { - return text; - } - - public PostState setListener(OnPostStateChangeListener listener) { - this.listener = listener; - return this; - } - - public PostStateTransaction beginTransaction() { - return new PostStateTransaction(this); - } - - public void removeListener() { - this.listener = null; - } - - /** - * Convert to StatusUpdate for tweet. - * - * @return StatusUpdate - */ - public StatusUpdate toStatusUpdate() { - StatusUpdate su = new StatusUpdate(getText()); - if (getInReplyTo() != null) { - su.setInReplyToStatusId(getInReplyTo().getId()); - } - return su; - } - - private PostState copy(PostState another) { - this.text = another.text; - this.inReplyTo = another.getInReplyTo(); - this.mediaFilePath = another.mediaFilePath; - this.directMessage = another.directMessage; - this.selectionStart = another.selectionStart; - this.selectionEnd = another.selectionEnd; - this.listener = another.listener; - return this; - } - - private void postStateChange() { - if (listener != null) { - listener.onPostStateChange(this); - } - } - - // -------------------------- INNER CLASSES -------------------------- - - public interface OnPostStateChangeListener { - - void onPostStateChange(PostState postState); - } - - public static class PostStateTransaction { - private PostState origState, state; - - private PostStateTransaction(PostState state) { - this.origState = state; - this.state = new PostState().copy(state); - } - - public PostStateTransaction setText(String text) { - state.text = text; - return this; - } - - public PostStateTransaction appendText(String text) { - state.text = state.text + text; - return this; - } - - public PostStateTransaction insertText(int index, String text) { - StringBuilder builder = new StringBuilder(state.text); - builder.insert(index, text); - state.text = builder.toString(); - return this; - } - - public PostStateTransaction setInReplyTo(Tweet inReplyTo) { - state.inReplyTo = inReplyTo; - return this; - } - - public PostStateTransaction setMediaFilePath(String mediaFilePath) { - state.mediaFilePath = mediaFilePath; - return this; - } - - public PostStateTransaction setCursor(int cursor) { - state.selectionStart = state.selectionEnd = cursor; - return this; - } - - public PostStateTransaction setSelection(int start, int end) { - state.selectionStart = start; - state.selectionEnd = end; - return this; - } - - public PostStateTransaction clear() { - state.text = ""; - state.selectionStart = state.selectionEnd = 0; - state.inReplyTo = null; - return this; - } - - public void commit() { - origState.copy(state).postStateChange(); - } - - public void commitWithOpen(MainActivity activity) { - DialogHelper.closeAll(activity); - origState.copy(state).postStateChange(); - activity.openPostPage(); - } - - public PostStateTransaction moveCursor(int length) { - int cursor = state.selectionEnd + length; - return setCursor(cursor); - } - } -} |