package org.softeg.slartus.forpdaplus.classes;
import android.content.Context;
import android.support.v4.app.FragmentActivity;
import android.text.Html;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import com.afollestad.materialdialogs.MaterialDialog;
import org.softeg.slartus.forpdaplus.Client;
import org.softeg.slartus.forpdaplus.MainActivity;
import org.softeg.slartus.forpdaplus.R;
import org.softeg.slartus.forpdaplus.common.AppLog;
import org.softeg.slartus.forpdaplus.fragments.profile.ProfileFragment;
import org.softeg.slartus.forpdaplus.fragments.qms.QmsContactThemes;
import org.softeg.slartus.forpdaplus.fragments.search.SearchSettingsDialogFragment;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* User: slinkin
* Date: 27.09.11
* Time: 10:44
*/
public class ForumUser {
private String m_Nick;
private String m_Group;
private String m_Id;
private String m_Reputation;
public interface InsertNickInterface {
void insert(String text);
}
public static void showUserQuickAction(final FragmentActivity context, View webView, final String userId,
String userNick) {
showUserQuickAction(context, webView, null, "", userId, userNick, null);
}
public static void showUserQuickAction(final FragmentActivity context, View webView, final String topicId, final String postId,
final String userId,
String userNick,final InsertNickInterface insertNickInterface) {
try {
userNick = Html.fromHtml(userNick.replace("<", "<")).toString();
List<String> items = new ArrayList<>();
int i = 0;
int insertNickPosition = -1;
int sendQmsPosition = -1;
int showProfilePosition = -1;
int showUserTopicsPosition = -1;
int showUserPostsPosition = -1;
int showUserPostsInTopicPosition = -1;
if (Client.getInstance().getLogined()) {
if (insertNickInterface != null){
items.add(context.getString(R.string.InsertNick));
insertNickPosition = i; i++;
}
items.add(context.getString(R.string.MessagesQms));
sendQmsPosition = i; i++;
}
items.add(context.getString(R.string.Profile));
showProfilePosition = i; i++;
items.add(context.getString(R.string.FindUserTopics));
showUserTopicsPosition = i; i++;
items.add(context.getString(R.string.FindUserPosts));
showUserPostsPosition = i;
if(topicId!=null){
i++;
items.add(context.getString(R.string.FindUserPostsInTopic));
showUserPostsInTopicPosition = i;
}
if (items.size() == 0) return;
final int finalInsertNickPosition = insertNickPosition;
final int finalSendQmsPosition = sendQmsPosition;
final int finalShowProfilePosition = showProfilePosition;
final int finalShowUserTopicsPosition = showUserTopicsPosition;
final int finalShowUserPostsPosition = showUserPostsPosition;
final int finalShowUserPostsInTopicPosition = showUserPostsInTopicPosition;
final String finalUserNick = userNick;
new MaterialDialog.Builder(context)
.title(finalUserNick)
.items(items.toArray(new CharSequence[items.size()]))
.itemsCallback(new MaterialDialog.ListCallback() {
@Override
public void onSelection(MaterialDialog materialDialog, View view, int i, CharSequence charSequence) {
if (i == finalInsertNickPosition) {
assert insertNickInterface != null;
insertNickInterface.insert(String.format(TopicBodyBuilder.NICK_SNAPBACK_TEMPLATE,postId, finalUserNick ));
} else if (i == finalSendQmsPosition) {
QmsContactThemes.showThemes(userId, finalUserNick);
} else if (i == finalShowProfilePosition) {
ProfileFragment.showProfile(userId, finalUserNick);
} else if (i == finalShowUserTopicsPosition) {
MainActivity.startForumSearch(SearchSettingsDialogFragment.createUserTopicsSearchSettings(finalUserNick));
} else if (i == finalShowUserPostsPosition) {
MainActivity.startForumSearch(SearchSettingsDialogFragment.createUserPostsSearchSettings(finalUserNick));
} else if (i == finalShowUserPostsInTopicPosition) {
MainActivity.startForumSearch(SearchSettingsDialogFragment.createUserPostsInTopicSearchSettings(finalUserNick, topicId));
}
}
})
.show();
} catch (Throwable ex) {
AppLog.e(context, ex);
}
}
public static void onCreateContextMenu(final Context context, List<MenuListDialog> menu, final String userId,
String userNick) {
try {
final String finalUserNick = Html.fromHtml(userNick).toString();
if (Client.getInstance().getLogined()) {
menu.add(new MenuListDialog(context.getString(R.string.MessagesQms), new Runnable() {
@Override
public void run() {
QmsContactThemes.showThemes(userId, finalUserNick);
}
}));
}
menu.add(new MenuListDialog(context.getString(R.string.Profile), new Runnable() {
@Override
public void run() {
ProfileFragment.showProfile(userId, finalUserNick);
}
}));
menu.add(new MenuListDialog(context.getString(R.string.FindUserTopics), new Runnable() {
@Override
public void run() {
MainActivity.startForumSearch(SearchSettingsDialogFragment.createUserTopicsSearchSettings(finalUserNick));
}
}));
menu.add(new MenuListDialog(context.getString(R.string.FindUserPosts), new Runnable() {
@Override
public void run() {
MainActivity.startForumSearch(SearchSettingsDialogFragment.createUserPostsSearchSettings(finalUserNick));
}
}));
} catch (Throwable ex) {
AppLog.e(context, ex);
}
}
public static void startChangeRep(final Context context, final android.os.Handler handler, final String userId,
String userNick, final String postId, final String type, String title) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View layout = inflater.inflate(R.layout.reputation, null);
assert layout != null;
TextView username_view = (TextView) layout.findViewById(R.id.username_view);
TextView textUser = (TextView) layout.findViewById(R.id.user);
final EditText message_edit = (EditText) layout.findViewById(R.id.message_edit);
if(userId.equals(userNick)){
textUser.setVisibility(View.GONE);
username_view.setVisibility(View.GONE);
}else {
username_view.setText(userNick);
}
new MaterialDialog.Builder(context)
.title(title)
.customView(layout,true)
.positiveText(context.getString(R.string.Change))
.callback(new MaterialDialog.ButtonCallback() {
@Override
public void onPositive(MaterialDialog dialog) {
Toast.makeText(context, context.getString(R.string.ChangeReputationRequest), Toast.LENGTH_SHORT).show();
new Thread(new Runnable() {
public void run() {
Exception ex = null;
final Map<String, String> outParams = new HashMap<>();
Boolean res = false;
try {
res = Client.getInstance().changeReputation(postId, userId, type, message_edit.getText().toString()
, outParams);
} catch (IOException e) {
ex = e;
}
final Exception finalEx = ex;
final Boolean finalRes = res;
handler.post(new Runnable() {
public void run() {
try {
if (finalEx != null) {
Toast.makeText(context, context.getString(R.string.ChangeReputationError), Toast.LENGTH_SHORT).show();
AppLog.e(context, finalEx);
} else if (!finalRes) {
new MaterialDialog.Builder(context)
.title(context.getString(R.string.ChangeReputationError))
.content(outParams.get("Result"))
.cancelable(true)
.positiveText(R.string.ok)
.show();
} else {
Toast.makeText(context, outParams.get("Result"), Toast.LENGTH_SHORT).show();
}
} catch (Exception ex) {
AppLog.e(context, ex);
}
}
});
}
}).start();
}
})
.negativeText(R.string.cancel)
.show();
}
}