diff --git a/MiceAndMysticsTracker/src/main/java/com/eyecreate/miceandmystics/miceandmystics/CampaignActivity.java b/MiceAndMysticsTracker/src/main/java/com/eyecreate/miceandmystics/miceandmystics/CampaignActivity.java index cfcaf935b3b5d8f2c14e5a5ac4df6d05439bb791..aac6c20e2280fbc14109d5602e9145281dd50c17 100644 --- a/MiceAndMysticsTracker/src/main/java/com/eyecreate/miceandmystics/miceandmystics/CampaignActivity.java +++ b/MiceAndMysticsTracker/src/main/java/com/eyecreate/miceandmystics/miceandmystics/CampaignActivity.java @@ -10,6 +10,7 @@ import android.view.*; import android.widget.ArrayAdapter; import android.widget.EditText; import android.widget.Spinner; +import android.widget.Toast; import com.eyecreate.miceandmystics.miceandmystics.adapters.CampaignAdapter; import com.eyecreate.miceandmystics.miceandmystics.model.Enums.CampaignType; @@ -42,25 +43,33 @@ public class CampaignActivity extends RecyclerViewActivity { //noinspection SimplifiableIfStatement if (id == R.id.action_add_campaign) { - LayoutInflater inflator = (LayoutInflater)(new ContextThemeWrapper(this, R.style.dialogTheme)).getSystemService(Context.LAYOUT_INFLATER_SERVICE); - final View dialogView = inflator.inflate(R.layout.dialog_new_campaign, null, false); - final Spinner typeSpinner = ((Spinner)dialogView.findViewById(R.id.campaign_type)); - typeSpinner.setAdapter(new ArrayAdapter(this, R.layout.simple_spinner_item, CampaignType.values())); - typeSpinner.setSelection(0); - AlertDialog addDialog = new AlertDialog.Builder(this,R.style.dialogTheme) - .setMessage("Please give your new campaign a unique name:") - .setView(dialogView) - .setPositiveButton("Ok", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialogInterface, int i) { - ((CampaignAdapter) getAdapter()).addItem(((EditText) dialogView.findViewById(R.id.campaign_name)).getText().toString(), CampaignType.valueOfDisplayName(typeSpinner.getSelectedItem().toString())); - } - }) - .create(); - addDialog.show(); + newCampaignDialog(); return true; } return super.onOptionsItemSelected(item); } + + public void newCampaignDialog() { + LayoutInflater inflator = (LayoutInflater)(new ContextThemeWrapper(this, R.style.dialogTheme)).getSystemService(Context.LAYOUT_INFLATER_SERVICE); + final View dialogView = inflator.inflate(R.layout.dialog_new_campaign, null, false); + final Spinner typeSpinner = ((Spinner)dialogView.findViewById(R.id.campaign_type)); + typeSpinner.setAdapter(new ArrayAdapter(this, R.layout.simple_spinner_item, CampaignType.values())); + typeSpinner.setSelection(0); + AlertDialog addDialog = new AlertDialog.Builder(this,R.style.dialogTheme) + .setMessage("Please give your new campaign a unique name:") + .setView(dialogView) + .setPositiveButton("Ok", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + if(((EditText) dialogView.findViewById(R.id.campaign_name)).getText().length()>0) { + ((CampaignAdapter) getAdapter()).addItem(((EditText) dialogView.findViewById(R.id.campaign_name)).getText().toString(), CampaignType.valueOfDisplayName(typeSpinner.getSelectedItem().toString())); + } else { + Toast.makeText(CampaignActivity.this,"Can not have blank name!",Toast.LENGTH_LONG).show(); + } + } + }) + .create(); + addDialog.show(); + } } diff --git a/MiceAndMysticsTracker/src/main/java/com/eyecreate/miceandmystics/miceandmystics/CampaignDetailsActivity.java b/MiceAndMysticsTracker/src/main/java/com/eyecreate/miceandmystics/miceandmystics/CampaignDetailsActivity.java index 48055f92feb39134f74edae7a00b67417ec25575..f986c21b75e61d72a9c0f703a0b6dc011e81902f 100644 --- a/MiceAndMysticsTracker/src/main/java/com/eyecreate/miceandmystics/miceandmystics/CampaignDetailsActivity.java +++ b/MiceAndMysticsTracker/src/main/java/com/eyecreate/miceandmystics/miceandmystics/CampaignDetailsActivity.java @@ -1,11 +1,20 @@ package com.eyecreate.miceandmystics.miceandmystics; +import android.app.AlertDialog; +import android.content.Context; +import android.content.DialogInterface; import android.os.Bundle; import android.support.v7.widget.LinearLayoutManager; -import android.view.Menu; -import android.view.MenuItem; +import android.view.*; +import android.widget.ArrayAdapter; +import android.widget.EditText; +import android.widget.Spinner; +import android.widget.Toast; import com.eyecreate.miceandmystics.miceandmystics.adapters.CampaignDetailsAdapter; import com.eyecreate.miceandmystics.miceandmystics.model.Campaign; +import com.eyecreate.miceandmystics.miceandmystics.model.Enums.CharacterNames; +import com.eyecreate.miceandmystics.miceandmystics.model.Player; +import io.realm.RealmResults; public class CampaignDetailsActivity extends RecyclerViewActivity { @@ -38,9 +47,65 @@ public class CampaignDetailsActivity extends RecyclerViewActivity { //noinspection SimplifiableIfStatement if (id == R.id.action_add_character) { + newCharacterDialog(); + return true; + } else if (id == R.id.action_add_player) { + newPlayerDialog(); return true; } return super.onOptionsItemSelected(item); } + + public void newPlayerDialog() { + LayoutInflater inflator = (LayoutInflater)(new ContextThemeWrapper(this, R.style.dialogTheme)).getSystemService(Context.LAYOUT_INFLATER_SERVICE); + final View dialogView = inflator.inflate(R.layout.dialog_new_player, null, false); + final EditText playerEdit = ((EditText)dialogView.findViewById(R.id.player_name)); + AlertDialog addDialog = new AlertDialog.Builder(this,R.style.dialogTheme) + .setMessage("Please name the new player:") + .setView(dialogView) + .setPositiveButton("Create", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + if (playerEdit.getText().length()>0) { + MiceAndMysticsApplication.getRealmInstance().beginTransaction(); + Player player = MiceAndMysticsApplication.getRealmInstance().createObject(Player.class); + player.setPlayerName(playerEdit.getText().toString()); + MiceAndMysticsApplication.getRealmInstance().copyToRealmOrUpdate(player); + MiceAndMysticsApplication.getRealmInstance().commitTransaction(); + } else { + Toast.makeText(CampaignDetailsActivity.this,"Can not have a blank name!",Toast.LENGTH_LONG).show(); + } + } + }) + .create(); + addDialog.show(); + } + + public void newCharacterDialog() { + LayoutInflater inflator = (LayoutInflater)(new ContextThemeWrapper(this, R.style.dialogTheme)).getSystemService(Context.LAYOUT_INFLATER_SERVICE); + final View dialogView = inflator.inflate(R.layout.dialog_new_character, null, false); + final Spinner charSpinner = ((Spinner)dialogView.findViewById(R.id.character_type)); + charSpinner.setAdapter(new ArrayAdapter(this, R.layout.simple_spinner_item, CharacterNames.values())); + charSpinner.setSelection(0); + final Spinner playerSpinner = ((Spinner)dialogView.findViewById(R.id.player_name)); + RealmResults players = MiceAndMysticsApplication.getRealmInstance().where(Player.class).findAll(); + playerSpinner.setAdapter(new ArrayAdapter(this, R.layout.simple_spinner_item, Player.convertPlayerListToStringArray(players.subList(0,players.size())))); + playerSpinner.setSelection(0); + AlertDialog addDialog = new AlertDialog.Builder(this,R.style.dialogTheme) + .setMessage("Please select your character and controlling player:") + .setView(dialogView) + .setPositiveButton("Create", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + if(playerSpinner.getSelectedItem() != null) { + ((CampaignDetailsAdapter) getAdapter()).addCharacter(CharacterNames.valueOf(charSpinner.getSelectedItem().toString()), MiceAndMysticsApplication.getRealmInstance().where(Player.class).equalTo("playerName", playerSpinner.getSelectedItem().toString()).findFirst()); + } else { + Toast.makeText(CampaignDetailsActivity.this,"No player selected. Maybe try making one first.",Toast.LENGTH_LONG).show(); + } + } + }) + .create(); + addDialog.show(); + } } diff --git a/MiceAndMysticsTracker/src/main/java/com/eyecreate/miceandmystics/miceandmystics/adapters/CampaignAdapter.java b/MiceAndMysticsTracker/src/main/java/com/eyecreate/miceandmystics/miceandmystics/adapters/CampaignAdapter.java index ce051d5eac9545deb0bab72c7e9e5c5bc27c3531..4a3b0ce63ee49f66f8e4d22a1704e7997597750c 100644 --- a/MiceAndMysticsTracker/src/main/java/com/eyecreate/miceandmystics/miceandmystics/adapters/CampaignAdapter.java +++ b/MiceAndMysticsTracker/src/main/java/com/eyecreate/miceandmystics/miceandmystics/adapters/CampaignAdapter.java @@ -6,6 +6,7 @@ import android.view.LayoutInflater; import android.view.ViewGroup; import com.eyecreate.miceandmystics.miceandmystics.MiceAndMysticsApplication; import com.eyecreate.miceandmystics.miceandmystics.R; +import com.eyecreate.miceandmystics.miceandmystics.model.*; import com.eyecreate.miceandmystics.miceandmystics.model.Enums.CampaignType; import com.eyecreate.miceandmystics.miceandmystics.viewholders.CampaignViewHolder; import io.realm.RealmResults; @@ -49,7 +50,13 @@ public class CampaignAdapter extends RecyclerView.Adapter { .where(com.eyecreate.miceandmystics.miceandmystics.model.Campaign.class) .equalTo("campaignName",campaignName) .findFirst(); + for(com.eyecreate.miceandmystics.miceandmystics.model.Character character:campaign.getCurrentCharacters()) { + CampaignDetailsAdapter.removeCharacterFromDB(character); + } MiceAndMysticsApplication.getRealmInstance().beginTransaction(); + for(Achievement achievement:campaign.getPartyStoryAchievements()) { + achievement.removeFromRealm(); + } campaign.removeFromRealm(); MiceAndMysticsApplication.getRealmInstance().commitTransaction(); fullRefresh(); diff --git a/MiceAndMysticsTracker/src/main/java/com/eyecreate/miceandmystics/miceandmystics/adapters/CampaignDetailsAdapter.java b/MiceAndMysticsTracker/src/main/java/com/eyecreate/miceandmystics/miceandmystics/adapters/CampaignDetailsAdapter.java index 31f91d3c62b314aa33c4dc535ba6389577ff2945..30b3b1b41778b8777e010ebc2898c1c5fa8f2314 100644 --- a/MiceAndMysticsTracker/src/main/java/com/eyecreate/miceandmystics/miceandmystics/adapters/CampaignDetailsAdapter.java +++ b/MiceAndMysticsTracker/src/main/java/com/eyecreate/miceandmystics/miceandmystics/adapters/CampaignDetailsAdapter.java @@ -4,6 +4,7 @@ import android.content.Context; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.ViewGroup; +import android.widget.Toast; import com.eyecreate.miceandmystics.miceandmystics.MiceAndMysticsApplication; import com.eyecreate.miceandmystics.miceandmystics.R; import com.eyecreate.miceandmystics.miceandmystics.model.*; @@ -47,21 +48,51 @@ public class CampaignDetailsAdapter extends RecyclerView.Adapter playerList) { + String[] outputPlayers = new String[playerList.size()]; + int iter = 0; + for(Player player:playerList){ + outputPlayers[iter] = player.getPlayerName(); + iter++; + } + return outputPlayers; } } diff --git a/MiceAndMysticsTracker/src/main/java/com/eyecreate/miceandmystics/miceandmystics/viewholders/CampaignDetailsViewHolder.java b/MiceAndMysticsTracker/src/main/java/com/eyecreate/miceandmystics/miceandmystics/viewholders/CampaignDetailsViewHolder.java index a1f99938da4b173cc1ad4aa1292b77e6315dcfe2..37464eea01d59eda71a75bd3cd3ba7efbb58376a 100644 --- a/MiceAndMysticsTracker/src/main/java/com/eyecreate/miceandmystics/miceandmystics/viewholders/CampaignDetailsViewHolder.java +++ b/MiceAndMysticsTracker/src/main/java/com/eyecreate/miceandmystics/miceandmystics/viewholders/CampaignDetailsViewHolder.java @@ -23,6 +23,8 @@ public class CampaignDetailsViewHolder extends RecyclerView.ViewHolder implement characterName = (TextView)itemView.findViewById(R.id.character_name); playerName = (TextView)itemView.findViewById(R.id.character_player); characterIcon = (ImageView)itemView.findViewById(R.id.character_icon); + itemView.setOnClickListener(this); + itemView.setOnLongClickListener(this); } public void bindModel(Character character) { diff --git a/MiceAndMysticsTracker/src/main/res/layout/dialog_new_campaign.xml b/MiceAndMysticsTracker/src/main/res/layout/dialog_new_campaign.xml index 75576740d0e6298c8768483b8120edb7a5c6da8a..ff830bd064c9fdc71d01ca7d3b042d516b3bb368 100644 --- a/MiceAndMysticsTracker/src/main/res/layout/dialog_new_campaign.xml +++ b/MiceAndMysticsTracker/src/main/res/layout/dialog_new_campaign.xml @@ -1,6 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/MiceAndMysticsTracker/src/main/res/layout/dialog_new_player.xml b/MiceAndMysticsTracker/src/main/res/layout/dialog_new_player.xml new file mode 100644 index 0000000000000000000000000000000000000000..0f73f87f4cdbb3ca931cf37ff8ccc39aba85431d --- /dev/null +++ b/MiceAndMysticsTracker/src/main/res/layout/dialog_new_player.xml @@ -0,0 +1,11 @@ + + + + \ No newline at end of file diff --git a/MiceAndMysticsTracker/src/main/res/menu/menu_campaign_details.xml b/MiceAndMysticsTracker/src/main/res/menu/menu_campaign_details.xml index 0a6d9b4647a697764ff6f66c68511ac060018e2d..05c4ad06dff9274a9957d8f3688738848e475e37 100644 --- a/MiceAndMysticsTracker/src/main/res/menu/menu_campaign_details.xml +++ b/MiceAndMysticsTracker/src/main/res/menu/menu_campaign_details.xml @@ -6,4 +6,8 @@ android:title="Add Character" android:icon="@android:drawable/ic_menu_add" app:showAsAction="always"/> + diff --git a/MiceAndMysticsTracker/src/main/res/mipmap-xxhdpi/ic_menu_invite.png b/MiceAndMysticsTracker/src/main/res/mipmap-xxhdpi/ic_menu_invite.png new file mode 100644 index 0000000000000000000000000000000000000000..8020fd87860be32af9706caca693f01d49330467 Binary files /dev/null and b/MiceAndMysticsTracker/src/main/res/mipmap-xxhdpi/ic_menu_invite.png differ