diff --git a/MiceAndMysticsTracker/MiceAndMysticsTracker.iml b/MiceAndMysticsTracker/MiceAndMysticsTracker.iml index cd28d7ff4bb7b641d6fb23df2ce3262b89edd419..37050bb998005f1189985d38f5ec2b7168170787 100644 --- a/MiceAndMysticsTracker/MiceAndMysticsTracker.iml +++ b/MiceAndMysticsTracker/MiceAndMysticsTracker.iml @@ -86,10 +86,12 @@ + + \ No newline at end of file diff --git a/MiceAndMysticsTracker/build.gradle b/MiceAndMysticsTracker/build.gradle index 28fe89a63d01a6160524df29a037e497752f2c1f..5a9af1a6094384074d415eaae49a855b3a542ac0 100644 --- a/MiceAndMysticsTracker/build.gradle +++ b/MiceAndMysticsTracker/build.gradle @@ -42,4 +42,6 @@ dependencies { compile 'io.realm:realm-android:0.80.1' compile 'uk.co.chrisjenx:calligraphy:2.0.2' 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' } diff --git a/MiceAndMysticsTracker/src/main/assets/ArchitectsDaughter.ttf b/MiceAndMysticsTracker/src/main/assets/ArchitectsDaughter.ttf new file mode 100644 index 0000000000000000000000000000000000000000..f4469b701358ce1f144ea7084db91bdb10bc0eb7 Binary files /dev/null and b/MiceAndMysticsTracker/src/main/assets/ArchitectsDaughter.ttf differ 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 b983be19714d6eb845289072bf51ddbc03479a37..b62ed86ece6e38afb5ff4ff1ce60ad4abd252eb7 100644 --- a/MiceAndMysticsTracker/src/main/java/com/eyecreate/miceandmystics/miceandmystics/CampaignActivity.java +++ b/MiceAndMysticsTracker/src/main/java/com/eyecreate/miceandmystics/miceandmystics/CampaignActivity.java @@ -1,26 +1,27 @@ package com.eyecreate.miceandmystics.miceandmystics; -import android.content.Context; -import android.support.v7.app.ActionBarActivity; +import android.app.AlertDialog; +import android.content.DialogInterface; +import android.graphics.Typeface; import android.os.Bundle; +import android.support.v7.widget.LinearLayoutManager; +import android.view.ContextThemeWrapper; import android.view.Menu; import android.view.MenuItem; -import uk.co.chrisjenx.calligraphy.CalligraphyContextWrapper; +import android.widget.EditText; +import com.eyecreate.miceandmystics.miceandmystics.adapters.CampaignAdapter; -public class CampaignActivity extends ActionBarActivity { +public class CampaignActivity extends RecyclerViewActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setContentView(R.layout.activity_campaign); getSupportActionBar().setDisplayShowHomeEnabled(true); getSupportActionBar().setIcon(R.mipmap.ic_launcher); - } - - @Override - protected void attachBaseContext(Context newBase) { - super.attachBaseContext(CalligraphyContextWrapper.wrap(newBase)); + getSupportActionBar().setDisplayShowTitleEnabled(false); + setLayoutManager(new LinearLayoutManager(this)); + setAdapter(new CampaignAdapter()); } @Override @@ -39,6 +40,19 @@ public class CampaignActivity extends ActionBarActivity { //noinspection SimplifiableIfStatement if (id == R.id.action_add_campaign) { + final EditText newName = new EditText(new ContextThemeWrapper(this,R.style.editTextDialogTheme)); + newName.setTypeface(Typeface.createFromAsset(getAssets(),"ArchitectsDaughter.ttf")); + AlertDialog addDialog = new AlertDialog.Builder(this,R.style.dialogTheme) + .setMessage("Please give your new campaign a unique name:") + .setView(newName) + .setPositiveButton("Ok", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + ((CampaignAdapter) getAdapter()).addItem(newName.getText().toString()); + } + }) + .create(); + addDialog.show(); return true; } diff --git a/MiceAndMysticsTracker/src/main/java/com/eyecreate/miceandmystics/miceandmystics/MiceAndMysticsApplication.java b/MiceAndMysticsTracker/src/main/java/com/eyecreate/miceandmystics/miceandmystics/MiceAndMysticsApplication.java index b243aa6e21918d8817ee414660175f9748cbffcb..6cfa1c240bcba178269f6647a9312d9bce838ff7 100644 --- a/MiceAndMysticsTracker/src/main/java/com/eyecreate/miceandmystics/miceandmystics/MiceAndMysticsApplication.java +++ b/MiceAndMysticsTracker/src/main/java/com/eyecreate/miceandmystics/miceandmystics/MiceAndMysticsApplication.java @@ -1,17 +1,31 @@ package com.eyecreate.miceandmystics.miceandmystics; import android.app.Application; +import io.realm.Realm; import uk.co.chrisjenx.calligraphy.CalligraphyConfig; public class MiceAndMysticsApplication extends Application { + + private static MiceAndMysticsApplication singletonApplication; + private static Realm singletonRealm; + @Override public void onCreate() { super.onCreate(); - //TODO:init realm here + singletonApplication = this; + singletonRealm = Realm.getInstance(this); CalligraphyConfig.initDefault(new CalligraphyConfig.Builder() - .setDefaultFontPath("Eadui.ttf") + .setDefaultFontPath("ArchitectsDaughter.ttf") .setFontAttrId(R.attr.fontPath) .build() ); } + + public static MiceAndMysticsApplication getInstance() { + return singletonApplication; + } + + public static Realm getRealmInstance() { + return singletonRealm; + } } diff --git a/MiceAndMysticsTracker/src/main/java/com/eyecreate/miceandmystics/miceandmystics/RecyclerViewActivity.java b/MiceAndMysticsTracker/src/main/java/com/eyecreate/miceandmystics/miceandmystics/RecyclerViewActivity.java new file mode 100644 index 0000000000000000000000000000000000000000..6f179163d173791a82c249bddcee03cc71cc752e --- /dev/null +++ b/MiceAndMysticsTracker/src/main/java/com/eyecreate/miceandmystics/miceandmystics/RecyclerViewActivity.java @@ -0,0 +1,50 @@ +/*** + Copyright (c) 2008-2015 CommonsWare, LLC + Licensed under the Apache License, Version 2.0 (the "License"); you may not + use this file except in compliance with the License. You may obtain a copy + of the License at http://www.apache.org/licenses/LICENSE-2.0. Unless required + by applicable law or agreed to in writing, software distributed under the + License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS + OF ANY KIND, either express or implied. See the License for the specific + language governing permissions and limitations under the License. + + From _The Busy Coder's Guide to Android Development_ + http://commonsware.com/Android + */ +package com.eyecreate.miceandmystics.miceandmystics; + +import android.content.Context; +import android.support.v7.app.ActionBarActivity; +import android.support.v7.widget.RecyclerView; +import uk.co.chrisjenx.calligraphy.CalligraphyContextWrapper; + +public class RecyclerViewActivity extends ActionBarActivity { + private RecyclerView rv=null; + + public void setAdapter(RecyclerView.Adapter adapter) { + getRecyclerView().setAdapter(adapter); + } + + @Override + protected void attachBaseContext(Context newBase) { + super.attachBaseContext(CalligraphyContextWrapper.wrap(newBase)); + } + + public RecyclerView.Adapter getAdapter() { + return(getRecyclerView().getAdapter()); + } + + public void setLayoutManager(RecyclerView.LayoutManager mgr) { + getRecyclerView().setLayoutManager(mgr); + } + + public RecyclerView getRecyclerView() { + if (rv==null) { + rv=new RecyclerView(this); + rv.setHasFixedSize(true); + setContentView(rv); + } + + return(rv); + } +} 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 new file mode 100644 index 0000000000000000000000000000000000000000..781b3560f92512a2cd77d16d653e01a193fc3a5b --- /dev/null +++ b/MiceAndMysticsTracker/src/main/java/com/eyecreate/miceandmystics/miceandmystics/adapters/CampaignAdapter.java @@ -0,0 +1,60 @@ +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.viewholders.Campaign; +import io.realm.RealmResults; + +public class CampaignAdapter extends RecyclerView.Adapter { + + LayoutInflater inflater; + RealmResults campaigns; + + public CampaignAdapter() { + campaigns = MiceAndMysticsApplication.getRealmInstance().where(com.eyecreate.miceandmystics.miceandmystics.model.Campaign.class).findAll(); + } + + @Override + public Campaign onCreateViewHolder(ViewGroup parent, int viewType) { + if(inflater == null) inflater = (LayoutInflater)parent.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); + return new Campaign(inflater.inflate(R.layout.item_campaign,parent,false),this); + } + + @Override + public void onBindViewHolder(Campaign holder, int position) { + holder.bindModel(campaigns.get(position)); + } + + public void fullRefresh() { + notifyDataSetChanged(); + } + + public void addItem(String campaignName) { + MiceAndMysticsApplication.getRealmInstance().beginTransaction(); + com.eyecreate.miceandmystics.miceandmystics.model.Campaign campaign = new com.eyecreate.miceandmystics.miceandmystics.model.Campaign(); + campaign.setCampaignName(campaignName); + MiceAndMysticsApplication.getRealmInstance().copyToRealm(campaign); + MiceAndMysticsApplication.getRealmInstance().commitTransaction(); + fullRefresh(); + } + + public void removeItem(String campaignName) { + com.eyecreate.miceandmystics.miceandmystics.model.Campaign campaign = MiceAndMysticsApplication.getRealmInstance() + .where(com.eyecreate.miceandmystics.miceandmystics.model.Campaign.class) + .equalTo("campaignName",campaignName) + .findFirst(); + MiceAndMysticsApplication.getRealmInstance().beginTransaction(); + campaign.removeFromRealm(); + MiceAndMysticsApplication.getRealmInstance().commitTransaction(); + fullRefresh(); + } + + @Override + public int getItemCount() { + return campaigns.size(); + } +} diff --git a/MiceAndMysticsTracker/src/main/java/com/eyecreate/miceandmystics/miceandmystics/model/Ability.java b/MiceAndMysticsTracker/src/main/java/com/eyecreate/miceandmystics/miceandmystics/model/Ability.java index 9b7022308a9b7db097acd7b3c0126512924c002d..90ec8319439169488808fda19d9f5f3d860150f0 100644 --- a/MiceAndMysticsTracker/src/main/java/com/eyecreate/miceandmystics/miceandmystics/model/Ability.java +++ b/MiceAndMysticsTracker/src/main/java/com/eyecreate/miceandmystics/miceandmystics/model/Ability.java @@ -7,6 +7,10 @@ public class Ability extends RealmObject { @PrimaryKey private String abilityName; + public Ability() {} + + public Ability(String abilityName) {setAbilityName(abilityName);} + public String getAbilityName() { return abilityName; } diff --git a/MiceAndMysticsTracker/src/main/java/com/eyecreate/miceandmystics/miceandmystics/model/Achievement.java b/MiceAndMysticsTracker/src/main/java/com/eyecreate/miceandmystics/miceandmystics/model/Achievement.java index 483107d96de047f92fe8b47a98143e105f7dd6d6..d32945a84fcb8e0b71e18bae361be607c0c45d10 100644 --- a/MiceAndMysticsTracker/src/main/java/com/eyecreate/miceandmystics/miceandmystics/model/Achievement.java +++ b/MiceAndMysticsTracker/src/main/java/com/eyecreate/miceandmystics/miceandmystics/model/Achievement.java @@ -7,6 +7,10 @@ public class Achievement extends RealmObject { @PrimaryKey private String achievementName; + public Achievement() {} + + public Achievement(String achievementName) {setAchievementName(achievementName);} + public String getAchievementName() { return achievementName; } diff --git a/MiceAndMysticsTracker/src/main/java/com/eyecreate/miceandmystics/miceandmystics/model/BackpackItem.java b/MiceAndMysticsTracker/src/main/java/com/eyecreate/miceandmystics/miceandmystics/model/BackpackItem.java index f0fa2f079c7877932f6171f6144d7564ce64a8ef..dde64e3a3297844c5506340924247e9cce0827ea 100644 --- a/MiceAndMysticsTracker/src/main/java/com/eyecreate/miceandmystics/miceandmystics/model/BackpackItem.java +++ b/MiceAndMysticsTracker/src/main/java/com/eyecreate/miceandmystics/miceandmystics/model/BackpackItem.java @@ -8,6 +8,10 @@ public class BackpackItem extends RealmObject { @PrimaryKey private String itemName; + public BackpackItem() {} + + public BackpackItem(String itemName) {setItemName(itemName);} + public String getItemName() { return itemName; } diff --git a/MiceAndMysticsTracker/src/main/java/com/eyecreate/miceandmystics/miceandmystics/model/Player.java b/MiceAndMysticsTracker/src/main/java/com/eyecreate/miceandmystics/miceandmystics/model/Player.java index b26a2c2f17358f2cd9cc2f34916550eef6ace40c..487ce36ad3d94f33245f6ed39551ff10d4a7cda7 100644 --- a/MiceAndMysticsTracker/src/main/java/com/eyecreate/miceandmystics/miceandmystics/model/Player.java +++ b/MiceAndMysticsTracker/src/main/java/com/eyecreate/miceandmystics/miceandmystics/model/Player.java @@ -7,6 +7,10 @@ public class Player extends RealmObject { @PrimaryKey private String playerName; + public Player() {} + + public Player(String playerName) {setPlayerName(playerName);} + public String getPlayerName() { return playerName; } diff --git a/MiceAndMysticsTracker/src/main/java/com/eyecreate/miceandmystics/miceandmystics/viewholders/Campaign.java b/MiceAndMysticsTracker/src/main/java/com/eyecreate/miceandmystics/miceandmystics/viewholders/Campaign.java new file mode 100644 index 0000000000000000000000000000000000000000..a84ef5e6bc68d9a83f516cf8ef93a2950e9f6c76 --- /dev/null +++ b/MiceAndMysticsTracker/src/main/java/com/eyecreate/miceandmystics/miceandmystics/viewholders/Campaign.java @@ -0,0 +1,73 @@ +package com.eyecreate.miceandmystics.miceandmystics.viewholders; + +import android.annotation.TargetApi; +import android.app.AlertDialog; +import android.content.DialogInterface; +import android.os.Build; +import android.support.v7.widget.RecyclerView; +import android.view.MotionEvent; +import android.view.View; +import android.widget.TextView; +import com.echo.holographlibrary.PieGraph; +import com.eyecreate.miceandmystics.miceandmystics.R; +import com.eyecreate.miceandmystics.miceandmystics.adapters.CampaignAdapter; + +public class Campaign extends RecyclerView.ViewHolder implements View.OnClickListener,View.OnLongClickListener { + + CampaignAdapter adapter; + TextView campaignName; + PieGraph characterGraph; + + public Campaign(View itemView,CampaignAdapter adapter) { + super(itemView); + this.adapter = adapter; + campaignName = (TextView) itemView.findViewById(R.id.campagin_name); + characterGraph = (PieGraph) itemView.findViewById(R.id.campaign_characters_graph); + itemView.setOnClickListener(this); + itemView.setOnLongClickListener(this); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + itemView.setOnTouchListener(new View.OnTouchListener() { + @TargetApi(Build.VERSION_CODES.LOLLIPOP) + @Override + public boolean onTouch(View v, MotionEvent event) { + v + .findViewById(R.id.campaign_content) + .getBackground() + .setHotspot(event.getX(), event.getY()); + + return(false); + } + }); + } + } + + @Override + public void onClick(View view) { + //TODO:implement next screen + } + + public void bindModel(com.eyecreate.miceandmystics.miceandmystics.model.Campaign campaign) { + campaignName.setText(campaign.getCampaignName()); + } + + @Override + public boolean onLongClick(View view) { + AlertDialog removeDialog = new AlertDialog.Builder(view.getContext(),R.style.dialogTheme) + .setMessage("Do you want to remove campaign: "+campaignName.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((String) campaignName.getText()); + } + }) + .create(); + removeDialog.show(); + return true; + } +} diff --git a/MiceAndMysticsTracker/src/main/res/layout/activity_campaign.xml b/MiceAndMysticsTracker/src/main/res/layout/activity_campaign.xml deleted file mode 100644 index fb6f93b794da56db28bd54b2fe05e3db0ba50a0d..0000000000000000000000000000000000000000 --- a/MiceAndMysticsTracker/src/main/res/layout/activity_campaign.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - diff --git a/MiceAndMysticsTracker/src/main/res/layout/item_campaign.xml b/MiceAndMysticsTracker/src/main/res/layout/item_campaign.xml new file mode 100644 index 0000000000000000000000000000000000000000..122698114de4bef8429c6e866c4f9474c674d30d --- /dev/null +++ b/MiceAndMysticsTracker/src/main/res/layout/item_campaign.xml @@ -0,0 +1,29 @@ + + + + + + + + + \ 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 63d8da64f1c3e5094257897672510fb54339e8cd..b0fd55aca5ce4c9e81b571fdada89b222f7549f4 100644 --- a/MiceAndMysticsTracker/src/main/res/values/styles.xml +++ b/MiceAndMysticsTracker/src/main/res/values/styles.xml @@ -1,7 +1,7 @@ - + + + +