diff --git a/.idea/misc.xml b/.idea/misc.xml index 1c1e956bdf8e7a33b71a08d42a96c0892cf1432d..e816eddb963807f4486d466cb91f5aca53f13398 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -6,13 +6,6 @@ - - - @@ -29,19 +22,4 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/MiceAndMysticsTracker/MiceAndMysticsTracker.iml b/MiceAndMysticsTracker/MiceAndMysticsTracker.iml index 37050bb998005f1189985d38f5ec2b7168170787..7685697b02d21b05a03fddeec583bb26fe96f629 100644 --- a/MiceAndMysticsTracker/MiceAndMysticsTracker.iml +++ b/MiceAndMysticsTracker/MiceAndMysticsTracker.iml @@ -85,13 +85,16 @@ + + + \ No newline at end of file diff --git a/MiceAndMysticsTracker/build.gradle b/MiceAndMysticsTracker/build.gradle index 5a9af1a6094384074d415eaae49a855b3a542ac0..ff377caf1128bce1ced299e2a6e29c3cd209da98 100644 --- a/MiceAndMysticsTracker/build.gradle +++ b/MiceAndMysticsTracker/build.gradle @@ -44,4 +44,5 @@ dependencies { compile 'com.android.support:recyclerview-v7:21.0.+' compile 'com.android.support:cardview-v7:21.0.+' compile 'org.quanqi:android-holo-graph:0.1.0' + compile 'com.github.fengdai:alertdialogpro-theme-material:0.2.2' } diff --git a/MiceAndMysticsTracker/src/main/AndroidManifest.xml b/MiceAndMysticsTracker/src/main/AndroidManifest.xml index 7f29f01a473992e1c14cf57c56c470b552827b84..142b792ce7347cdb39ed7e1cc5b98a03b1114dba 100644 --- a/MiceAndMysticsTracker/src/main/AndroidManifest.xml +++ b/MiceAndMysticsTracker/src/main/AndroidManifest.xml @@ -26,8 +26,9 @@ android:value="com.eyecreate.miceandmystics.miceandmystics.CampaignActivity" /> - + android:name=".PlayerManagerActivity"/> + 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 761b5fe1a071a576dedca6a6b989450775ebff70..597bfff6e2d9d866d5062fb7a3fff130f674b754 100644 --- a/MiceAndMysticsTracker/src/main/java/com/eyecreate/miceandmystics/miceandmystics/CampaignActivity.java +++ b/MiceAndMysticsTracker/src/main/java/com/eyecreate/miceandmystics/miceandmystics/CampaignActivity.java @@ -3,7 +3,6 @@ package com.eyecreate.miceandmystics.miceandmystics; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; -import android.graphics.Typeface; import android.os.Bundle; import android.support.v7.widget.LinearLayoutManager; import android.view.*; @@ -11,6 +10,7 @@ import android.widget.ArrayAdapter; import android.widget.EditText; import android.widget.Spinner; import android.widget.Toast; +import com.alertdialogpro.AlertDialogPro; import com.eyecreate.miceandmystics.miceandmystics.adapters.CampaignAdapter; import com.eyecreate.miceandmystics.miceandmystics.model.Enums.CampaignType; @@ -56,7 +56,7 @@ public class CampaignActivity extends RecyclerViewActivity { 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) + AlertDialog addDialog = new AlertDialogPro.Builder(this,R.style.dialogTheme) .setMessage("Please give your new campaign a unique name:") .setView(dialogView) .setPositiveButton("Ok", new DialogInterface.OnClickListener() { 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 23af5bdf80f509161fb8c9769de3443ce430a1a4..a4707c5982777e87a26692eb7a3604bccbb9e5da 100644 --- a/MiceAndMysticsTracker/src/main/java/com/eyecreate/miceandmystics/miceandmystics/CampaignDetailsActivity.java +++ b/MiceAndMysticsTracker/src/main/java/com/eyecreate/miceandmystics/miceandmystics/CampaignDetailsActivity.java @@ -12,6 +12,7 @@ import android.widget.ArrayAdapter; import android.widget.EditText; import android.widget.Spinner; import android.widget.Toast; +import com.alertdialogpro.AlertDialogPro; import com.eyecreate.miceandmystics.miceandmystics.adapters.CampaignDetailsAdapter; import com.eyecreate.miceandmystics.miceandmystics.model.Achievement; import com.eyecreate.miceandmystics.miceandmystics.model.Campaign; @@ -80,7 +81,7 @@ public class CampaignDetailsActivity extends RecyclerViewActivity { LayoutInflater inflator = (LayoutInflater)(new ContextThemeWrapper(ctx, 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(ctx,R.style.dialogTheme) + AlertDialog addDialog = new AlertDialogPro.Builder(ctx,R.style.dialogTheme) .setMessage("Please name the new player:") .setView(dialogView) .setPositiveButton("Create", new DialogInterface.OnClickListener() { @@ -116,7 +117,7 @@ public class CampaignDetailsActivity extends RecyclerViewActivity { final Spinner achievementSpinner = ((Spinner)dialogView.findViewById(R.id.achievement_name)); achievementSpinner.setAdapter(new ArrayAdapter(this, R.layout.simple_spinner_item, com.eyecreate.miceandmystics.miceandmystics.model.Enums.Achievement.values())); achievementSpinner.setSelection(0); - AlertDialog addDialog = new AlertDialog.Builder(this,R.style.dialogTheme) + AlertDialog addDialog = new AlertDialogPro.Builder(this,R.style.dialogTheme) .setMessage("Please select the achievement to add to party:") .setView(dialogView) .setPositiveButton("Add", new DialogInterface.OnClickListener() { @@ -150,7 +151,7 @@ public class CampaignDetailsActivity extends RecyclerViewActivity { 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) + AlertDialog addDialog = new AlertDialogPro.Builder(this,R.style.dialogTheme) .setMessage("Please select your character and controlling player:") .setView(dialogView) .setPositiveButton("Create", new DialogInterface.OnClickListener() { diff --git a/MiceAndMysticsTracker/src/main/java/com/eyecreate/miceandmystics/miceandmystics/CharacterDetailsActivity.java b/MiceAndMysticsTracker/src/main/java/com/eyecreate/miceandmystics/miceandmystics/CharacterDetailsActivity.java new file mode 100644 index 0000000000000000000000000000000000000000..67e54e594c69bf60856fe6612f952a9c3dae7502 --- /dev/null +++ b/MiceAndMysticsTracker/src/main/java/com/eyecreate/miceandmystics/miceandmystics/CharacterDetailsActivity.java @@ -0,0 +1,111 @@ +package com.eyecreate.miceandmystics.miceandmystics; + +import android.app.AlertDialog; +import android.content.Context; +import android.content.DialogInterface; +import android.os.Bundle; +import android.os.PersistableBundle; +import android.support.v7.widget.LinearLayoutManager; +import android.view.*; +import android.widget.ArrayAdapter; +import android.widget.EditText; +import android.widget.Spinner; +import android.widget.Toast; +import com.alertdialogpro.AlertDialogPro; +import com.eyecreate.miceandmystics.miceandmystics.adapters.CharacterDetailsAdapter; +import com.eyecreate.miceandmystics.miceandmystics.model.Character; +import com.eyecreate.miceandmystics.miceandmystics.model.Enums.Abilities; +import com.eyecreate.miceandmystics.miceandmystics.model.Enums.CharacterNames; +import io.realm.RealmResults; + +public class CharacterDetailsActivity extends RecyclerViewActivity { + + Character currentCharacter; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setTitle("Character Details"); + getSupportActionBar().setDisplayHomeAsUpEnabled(true); + if(getIntent().hasExtra("characterId")) { + currentCharacter = MiceAndMysticsApplication.getRealmInstance().where(Character.class).equalTo("uuid",getIntent().getStringExtra("characterId")).findFirst(); + } else if(savedInstanceState.containsKey("characterId")) { + currentCharacter = MiceAndMysticsApplication.getRealmInstance().where(Character.class).equalTo("uuid",savedInstanceState.getString("characterId")).findFirst(); + } + setLayoutManager(new LinearLayoutManager(this)); + setAdapter(new CharacterDetailsAdapter(currentCharacter)); + } + + @Override + public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) { + super.onSaveInstanceState(outState, outPersistentState); + outState.putString("characterId", currentCharacter.getUuid()); + } + + @Override + public boolean onCreateOptionsMenu(Menu menu) { + getMenuInflater().inflate(R.menu.menu_character_details, menu); + return true; + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + int id = item.getItemId(); + + if(id == R.id.action_add_ability) { + newAbilityDialog(); + return true; + } else if(id == R.id.action_add_item) { + newItemDialog(); + return true; + } else if (id == android.R.id.home) { + finish(); + } + return super.onOptionsItemSelected(item); + } + + public void newAbilityDialog() { + LayoutInflater inflator = (LayoutInflater)(new ContextThemeWrapper(this, R.style.dialogTheme)).getSystemService(Context.LAYOUT_INFLATER_SERVICE); + final View dialogView = inflator.inflate(R.layout.dialog_new_ability, null, false); + final Spinner abilitySpinner = ((Spinner)dialogView.findViewById(R.id.ability_name)); + abilitySpinner.setAdapter(new ArrayAdapter(this, R.layout.simple_spinner_item, Abilities.getMatchingCharacterAbilities(CharacterNames.valueOf(currentCharacter.getCharacterName()).characterTypes()))); + abilitySpinner.setSelection(0); + AlertDialog addDialog = new AlertDialogPro.Builder(this,R.style.dialogTheme) + .setMessage("Please select the ability to be added:") + .setView(dialogView) + .setPositiveButton("Add", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + RealmResults duplicates = MiceAndMysticsApplication.getRealmInstance().where(Character.class).equalTo("abilities.abilityName",abilitySpinner.getSelectedItem().toString()).equalTo("uuid",currentCharacter.getUuid()).findAll(); + if(duplicates.size()==0) { + ((CharacterDetailsAdapter) getAdapter()).addAbility((Abilities) abilitySpinner.getSelectedItem()); + } else { + Toast.makeText(CharacterDetailsActivity.this,"That ability is already on this character.",Toast.LENGTH_LONG).show(); + } + } + }) + .create(); + addDialog.show(); + } + + public void newItemDialog() { + LayoutInflater inflator = (LayoutInflater)(new ContextThemeWrapper(this, R.style.dialogTheme)).getSystemService(Context.LAYOUT_INFLATER_SERVICE); + final View dialogView = inflator.inflate(R.layout.dialog_new_item, null, false); + final EditText itemEdit = ((EditText)dialogView.findViewById(R.id.item_name)); + AlertDialog addDialog = new AlertDialogPro.Builder(this,R.style.dialogTheme) + .setMessage("Please name the item to mark as held:") + .setView(dialogView) + .setPositiveButton("Add", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + if (itemEdit.getText().length() > 0) { + ((CharacterDetailsAdapter) getAdapter()).addItem(itemEdit.getText().toString()); + } else if (itemEdit.getText().length() == 0) { + Toast.makeText(CharacterDetailsActivity.this, "Can not have a blank item name!", Toast.LENGTH_LONG).show(); + } + } + }) + .create(); + addDialog.show(); + } +} diff --git a/MiceAndMysticsTracker/src/main/java/com/eyecreate/miceandmystics/miceandmystics/adapters/CharacterDetailsAdapter.java b/MiceAndMysticsTracker/src/main/java/com/eyecreate/miceandmystics/miceandmystics/adapters/CharacterDetailsAdapter.java new file mode 100644 index 0000000000000000000000000000000000000000..324da586d9da06c645c1bef002d2dd168ce9e361 --- /dev/null +++ b/MiceAndMysticsTracker/src/main/java/com/eyecreate/miceandmystics/miceandmystics/adapters/CharacterDetailsAdapter.java @@ -0,0 +1,107 @@ +package com.eyecreate.miceandmystics.miceandmystics.adapters; + +import android.content.Context; +import android.support.v7.widget.RecyclerView; +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.Ability; +import com.eyecreate.miceandmystics.miceandmystics.model.BackpackItem; +import com.eyecreate.miceandmystics.miceandmystics.model.Character; +import com.eyecreate.miceandmystics.miceandmystics.model.Enums.Abilities; +import com.eyecreate.miceandmystics.miceandmystics.viewholders.CharacterAbilityHeaderViewHolder; +import com.eyecreate.miceandmystics.miceandmystics.viewholders.CharacterAbilityViewHolder; +import com.eyecreate.miceandmystics.miceandmystics.viewholders.CharacterItemViewHolder; +import com.eyecreate.miceandmystics.miceandmystics.viewholders.CharacterItemsHeaderViewHolder; + +import java.util.UUID; + +public class CharacterDetailsAdapter extends RecyclerView.Adapter { + + Character currentCharacter; + LayoutInflater inflater; + + public CharacterDetailsAdapter(Character currentCharacter) { + this.currentCharacter = currentCharacter; + } + + @Override + public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + if(inflater == null) inflater = (LayoutInflater)parent.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); + if(viewType == R.id.characterDeatilAbilityHeader) { + return new CharacterAbilityHeaderViewHolder(inflater.inflate(R.layout.item_character_ability_header,parent,false)); + } else if(viewType == R.id.characterDetailAbility) { + return new CharacterAbilityViewHolder(inflater.inflate(R.layout.item_character_ability,parent,false),this); + } else if(viewType == R.id.characterDetailItemHeader) { + return new CharacterItemsHeaderViewHolder(inflater.inflate(R.layout.item_character_items_header,parent,false)); + } else { + return new CharacterItemViewHolder(inflater.inflate(R.layout.item_character_item,parent,false),this); + } + } + + @Override + public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { + if(holder instanceof CharacterAbilityHeaderViewHolder) { + ((CharacterAbilityHeaderViewHolder) holder).bindHolder(currentCharacter); + } else if(holder instanceof CharacterAbilityViewHolder) { + ((CharacterAbilityViewHolder)holder).bindHolder(currentCharacter.getAbilities().get(position-1)); + } else if(holder instanceof CharacterItemViewHolder) { + ((CharacterItemViewHolder) holder).bindModel(currentCharacter.getStoredItems().get(position-2-currentCharacter.getAbilities().size())); + } + } + + @Override + public int getItemCount() { + return currentCharacter.getAbilities().size()+1+currentCharacter.getStoredItems().size()+1; //The plus ones represent headers + } + + @Override + public int getItemViewType(int position) { + if(position == 0) { + return R.id.characterDeatilAbilityHeader; + } else if(position < currentCharacter.getAbilities().size()+1) { + return R.id.characterDetailAbility; + } else if (position == currentCharacter.getAbilities().size()+1) { + return R.id.characterDetailItemHeader; + } else { + return R.id.characterDetailItem; + } + } + + public void addAbility(Abilities ability) { + MiceAndMysticsApplication.getRealmInstance().beginTransaction(); + Ability realmAbility = MiceAndMysticsApplication.getRealmInstance().createObject(Ability.class); + realmAbility.setUuid(UUID.randomUUID().toString()); + realmAbility.setAbilityName(ability.displayName()); + currentCharacter.getAbilities().add(realmAbility); + MiceAndMysticsApplication.getRealmInstance().commitTransaction(); + notifyDataSetChanged(); + } + + public void addItem(String itemName) { + MiceAndMysticsApplication.getRealmInstance().beginTransaction(); + BackpackItem item = MiceAndMysticsApplication.getRealmInstance().createObject(BackpackItem.class); + item.setUuid(UUID.randomUUID().toString()); + item.setItemName(itemName); + currentCharacter.getStoredItems().add(item); + MiceAndMysticsApplication.getRealmInstance().commitTransaction(); + notifyDataSetChanged(); + } + + public void removeItem(String itemUuid) { + BackpackItem item = MiceAndMysticsApplication.getRealmInstance().where(BackpackItem.class).equalTo("uuid",itemUuid).findFirst(); + MiceAndMysticsApplication.getRealmInstance().beginTransaction(); + item.removeFromRealm(); + MiceAndMysticsApplication.getRealmInstance().commitTransaction(); + notifyDataSetChanged(); + } + + public void removeAbility(String abilityUuid) { + Ability ability = MiceAndMysticsApplication.getRealmInstance().where(Ability.class).equalTo("uuid",abilityUuid).findFirst(); + MiceAndMysticsApplication.getRealmInstance().beginTransaction(); + ability.removeFromRealm(); + MiceAndMysticsApplication.getRealmInstance().commitTransaction(); + notifyDataSetChanged(); + } +} diff --git a/MiceAndMysticsTracker/src/main/java/com/eyecreate/miceandmystics/miceandmystics/adapters/PlayerManagerAdapter.java b/MiceAndMysticsTracker/src/main/java/com/eyecreate/miceandmystics/miceandmystics/adapters/PlayerManagerAdapter.java index 4d252b612b2b19d0b9f53a556249bc0d17fd660e..a0d52f7c3ec81337157afe55f7259bb14ee4baf2 100644 --- a/MiceAndMysticsTracker/src/main/java/com/eyecreate/miceandmystics/miceandmystics/adapters/PlayerManagerAdapter.java +++ b/MiceAndMysticsTracker/src/main/java/com/eyecreate/miceandmystics/miceandmystics/adapters/PlayerManagerAdapter.java @@ -6,6 +6,7 @@ import android.content.DialogInterface; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.ViewGroup; +import com.alertdialogpro.AlertDialogPro; import com.eyecreate.miceandmystics.miceandmystics.MiceAndMysticsApplication; import com.eyecreate.miceandmystics.miceandmystics.R; import com.eyecreate.miceandmystics.miceandmystics.model.*; @@ -45,7 +46,7 @@ public class PlayerManagerAdapter extends RecyclerView.Adapter final RealmResults playerCharacters = MiceAndMysticsApplication.getRealmInstance().where(com.eyecreate.miceandmystics.miceandmystics.model.Character.class) .equalTo("controllingPlayer.playerName", playerName).findAll(); if(playerCharacters.size()>0) { - AlertDialog removeDialog = new AlertDialog.Builder(ctx,R.style.dialogTheme) + AlertDialog removeDialog = new AlertDialogPro.Builder(ctx,R.style.dialogTheme) .setMessage("Removing player "+playerName+" must first remove all characters owned by player. Do you want to continue still?") .setNegativeButton("No", new DialogInterface.OnClickListener() { @Override @@ -68,7 +69,7 @@ public class PlayerManagerAdapter extends RecyclerView.Adapter .create(); removeDialog.show(); } else { - AlertDialog removeDialog = new AlertDialog.Builder(ctx, R.style.dialogTheme) + AlertDialog removeDialog = new AlertDialogPro.Builder(ctx, R.style.dialogTheme) .setMessage("Do you want to remove player: " + playerName + "?") .setNegativeButton("No", new DialogInterface.OnClickListener() { @Override diff --git a/MiceAndMysticsTracker/src/main/java/com/eyecreate/miceandmystics/miceandmystics/model/Enums/Abilities.java b/MiceAndMysticsTracker/src/main/java/com/eyecreate/miceandmystics/miceandmystics/model/Enums/Abilities.java index 5440a86b433ba1187dd4db78af489383cc77a369..7b9859cf93c6892c9fe06e746215827feb93064d 100644 --- a/MiceAndMysticsTracker/src/main/java/com/eyecreate/miceandmystics/miceandmystics/model/Enums/Abilities.java +++ b/MiceAndMysticsTracker/src/main/java/com/eyecreate/miceandmystics/miceandmystics/model/Enums/Abilities.java @@ -1,6 +1,8 @@ package com.eyecreate.miceandmystics.miceandmystics.model.Enums; +import java.util.ArrayList; import java.util.Arrays; +import java.util.List; public enum Abilities { @@ -52,6 +54,16 @@ public enum Abilities { return false; } + public static Abilities[] getMatchingCharacterAbilities(CharacterType[] matchingTypes) { + List matchingList = new ArrayList(); + for(Abilities ability:Abilities.values()) { + if(ability.doesApply(matchingTypes)) { + matchingList.add(ability); + } + } + return matchingList.toArray(new Abilities[matchingList.size()]); + } + public String displayName() { return displayName; } @Override public String toString() { return displayName; } 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 68930bf7dcce35ed836a876162b42fa1f0d18a6b..9c56aa3005dee1da864356b7b052fedf25a10a62 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 @@ -2,10 +2,13 @@ package com.eyecreate.miceandmystics.miceandmystics.viewholders; import android.app.AlertDialog; import android.content.DialogInterface; +import android.content.Intent; import android.support.v7.widget.RecyclerView; import android.view.View; import android.widget.ImageView; import android.widget.TextView; +import com.alertdialogpro.AlertDialogPro; +import com.eyecreate.miceandmystics.miceandmystics.CharacterDetailsActivity; import com.eyecreate.miceandmystics.miceandmystics.R; import com.eyecreate.miceandmystics.miceandmystics.adapters.CampaignDetailsAdapter; import com.eyecreate.miceandmystics.miceandmystics.model.Character; @@ -37,12 +40,14 @@ public class CampaignDetailsViewHolder extends RecyclerView.ViewHolder implement @Override public void onClick(View view) { - //TODO:implement character edit screen. + Intent editCharacter = new Intent(view.getContext(), CharacterDetailsActivity.class); + editCharacter.putExtra("characterId",boundCharacter.getUuid()); + view.getContext().startActivity(editCharacter); } @Override public boolean onLongClick(View view) { - AlertDialog removeDialog = new AlertDialog.Builder(view.getContext(),R.style.dialogTheme) + AlertDialog removeDialog = new AlertDialogPro.Builder(view.getContext(),R.style.dialogTheme) .setMessage("Do you want to remove character: "+characterName.getText()+"?") .setNegativeButton("No", new DialogInterface.OnClickListener() { @Override diff --git a/MiceAndMysticsTracker/src/main/java/com/eyecreate/miceandmystics/miceandmystics/viewholders/CampaignViewHolder.java b/MiceAndMysticsTracker/src/main/java/com/eyecreate/miceandmystics/miceandmystics/viewholders/CampaignViewHolder.java index 343f55fafea27461cc4cfdf72cfc223124805a10..b60085bf81d56344ed5f6b5941b1c38a0800a753 100644 --- a/MiceAndMysticsTracker/src/main/java/com/eyecreate/miceandmystics/miceandmystics/viewholders/CampaignViewHolder.java +++ b/MiceAndMysticsTracker/src/main/java/com/eyecreate/miceandmystics/miceandmystics/viewholders/CampaignViewHolder.java @@ -9,6 +9,7 @@ import android.support.v7.widget.RecyclerView; import android.view.MotionEvent; import android.view.View; import android.widget.TextView; +import com.alertdialogpro.AlertDialogPro; import com.echo.holographlibrary.PieGraph; import com.echo.holographlibrary.PieSlice; import com.eyecreate.miceandmystics.miceandmystics.CampaignDetailsActivity; @@ -74,7 +75,7 @@ public class CampaignViewHolder extends RecyclerView.ViewHolder implements View. @Override public boolean onLongClick(View view) { - AlertDialog removeDialog = new AlertDialog.Builder(view.getContext(),R.style.dialogTheme) + AlertDialog removeDialog = new AlertDialogPro.Builder(view.getContext(),R.style.dialogTheme) .setMessage("Do you want to remove campaign: "+campaignName.getText()+"?") .setNegativeButton("No", new DialogInterface.OnClickListener() { @Override diff --git a/MiceAndMysticsTracker/src/main/java/com/eyecreate/miceandmystics/miceandmystics/viewholders/CharacterAbilityHeaderViewHolder.java b/MiceAndMysticsTracker/src/main/java/com/eyecreate/miceandmystics/miceandmystics/viewholders/CharacterAbilityHeaderViewHolder.java new file mode 100644 index 0000000000000000000000000000000000000000..7b5dbaafeaf66fd2a2d04a4ca4b40f4c947620f6 --- /dev/null +++ b/MiceAndMysticsTracker/src/main/java/com/eyecreate/miceandmystics/miceandmystics/viewholders/CharacterAbilityHeaderViewHolder.java @@ -0,0 +1,21 @@ +package com.eyecreate.miceandmystics.miceandmystics.viewholders; + +import android.support.v7.widget.RecyclerView; +import android.view.View; +import android.widget.TextView; +import com.eyecreate.miceandmystics.miceandmystics.R; +import com.eyecreate.miceandmystics.miceandmystics.model.Character; + +public class CharacterAbilityHeaderViewHolder extends RecyclerView.ViewHolder { + + TextView characterName; + + public CharacterAbilityHeaderViewHolder(View itemView) { + super(itemView); + characterName = (TextView) itemView.findViewById(R.id.character_name); + } + + public void bindHolder(Character currentCharacter) { + characterName.setText(currentCharacter.getCharacterName()); + } +} diff --git a/MiceAndMysticsTracker/src/main/java/com/eyecreate/miceandmystics/miceandmystics/viewholders/CharacterAbilityViewHolder.java b/MiceAndMysticsTracker/src/main/java/com/eyecreate/miceandmystics/miceandmystics/viewholders/CharacterAbilityViewHolder.java new file mode 100644 index 0000000000000000000000000000000000000000..8a963acf77a155c419408fe15035692003e6962f --- /dev/null +++ b/MiceAndMysticsTracker/src/main/java/com/eyecreate/miceandmystics/miceandmystics/viewholders/CharacterAbilityViewHolder.java @@ -0,0 +1,51 @@ +package com.eyecreate.miceandmystics.miceandmystics.viewholders; + +import android.app.AlertDialog; +import android.content.DialogInterface; +import android.support.v7.widget.RecyclerView; +import android.view.View; +import android.widget.TextView; +import com.alertdialogpro.AlertDialogPro; +import com.eyecreate.miceandmystics.miceandmystics.R; +import com.eyecreate.miceandmystics.miceandmystics.adapters.CharacterDetailsAdapter; +import com.eyecreate.miceandmystics.miceandmystics.model.Ability; + +public class CharacterAbilityViewHolder extends RecyclerView.ViewHolder implements View.OnLongClickListener { + + CharacterDetailsAdapter adapter; + TextView abilityName; + String uuid; + + public CharacterAbilityViewHolder(View itemView,CharacterDetailsAdapter adapter) { + super(itemView); + this.adapter = adapter; + abilityName = (TextView) itemView.findViewById(R.id.ability_name); + itemView.setOnLongClickListener(this); + } + + public void bindHolder(Ability ability) { + abilityName.setText(ability.getAbilityName()); + uuid = ability.getUuid(); + } + + @Override + public boolean onLongClick(View view) { + AlertDialog removeDialog = new AlertDialogPro.Builder(view.getContext(),R.style.dialogTheme) + .setMessage("Do you want to remove ability: "+abilityName.getText()+"?") + .setNegativeButton("No", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + + } + }) + .setPositiveButton("Yes", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + adapter.removeAbility(uuid); + } + }) + .create(); + removeDialog.show(); + return true; + } +} diff --git a/MiceAndMysticsTracker/src/main/java/com/eyecreate/miceandmystics/miceandmystics/viewholders/CharacterItemViewHolder.java b/MiceAndMysticsTracker/src/main/java/com/eyecreate/miceandmystics/miceandmystics/viewholders/CharacterItemViewHolder.java new file mode 100644 index 0000000000000000000000000000000000000000..4be28cc67a96c65d71bdcfd71fcf2366429b5e9d --- /dev/null +++ b/MiceAndMysticsTracker/src/main/java/com/eyecreate/miceandmystics/miceandmystics/viewholders/CharacterItemViewHolder.java @@ -0,0 +1,51 @@ +package com.eyecreate.miceandmystics.miceandmystics.viewholders; + +import android.app.AlertDialog; +import android.content.DialogInterface; +import android.support.v7.widget.RecyclerView; +import android.view.View; +import android.widget.TextView; +import com.alertdialogpro.AlertDialogPro; +import com.eyecreate.miceandmystics.miceandmystics.R; +import com.eyecreate.miceandmystics.miceandmystics.adapters.CharacterDetailsAdapter; +import com.eyecreate.miceandmystics.miceandmystics.model.BackpackItem; + +public class CharacterItemViewHolder extends RecyclerView.ViewHolder implements View.OnLongClickListener { + + CharacterDetailsAdapter adapter; + TextView itemName; + String uuid; + + public CharacterItemViewHolder(View itemView,CharacterDetailsAdapter adapter) { + super(itemView); + this.adapter = adapter; + itemName = (TextView) itemView.findViewById(R.id.item_name); + itemView.setOnLongClickListener(this); + } + + public void bindModel(BackpackItem item) { + itemName.setText(item.getItemName()); + uuid = item.getUuid(); + } + + @Override + public boolean onLongClick(View view) { + AlertDialog removeDialog = new AlertDialogPro.Builder(view.getContext(),R.style.dialogTheme) + .setMessage("Do you want to remove item: "+itemName.getText()+"?") + .setNegativeButton("No", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + + } + }) + .setPositiveButton("Yes", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + adapter.removeItem(uuid); + } + }) + .create(); + removeDialog.show(); + return true; + } +} diff --git a/MiceAndMysticsTracker/src/main/java/com/eyecreate/miceandmystics/miceandmystics/viewholders/CharacterItemsHeaderViewHolder.java b/MiceAndMysticsTracker/src/main/java/com/eyecreate/miceandmystics/miceandmystics/viewholders/CharacterItemsHeaderViewHolder.java new file mode 100644 index 0000000000000000000000000000000000000000..e0a8a7c3f9fb1c954c65ee6a276db21072a650e5 --- /dev/null +++ b/MiceAndMysticsTracker/src/main/java/com/eyecreate/miceandmystics/miceandmystics/viewholders/CharacterItemsHeaderViewHolder.java @@ -0,0 +1,10 @@ +package com.eyecreate.miceandmystics.miceandmystics.viewholders; + +import android.support.v7.widget.RecyclerView; +import android.view.View; + +public class CharacterItemsHeaderViewHolder extends RecyclerView.ViewHolder { + public CharacterItemsHeaderViewHolder(View itemView) { + super(itemView); + } +} diff --git a/MiceAndMysticsTracker/src/main/java/com/eyecreate/miceandmystics/miceandmystics/viewholders/PartyAchievementViewHolder.java b/MiceAndMysticsTracker/src/main/java/com/eyecreate/miceandmystics/miceandmystics/viewholders/PartyAchievementViewHolder.java index 7eb599dd41bdf6cb41936cfcfbaebc545596b06e..40cd994a8a5883562bc4ed41fd33a4a7c8ebe6c4 100644 --- a/MiceAndMysticsTracker/src/main/java/com/eyecreate/miceandmystics/miceandmystics/viewholders/PartyAchievementViewHolder.java +++ b/MiceAndMysticsTracker/src/main/java/com/eyecreate/miceandmystics/miceandmystics/viewholders/PartyAchievementViewHolder.java @@ -6,6 +6,7 @@ import android.support.v7.widget.RecyclerView; import android.view.View; import android.widget.ImageView; import android.widget.TextView; +import com.alertdialogpro.AlertDialogPro; import com.eyecreate.miceandmystics.miceandmystics.R; import com.eyecreate.miceandmystics.miceandmystics.adapters.CampaignDetailsAdapter; import com.eyecreate.miceandmystics.miceandmystics.model.Achievement; @@ -33,7 +34,7 @@ public class PartyAchievementViewHolder extends RecyclerView.ViewHolder implemen @Override public boolean onLongClick(View view) { - AlertDialog removeDialog = new AlertDialog.Builder(view.getContext(),R.style.dialogTheme) + AlertDialog removeDialog = new AlertDialogPro.Builder(view.getContext(),R.style.dialogTheme) .setMessage("Do you want to remove achievement: "+achievementName.getText()+"?") .setNegativeButton("No", new DialogInterface.OnClickListener() { @Override diff --git a/MiceAndMysticsTracker/src/main/res/layout/dialog_new_ability.xml b/MiceAndMysticsTracker/src/main/res/layout/dialog_new_ability.xml new file mode 100644 index 0000000000000000000000000000000000000000..e7c8204fb8ff66d88ac8d3b82b648118b108e559 --- /dev/null +++ b/MiceAndMysticsTracker/src/main/res/layout/dialog_new_ability.xml @@ -0,0 +1,11 @@ + + + + \ No newline at end of file diff --git a/MiceAndMysticsTracker/src/main/res/layout/dialog_new_item.xml b/MiceAndMysticsTracker/src/main/res/layout/dialog_new_item.xml new file mode 100644 index 0000000000000000000000000000000000000000..52b440ee9b20606c539b82e53a22f0a2961fddcd --- /dev/null +++ b/MiceAndMysticsTracker/src/main/res/layout/dialog_new_item.xml @@ -0,0 +1,11 @@ + + + + \ No newline at end of file diff --git a/MiceAndMysticsTracker/src/main/res/layout/item_character_ability.xml b/MiceAndMysticsTracker/src/main/res/layout/item_character_ability.xml new file mode 100644 index 0000000000000000000000000000000000000000..f213d1238d299a5010a60d72707d6704dd0e50ed --- /dev/null +++ b/MiceAndMysticsTracker/src/main/res/layout/item_character_ability.xml @@ -0,0 +1,27 @@ + + + + + + + + \ No newline at end of file diff --git a/MiceAndMysticsTracker/src/main/res/layout/item_character_ability_header.xml b/MiceAndMysticsTracker/src/main/res/layout/item_character_ability_header.xml new file mode 100644 index 0000000000000000000000000000000000000000..7b030948ec528d6adb1b9be7e3ce1a40b37902bf --- /dev/null +++ b/MiceAndMysticsTracker/src/main/res/layout/item_character_ability_header.xml @@ -0,0 +1,17 @@ + + + + + \ No newline at end of file diff --git a/MiceAndMysticsTracker/src/main/res/layout/item_character_item.xml b/MiceAndMysticsTracker/src/main/res/layout/item_character_item.xml new file mode 100644 index 0000000000000000000000000000000000000000..cb96cf3c42466f604a3733eea4b07ebbb14f30d5 --- /dev/null +++ b/MiceAndMysticsTracker/src/main/res/layout/item_character_item.xml @@ -0,0 +1,27 @@ + + + + + + + + \ No newline at end of file diff --git a/MiceAndMysticsTracker/src/main/res/layout/item_character_items_header.xml b/MiceAndMysticsTracker/src/main/res/layout/item_character_items_header.xml new file mode 100644 index 0000000000000000000000000000000000000000..cb814a01538549f717c44576e7f14f467dc645f2 --- /dev/null +++ b/MiceAndMysticsTracker/src/main/res/layout/item_character_items_header.xml @@ -0,0 +1,12 @@ + + + + \ No newline at end of file diff --git a/MiceAndMysticsTracker/src/main/res/menu/menu_character_details.xml b/MiceAndMysticsTracker/src/main/res/menu/menu_character_details.xml new file mode 100644 index 0000000000000000000000000000000000000000..0b779d2d0f51dd0de3e26fd0fd392fa757a6598c --- /dev/null +++ b/MiceAndMysticsTracker/src/main/res/menu/menu_character_details.xml @@ -0,0 +1,10 @@ + + + + + \ No newline at end of file diff --git a/MiceAndMysticsTracker/src/main/res/values/ids.xml b/MiceAndMysticsTracker/src/main/res/values/ids.xml index d11c6dfdb9012346613d5622db3db87f5d451938..ff570006966cfbae168544f853dd212e11c7f76a 100644 --- a/MiceAndMysticsTracker/src/main/res/values/ids.xml +++ b/MiceAndMysticsTracker/src/main/res/values/ids.xml @@ -4,4 +4,8 @@ + + + + \ No newline at end of file diff --git a/MiceAndMysticsTracker/src/main/res/values/styles.xml b/MiceAndMysticsTracker/src/main/res/values/styles.xml index 83158003631d188869fa7d797bca874615ff587f..ff2591ae3998b5f08a1044f40e4cf870483d47b2 100644 --- a/MiceAndMysticsTracker/src/main/res/values/styles.xml +++ b/MiceAndMysticsTracker/src/main/res/values/styles.xml @@ -8,13 +8,14 @@ @color/parchment_yellow @color/parchment_yellow @style/popupMenu + @style/Theme.AlertDialogPro.Material.Light -