diff --git a/Habitica/res/menu/menu_main_activity_new.xml b/Habitica/res/menu/menu_main_activity_new.xml index f280e54ec..d1b7be2a1 100644 --- a/Habitica/res/menu/menu_main_activity_new.xml +++ b/Habitica/res/menu/menu_main_activity_new.xml @@ -8,4 +8,12 @@ android:icon="@drawable/ic_action_filter_list" android:title="filter" app:showAsAction="ifRoom" /> + + + diff --git a/Habitica/src/com/habitrpg/android/habitica/APIHelper.java b/Habitica/src/com/habitrpg/android/habitica/APIHelper.java index 24ae54ee5..6711702a3 100644 --- a/Habitica/src/com/habitrpg/android/habitica/APIHelper.java +++ b/Habitica/src/com/habitrpg/android/habitica/APIHelper.java @@ -245,6 +245,9 @@ public class APIHelper implements ErrorHandler, Profiler { } + public void toggleSleep(Callback cb){ + apiService.sleep(cb); + } /* private class ATaskGetUser extends AsyncTask { diff --git a/Habitica/src/com/habitrpg/android/habitica/MainActivity.java b/Habitica/src/com/habitrpg/android/habitica/MainActivity.java index 1c8ac2f9c..12a590d0d 100644 --- a/Habitica/src/com/habitrpg/android/habitica/MainActivity.java +++ b/Habitica/src/com/habitrpg/android/habitica/MainActivity.java @@ -250,7 +250,7 @@ public class MainActivity extends ActionBarActivity implements OnTaskCreationLis }); getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setHomeButtonEnabled(true); - //HostConfig config = PrefsActivity.fromContext(this); + this.mAPIHelper = new APIHelper(this, hostConfig); this.onPreResult(); mAPIHelper.retrieveUser(new HabitRPGUserCallback(this)); @@ -430,8 +430,6 @@ public class MainActivity extends ActionBarActivity implements OnTaskCreationLis public void onUserReceived(HabitRPGUser user) { this.user = user; - MainActivityNew.User = user; - this.notifyDataChanged(); afterResults(); // checkTimeZone(habitRPGUser.getTimeZoneOffset()); diff --git a/Habitica/src/com/habitrpg/android/habitica/MainActivityNew.java b/Habitica/src/com/habitrpg/android/habitica/MainActivityNew.java index 87dc16858..48846dc14 100644 --- a/Habitica/src/com/habitrpg/android/habitica/MainActivityNew.java +++ b/Habitica/src/com/habitrpg/android/habitica/MainActivityNew.java @@ -21,7 +21,9 @@ import android.widget.AdapterView; import android.widget.Toast; import com.github.florent37.materialviewpager.MaterialViewPager; +import com.habitrpg.android.habitica.callbacks.HabitRPGUserCallback; import com.habitrpg.android.habitica.databinding.SidebarHeaderBinding; +import com.habitrpg.android.habitica.prefs.PrefsActivity; import com.habitrpg.android.habitica.ui.AvatarWithBarsViewModel; import com.habitrpg.android.habitica.ui.EditTextDrawer; import com.habitrpg.android.habitica.ui.adapter.HabitItemRecyclerViewAdapter; @@ -46,8 +48,12 @@ import java.util.Random; import butterknife.ButterKnife; import butterknife.InjectView; +import retrofit.Callback; +import retrofit.RetrofitError; +import retrofit.client.Response; -public class MainActivityNew extends InstabugAppCompatActivity { +public class MainActivityNew extends InstabugAppCompatActivity + implements HabitRPGUserCallback.OnUserReceived, Callback { static final int ABOUT = 12; //region View Elements @@ -64,10 +70,17 @@ public class MainActivityNew extends InstabugAppCompatActivity { List TaskList = new ArrayList(); - // just to test the view - public static HabitRPGUser User = null; + private HostConfig hostConfig; + APIHelper mAPIHelper; - AvatarWithBarsViewModel avatarWithBarsViewModel; + android.support.v4.view.ViewPager viewPager; + + // just to test the view + public HabitRPGUser User = null; + + AvatarWithBarsViewModel avatarInSidebar; + AvatarWithBarsViewModel avatarInHeader; + SidebarHeaderBinding sidebarHeaderBinding; @Override protected void onCreate(Bundle savedInstanceState) { @@ -77,6 +90,8 @@ public class MainActivityNew extends InstabugAppCompatActivity { // Inject Controls ButterKnife.inject(this); + this.hostConfig = PrefsActivity.fromContext(this); + toolbar = materialViewPager.getToolbar(); setSupportActionBar(toolbar); @@ -90,10 +105,8 @@ public class MainActivityNew extends InstabugAppCompatActivity { actionBar.setDisplayUseLogoEnabled(false); actionBar.setHomeButtonEnabled(false); - toolbar.setTitle(User.getProfile().getName() + " - Lv" + User.getStats().getLvl()); toolbar.setPadding(0, getResources().getDimensionPixelSize(R.dimen.tool_bar_top_padding), 0, 0); - } materialViewPager.setBackgroundColor(getResources().getColor(R.color.white)); @@ -101,16 +114,15 @@ public class MainActivityNew extends InstabugAppCompatActivity { View sidebarHeaderView = LayoutInflater.from(this).inflate(R.layout.sidebar_header, null, false); - final SidebarHeaderBinding sidebarHeaderBinding = DataBindingUtil.bind(sidebarHeaderView); + sidebarHeaderBinding = DataBindingUtil.bind(sidebarHeaderView); - avatarWithBarsViewModel = new AvatarWithBarsViewModel(this, sidebarHeaderView.findViewById(R.id.avatar_with_bars)); + avatarInSidebar = new AvatarWithBarsViewModel(this, sidebarHeaderView.findViewById(R.id.avatar_with_bars)); View mPagerRootView = materialViewPager.getRootView(); - View test = mPagerRootView.findViewById(R.id.avatar_with_bars_layout); - - final AvatarWithBarsViewModel avatarVM = new AvatarWithBarsViewModel(this, test); + View avatarHeaderView = mPagerRootView.findViewById(R.id.avatar_with_bars_layout); + avatarInHeader = new AvatarWithBarsViewModel(this, avatarHeaderView); drawer = new DrawerBuilder() .withActivity(this) @@ -118,7 +130,6 @@ public class MainActivityNew extends InstabugAppCompatActivity { .withHeaderDivider(false) .withTranslucentStatusBar(true) .withAnimateDrawerItems(true) - .addDrawerItems( new PrimaryDrawerItem().withName("Tasks"), @@ -164,7 +175,6 @@ public class MainActivityNew extends InstabugAppCompatActivity { final android.content.Context context = getApplicationContext(); - filterDrawer = new DrawerBuilder() .withActivity(this) .withOnDrawerItemLongClickListener(new Drawer.OnDrawerItemLongClickListener() { @@ -181,12 +191,51 @@ public class MainActivityNew extends InstabugAppCompatActivity { .append(drawer); - android.support.v4.view.ViewPager viewPager = materialViewPager.getViewPager(); + viewPager = materialViewPager.getViewPager(); viewPager.setOffscreenPageLimit(6); - android.support.v4.app.FragmentManager fragmentManager = getSupportFragmentManager(); + + viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { + @Override + public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {} + + @Override + public void onPageSelected(int position) { + + Log.d("PageSelected", "P=" + position); + + RecyclerViewFragment fragment = ViewFragmentsDictionary.get(position); + + if (fragment == null || fragment.mRecyclerView == null) + return; + + // fragment.mRecyclerView.smoothScrollToPosition(r.nextInt(fragment.mRecyclerView.getAdapter().getItemCount())); + } + + @Override + public void onPageScrollStateChanged(int state) { + + } + }); + materialViewPager.getViewPager().setCurrentItem(1); + + } + + @Override + protected void onResume() { + super.onResume(); + + this.mAPIHelper = new APIHelper(this, hostConfig); + + mAPIHelper.retrieveUser(new HabitRPGUserCallback(this)); + } + + public void FillTasks() + { + android.support.v4.app.FragmentManager fragmentManager = getSupportFragmentManager(); + viewPager.setAdapter(new FragmentPagerAdapter(fragmentManager) { int oldPosition = -1; @@ -284,65 +333,8 @@ public class MainActivityNew extends InstabugAppCompatActivity { }); - //mViewPager.getViewPager().setOffscreenPageLimit(mViewPager.getViewPager().getAdapter().getCount()); + materialViewPager.getPagerTitleStrip().setViewPager(viewPager); - - viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { - @Override - public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { - - - } - - @Override - public void onPageSelected(int position) { - - Log.d("PageSelected", "P=" + position); - - RecyclerViewFragment fragment = ViewFragmentsDictionary.get(position); - - if (fragment == null || fragment.mRecyclerView == null) - return; - - // fragment.mRecyclerView.smoothScrollToPosition(r.nextInt(fragment.mRecyclerView.getAdapter().getItemCount())); - } - - @Override - public void onPageScrollStateChanged(int state) { - - } - }); - materialViewPager.getViewPager().setCurrentItem(1); - - TaskList.addAll(User.getHabits()); - TaskList.addAll(User.getDailys()); - TaskList.addAll(User.getTodos()); - TaskList.addAll(User.getRewards()); - - - new Handler().postDelayed(new Runnable() { - @Override - public void run() { - - avatarWithBarsViewModel.UpdateData(User); - avatarVM.UpdateData(User); - - android.support.v7.app.ActionBarDrawerToggle actionBarDrawerToggle = drawer.getActionBarDrawerToggle(); - - if (actionBarDrawerToggle != null) { - actionBarDrawerToggle.setDrawerIndicatorEnabled(true); - } - - sidebarHeaderBinding.setUserName(User.getProfile().getName() + " - Lv" + User.getStats().getLvl()); - - Double goldPoints = User.getStats().getGp(); - - sidebarHeaderBinding.setGold("" + goldPoints.intValue()); - sidebarHeaderBinding.setSilver("" + (int) ((goldPoints - goldPoints.intValue()) * 100)); - - FillTagFilterDrawer(); - } - }, 100); } public void FillTagFilterDrawer() { @@ -398,17 +390,84 @@ public class MainActivityNew extends InstabugAppCompatActivity { // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); - //noinspection SimplifiableIfStatement - if (id == R.id.action_settings) { - return true; - } + switch (id) { + case R.id.action_search: + filterDrawer.openDrawer(); - if (id == R.id.action_search) { - filterDrawer.openDrawer(); + return true; + case R.id.action_toggle_sleep: + mAPIHelper.toggleSleep(this); - return true; + User.getPreferences().setSleep(!User.getPreferences().isSleep()); + + updateUserAvatars(); + + return true; } return super.onOptionsItemSelected(item); } + + private void updateUserAvatars() + { + avatarInSidebar.UpdateData(User); + avatarInHeader.UpdateData(User); + } + + @Override + public void onUserReceived(HabitRPGUser user) { + TaskList.clear(); + + User = user; + + if(user == null) + return; + + toolbar.setTitle(User.getProfile().getName() + " - Lv" + User.getStats().getLvl()); + + TaskList.addAll(User.getHabits()); + TaskList.addAll(User.getDailys()); + TaskList.addAll(User.getTodos()); + TaskList.addAll(User.getRewards()); + + new Handler().postDelayed(new Runnable() { + @Override + public void run() { + + FillTasks(); + + updateUserAvatars(); + + android.support.v7.app.ActionBarDrawerToggle actionBarDrawerToggle = drawer.getActionBarDrawerToggle(); + + if (actionBarDrawerToggle != null) { + actionBarDrawerToggle.setDrawerIndicatorEnabled(true); + } + + sidebarHeaderBinding.setUserName(User.getProfile().getName() + " - Lv" + User.getStats().getLvl()); + + Double goldPoints = User.getStats().getGp(); + + sidebarHeaderBinding.setGold("" + goldPoints.intValue()); + sidebarHeaderBinding.setSilver("" + (int) ((goldPoints - goldPoints.intValue()) * 100)); + + FillTagFilterDrawer(); + } + }, 100); + } + + @Override + public void onUserFail() { + + } + + @Override + public void success(Void aVoid, Response response) { + + } + + @Override + public void failure(RetrofitError error) { + + } } \ No newline at end of file diff --git a/Habitica/src/com/habitrpg/android/habitica/ui/AvatarWithBarsViewModel.java b/Habitica/src/com/habitrpg/android/habitica/ui/AvatarWithBarsViewModel.java index 72c327ac8..e2984bc87 100644 --- a/Habitica/src/com/habitrpg/android/habitica/ui/AvatarWithBarsViewModel.java +++ b/Habitica/src/com/habitrpg/android/habitica/ui/AvatarWithBarsViewModel.java @@ -67,7 +67,7 @@ public class AvatarWithBarsViewModel { SetValueBar(hpBar, stats.getHp().floatValue(), stats.getMaxHealth(), context.getString(R.string.HP_default), res.getColor(R.color.hpColor), res.getColor(R.color.hpColorBackground), res.getColor(R.color.hpColorForeground)); - SetValueBar(xpBar, stats.getExp().floatValue(), stats.getToNextLevel()+stats.getExp().floatValue(), context.getString(R.string.XP_default), + SetValueBar(xpBar, stats.getExp().floatValue(), stats.getToNextLevel(), context.getString(R.string.XP_default), res.getColor(R.color.xpColor), res.getColor(R.color.xpColorBackground), res.getColor(R.color.xpColorForeground)); SetValueBar(mpBar, stats.getMp().floatValue(), stats.getMaxMP(), context.getString(R.string.MP_default), res.getColor(R.color.mpColor), res.getColor(R.color.mpColorBackground),res.getColor(R.color.mpColorForeground)); diff --git a/Habitica/src/com/habitrpg/android/habitica/userpicture/UserPicture.java b/Habitica/src/com/habitrpg/android/habitica/userpicture/UserPicture.java index 4e314bc8e..dc76e65d6 100644 --- a/Habitica/src/com/habitrpg/android/habitica/userpicture/UserPicture.java +++ b/Habitica/src/com/habitrpg/android/habitica/userpicture/UserPicture.java @@ -40,13 +40,15 @@ public class UserPicture { private void drawAvatar(HabitRPGUser user, Bitmap imgSprites, Canvas cv) { drawSprite(UserSprite.getSkin(user.getPreferences().getSkin()), imgSprites, cv); -// if(user.getPreferences().getHair() != null) { -// Log.d("Avatar", "drawing head"); -// drawSprite(UserSprite.gethair_bangs(user.getPreferences().getHair().getBangs(), user.getPreferences().getHair().getColor()), imgSprites, cv); -// drawSprite(UserSprite.gethair_mustache(user.getPreferences().getHair().getMustache(), user.getPreferences().getHair().getColor()), imgSprites, cv); -// drawSprite(UserSprite.gethair_base(user.getPreferences().getHair().getBase(), user.getPreferences().getHair().getColor()), imgSprites, cv); -// drawSprite(UserSprite.gethair_beard(user.getPreferences().getHair().getBeard(), user.getPreferences().getHair().getColor()), imgSprites, cv); -// } + com.magicmicky.habitrpgwrapper.lib.models.Preferences.Hair hair = user.getPreferences().getHair(); + + if(hair != null) { + Log.d("Avatar", "drawing head"); + drawSprite(UserSprite.gethair_bangs(hair.getBangs(), hair.getColor()), imgSprites, cv); + drawSprite(UserSprite.gethair_mustache(hair.getMustache(), hair.getColor()), imgSprites, cv); + drawSprite(UserSprite.gethair_base(hair.getBase(), hair.getColor()), imgSprites, cv); + drawSprite(UserSprite.gethair_beard(hair.getBeard(), hair.getColor()), imgSprites, cv); + } // // UserLook.UserItems items = user.getPreferences().isCostume() ? user.getItems().getGear() : user.getItems(); // drawSprite(UserSprite.getArmor(items.getArmor(), user.getSize(), user.getPreferences().getShirt()), imgSprites, cv); diff --git a/Habitica/src/com/magicmicky/habitrpgwrapper/lib/api/ApiService.java b/Habitica/src/com/magicmicky/habitrpgwrapper/lib/api/ApiService.java index a2f29258b..b6aaf263c 100644 --- a/Habitica/src/com/magicmicky/habitrpgwrapper/lib/api/ApiService.java +++ b/Habitica/src/com/magicmicky/habitrpgwrapper/lib/api/ApiService.java @@ -90,12 +90,15 @@ public interface ApiService { @POST("/user/auth/local") void connectLocal(@Body UserAuth auth, Callback callback); + + @POST("/user/sleep") + void sleep(Callback voidCallback); + /* @GET("/content") void getContent();//Check Callback - @POST("/user/sleep") - void sleep(Callback habitRPGDataCallbackCallback);//Check callback. + @POST("/user/inventory/buy/{key}") void buyItem(@Path("key") String itemKey);//Check callback. Key --> /content