Create TavernActivity / extract Sidebar Strings / extract MainDrawerBuilder

This commit is contained in:
Negue 2015-08-18 21:46:12 +02:00
parent 9f7582b81f
commit b26e48c104
8 changed files with 245 additions and 60 deletions

View file

@ -77,8 +77,17 @@
<activity
android:name=".TaskFormActivity"
android:label="@string/title_activity_task_form"
android:theme="@style/AppThemeWithActionBarBlackText"
android:parentActivityName=".MainActivity" >
android:parentActivityName=".MainActivity"
android:theme="@style/AppThemeWithActionBarBlackText" >
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.habitrpg.android.habitica.MainActivity" />
</activity>
<activity
android:name=".TavernActivity"
android:label="@string/title_activity_tavern"
android:parentActivityName=".MainActivity"
android:theme="@style/AppThemeWithOwnActionBar">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.habitrpg.android.habitica.MainActivity" />

View file

@ -0,0 +1,37 @@
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:id="@+id/drawer_layout"
tools:context=".TavernActivity">
<LinearLayout
android:id="@+id/layout_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:fitsSystemWindows="true"
android:layout_marginTop="25dp">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:minHeight="?attr/actionBarSize"
android:background="?attr/colorPrimary" />
<!-- As the main content view, the view below consumes the entire
space available using match_parent in both dimensions. -->
<FrameLayout
android:id="@+id/content_frame"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white">
<TextView android:text="Text" android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</FrameLayout>
</LinearLayout>
</android.support.v4.widget.DrawerLayout>

View file

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="sidebar.tasks">Tasks</string>
<string name="sidebar.section.social">Social</string>
<string name="sidebar.tavern">Tavern</string>
<string name="sidebar.party">Party</string>
<string name="sidebar.guilds">Guilds</string>
<string name="sidebar.challenges">Challenges</string>
<string name="sidebar.section.inventory">Inventory</string>
<string name="sidebar.avatar">Avatar</string>
<string name="sidebar.equipment">Equipment</string>
<string name="sidebar.stable">Stable</string>
<string name="sidebar.news">News</string>
<string name="sidebar.settings">Settings</string>
<string name="sidebar.about">About</string>
</resources>

View file

@ -15,7 +15,7 @@
<string name="action_barcode">Scan a barcode</string>
<string name="ERR_pb_barcode">Prefs couldn\'t be loaded from the barcode</string>
<string name="settings_changed">Settings were successfully updated!</string>
<string name="pref_dialog_title">HabitRPG settings</string>
<string name="pref_dialog_title">Habitica settings</string>
<string name="string_pref_dialog_positive">OK</string>
<!-- Prefs -->
@ -24,7 +24,7 @@
<string name="SP_address">ServerAdress</string>
<string name="SP_address_title">Server Address</string>
<string name="SP_address_summary">Enter the address of the server</string>
<string name="SP_address_default">https://habitrpg.com/</string>
<string name="SP_address_default">https://habitica.com/</string>
<string name="SP_address_hint">Your custom server</string>
<string name="SP_userID">UserID</string>
<string name="SP_userID_title">User ID</string>
@ -146,5 +146,6 @@
<string name="friday">Friday</string>
<string name="saturday">Saturday</string>
<string name="sunday">Sunday</string>
<string name="title_activity_tavern">Tavern</string>
</resources>

View file

@ -36,6 +36,11 @@
<item name="actionOverflowMenuStyle">@style/PopupTheme</item>
</style>
<style name="AppThemeWithOwnActionBar" parent="AppTheme">
<item name="android:windowDrawsSystemBarBackgrounds" tools:targetApi="21">false</item>
<item name="android:windowTranslucentStatus" tools:targetApi="21">false</item>
</style>
<style name="AppThemeWithActionBar" parent="AppTheme">
<item name="windowActionBar">true</item>
<item name="windowNoTitle">false</item>

View file

@ -1,7 +1,6 @@
package com.habitrpg.android.habitica;
import android.content.Intent;
import android.databinding.ObservableArrayList;
import android.graphics.Color;
import android.os.Bundle;
import android.support.design.widget.Snackbar;
@ -23,10 +22,17 @@ import com.habitrpg.android.habitica.callbacks.HabitRPGUserCallback;
import com.habitrpg.android.habitica.callbacks.TaskCreationCallback;
import com.habitrpg.android.habitica.callbacks.TaskScoringCallback;
import com.habitrpg.android.habitica.callbacks.TaskUpdateCallback;
import com.habitrpg.android.habitica.events.*;
import com.habitrpg.android.habitica.events.AddTaskTappedEvent;
import com.habitrpg.android.habitica.events.BuyRewardTappedEvent;
import com.habitrpg.android.habitica.events.HabitScoreEvent;
import com.habitrpg.android.habitica.events.TaskLongPressedEvent;
import com.habitrpg.android.habitica.events.TaskSaveEvent;
import com.habitrpg.android.habitica.events.TaskTappedEvent;
import com.habitrpg.android.habitica.events.TodoCheckedEvent;
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.MainDrawerBuilder;
import com.habitrpg.android.habitica.ui.adapter.HabitItemRecyclerViewAdapter;
import com.habitrpg.android.habitica.ui.fragments.TaskRecyclerViewFragment;
import com.instabug.wrapper.support.activity.InstabugAppCompatActivity;
@ -35,18 +41,15 @@ import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser;
import com.magicmicky.habitrpgwrapper.lib.models.Tag;
import com.magicmicky.habitrpgwrapper.lib.models.TaskDirection;
import com.magicmicky.habitrpgwrapper.lib.models.TaskDirectionData;
import com.magicmicky.habitrpgwrapper.lib.models.tasks.Task;
import com.magicmicky.habitrpgwrapper.lib.models.tasks.ItemData;
import com.magicmicky.habitrpgwrapper.lib.models.tasks.Task;
import com.mikepenz.materialdrawer.Drawer;
import com.mikepenz.materialdrawer.DrawerBuilder;
import com.mikepenz.materialdrawer.model.DividerDrawerItem;
import com.mikepenz.materialdrawer.model.PrimaryDrawerItem;
import com.mikepenz.materialdrawer.model.SecondaryDrawerItem;
import com.mikepenz.materialdrawer.model.SectionDrawerItem;
import com.mikepenz.materialdrawer.model.interfaces.IDrawerItem;
import com.raizlabs.android.dbflow.runtime.FlowContentObserver;
import com.raizlabs.android.dbflow.sql.builder.Condition;
import com.raizlabs.android.dbflow.sql.builder.ConditionQueryBuilder;
import com.raizlabs.android.dbflow.sql.language.Select;
import com.raizlabs.android.dbflow.structure.BaseModel;
import com.raizlabs.android.dbflow.structure.Model;
@ -68,8 +71,7 @@ public class MainActivity extends InstabugAppCompatActivity implements HabitRPGU
TaskScoringCallback.OnTaskScored, OnTaskCreationListener,
FlowContentObserver.OnSpecificModelStateChangedListener, TaskCreationCallback.OnHabitCreated, TaskUpdateCallback.OnHabitUpdated,
Callback<List<ItemData>> {
static final int SETTINGS = 11;
static final int ABOUT = 12;
static final int TASK_CREATED_RESULT = 1;
static final int TASK_UPDATED_RESULT = 2;
@ -149,54 +151,8 @@ public class MainActivity extends InstabugAppCompatActivity implements HabitRPGU
avatarInHeader = new AvatarWithBarsViewModel(this, avatarHeaderView);
drawer = new DrawerBuilder()
.withActivity(this)
.withToolbar(toolbar)
.withHeaderDivider(false)
.withAnimateDrawerItems(true)
.addDrawerItems(
new PrimaryDrawerItem().withName("Tasks"),
new SectionDrawerItem().withName("Social"),
new PrimaryDrawerItem().withName("Tavern"),
new PrimaryDrawerItem().withName("Party"),
new PrimaryDrawerItem().withName("Guilds"),
new PrimaryDrawerItem().withName("Challenges"),
new SectionDrawerItem().withName("Inventory"),
new PrimaryDrawerItem().withName("Avatar"),
new PrimaryDrawerItem().withName("Equipment"),
new PrimaryDrawerItem().withName("Stable"),
new DividerDrawerItem(),
new SecondaryDrawerItem().withName("News"),
new SecondaryDrawerItem().withName("Settings").withIdentifier(SETTINGS),
new SecondaryDrawerItem().withName("About").withIdentifier(ABOUT)
)
.withStickyFooterDivider(false)
.withOnDrawerItemClickListener(new Drawer.OnDrawerItemClickListener() {
@Override
public boolean onItemClick(AdapterView<?> parent, View view, int position, long id, IDrawerItem drawerItem) {
// do something with the clicked item :D
switch (drawerItem.getIdentifier()) {
case SETTINGS:
startActivity(new Intent(MainActivity.this, PrefsActivity.class));
return false;
case ABOUT:
startActivity(new Intent(MainActivity.this, AboutActivity.class));
return false;
}
return true;
}
})
drawer = MainDrawerBuilder.CreateDefaultBuilderSettings(this, toolbar)
.withSelectedItem(0)
.build();
final android.content.Context context = getApplicationContext();

View file

@ -0,0 +1,68 @@
package com.habitrpg.android.habitica;
import android.os.Bundle;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.MenuItem;
import com.habitrpg.android.habitica.ui.MainDrawerBuilder;
import com.mikepenz.materialdrawer.Drawer;
import butterknife.ButterKnife;
import butterknife.InjectView;
public class TavernActivity extends AppCompatActivity {
@InjectView(R.id.toolbar)
Toolbar toolbar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tavern);
ButterKnife.inject(this);
setSupportActionBar(toolbar);
ActionBar actionBar = getSupportActionBar();
// Enable Backbutton
if (actionBar != null) {
actionBar.setTitle(R.string.about_title);
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setDisplayShowHomeEnabled(false);
actionBar.setDisplayShowTitleEnabled(true);
actionBar.setDisplayUseLogoEnabled(false);
actionBar.setHomeButtonEnabled(false);
actionBar.setElevation(0);
}
Drawer drawer = MainDrawerBuilder.CreateDefaultBuilderSettings(this, toolbar)
.withTranslucentNavigationBar(false)
.withTranslucentStatusBar(false)
.withDisplayBelowStatusBar(false)
.withDisplayBelowToolbar(false)
.withActionBarDrawerToggle(false)
.withSelectedItem(2)
.build();
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == android.R.id.home) {
finish();
return true;
}
return super.onOptionsItemSelected(item);
}
}

View file

@ -0,0 +1,93 @@
package com.habitrpg.android.habitica.ui;
import android.app.Activity;
import android.content.Intent;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.widget.AdapterView;
import com.habitrpg.android.habitica.AboutActivity;
import com.habitrpg.android.habitica.R;
import com.habitrpg.android.habitica.TavernActivity;
import com.habitrpg.android.habitica.prefs.PrefsActivity;
import com.mikepenz.materialdrawer.Drawer;
import com.mikepenz.materialdrawer.DrawerBuilder;
import com.mikepenz.materialdrawer.model.DividerDrawerItem;
import com.mikepenz.materialdrawer.model.PrimaryDrawerItem;
import com.mikepenz.materialdrawer.model.SecondaryDrawerItem;
import com.mikepenz.materialdrawer.model.SectionDrawerItem;
import com.mikepenz.materialdrawer.model.interfaces.IDrawerItem;
/**
* Created by Negue on 18.08.2015.
*/
public class MainDrawerBuilder {
static final int SIDEBAR_TAVERN = 2;
static final int SIDEBAR_SETTINGS = 11;
static final int SIDEBAR_ABOUT = 12;
public static DrawerBuilder CreateDefaultBuilderSettings(final Activity activity, Toolbar toolbar) {
DrawerBuilder builder = new DrawerBuilder()
.withActivity(activity);
if (toolbar != null) {
builder.withToolbar(toolbar);
}
builder.withHeaderDivider(false)
.withAnimateDrawerItems(true)
.addDrawerItems(
new PrimaryDrawerItem().withName(activity.getString(R.string.sidebar_tasks)),
new SectionDrawerItem().withName(activity.getString(R.string.sidebar_section_social)),
new PrimaryDrawerItem().withName(activity.getString(R.string.sidebar_tavern)).withIdentifier(SIDEBAR_TAVERN),
new PrimaryDrawerItem().withName(activity.getString(R.string.sidebar_party)),
new PrimaryDrawerItem().withName(activity.getString(R.string.sidebar_guilds)),
new PrimaryDrawerItem().withName(activity.getString(R.string.sidebar_challenges)),
new SectionDrawerItem().withName(activity.getString(R.string.sidebar_section_inventory)),
new PrimaryDrawerItem().withName(activity.getString(R.string.sidebar_avatar)),
new PrimaryDrawerItem().withName(activity.getString(R.string.sidebar_equipment)),
new PrimaryDrawerItem().withName(activity.getString(R.string.sidebar_stable)),
new DividerDrawerItem(),
new SecondaryDrawerItem().withName(activity.getString(R.string.sidebar_news)),
new SecondaryDrawerItem().withName(activity.getString(R.string.sidebar_settings)).withIdentifier(SIDEBAR_SETTINGS),
new SecondaryDrawerItem().withName(activity.getString(R.string.sidebar_about)).withIdentifier(SIDEBAR_ABOUT)
)
.withStickyFooterDivider(false)
.withOnDrawerItemClickListener(new Drawer.OnDrawerItemClickListener() {
@Override
public boolean onItemClick(AdapterView<?> parent, View view, int position, long id, IDrawerItem drawerItem) {
// do something with the clicked item :D
switch (drawerItem.getIdentifier()) {
case SIDEBAR_TAVERN: {
activity.startActivity(new Intent(activity, TavernActivity.class));
return false;
}
case SIDEBAR_SETTINGS: {
activity.startActivity(new Intent(activity, PrefsActivity.class));
return false;
}
case SIDEBAR_ABOUT: {
activity.startActivity(new Intent(activity, AboutActivity.class));
return false;
}
}
return true;
}
});
return builder;
}
}