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 @@
-
+
+
+
+