Skip to content
Snippets Groups Projects
Commit 24065339 authored by Jawnnypoo's avatar Jawnnypoo
Browse files

Add todo

parent fc3fcbba
No related branches found
No related tags found
No related merge requests found
Showing
with 802 additions and 0 deletions
Loading
Loading
@@ -43,6 +43,10 @@
android:name=".activity.ActivityActivity"
android:launchMode="singleTask"
android:theme="@style/Activity.Activity"/>
<activity
android:name=".activity.TodosActivity"
android:launchMode="singleTask"
android:theme="@style/Activity.Todos"/>
<activity android:name=".activity.ProjectActivity"/>
<activity android:name=".activity.LoginActivity"
android:theme="@style/Activity.Login"/>
Loading
Loading
package com.commit451.gitlab.activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.design.widget.NavigationView;
import android.support.design.widget.TabLayout;
import android.support.v4.view.GravityCompat;
import android.support.v4.view.ViewPager;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.widget.Toolbar;
import android.view.View;
import com.commit451.gitlab.App;
import com.commit451.gitlab.R;
import com.commit451.gitlab.adapter.TodoPagerAdapter;
import com.commit451.gitlab.event.CloseDrawerEvent;
import com.squareup.otto.Subscribe;
import butterknife.BindView;
import butterknife.ButterKnife;
/**
* Shows the projects
*/
public class TodosActivity extends BaseActivity {
public static Intent newIntent(Context context) {
Intent intent = new Intent(context, TodosActivity.class);
return intent;
}
@BindView(R.id.toolbar)
Toolbar mToolbar;
@BindView(R.id.tabs)
TabLayout mTabLayout;
@BindView(R.id.pager)
ViewPager mViewPager;
@BindView(R.id.navigation_view)
NavigationView mNavigationView;
@BindView(R.id.drawer_layout)
DrawerLayout mDrawerLayout;
EventReceiver mEventReceiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_todos);
ButterKnife.bind(this);
mEventReceiver = new EventReceiver();
App.bus().register(mEventReceiver);
mToolbar.setTitle(R.string.nav_todos);
mToolbar.setNavigationIcon(R.drawable.ic_menu_24dp);
mToolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mDrawerLayout.openDrawer(GravityCompat.START);
}
});
mViewPager.setAdapter(new TodoPagerAdapter(this, getSupportFragmentManager()));
mTabLayout.setupWithViewPager(mViewPager);
}
@Override
protected void onDestroy() {
super.onDestroy();
App.bus().unregister(mEventReceiver);
}
private class EventReceiver {
@Subscribe
public void onCloseDrawerEvent(CloseDrawerEvent event) {
mDrawerLayout.closeDrawers();
}
}
}
package com.commit451.gitlab.adapter;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import com.commit451.gitlab.R;
import com.commit451.gitlab.model.api.Todo;
import com.commit451.gitlab.viewHolder.LoadingFooterViewHolder;
import com.commit451.gitlab.viewHolder.TodoViewHolder;
import java.util.ArrayList;
import java.util.Collection;
/**
* Issues adapter
*/
public class TodoAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private static final int FOOTER_COUNT = 1;
private static final int TYPE_ITEM = 0;
private static final int TYPE_FOOTER = 1;
public interface Listener {
void onTodoClicked(Todo todo);
}
private Listener mListener;
private ArrayList<Todo> mValues;
private boolean mLoading = false;
public TodoAdapter(Listener listener) {
mListener = listener;
mValues = new ArrayList<>();
}
private final View.OnClickListener onProjectClickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
int position = (int) v.getTag(R.id.list_position);
mListener.onTodoClicked(getValueAt(position));
}
};
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
switch (viewType) {
case TYPE_ITEM:
TodoViewHolder holder = TodoViewHolder.inflate(parent);
holder.itemView.setOnClickListener(onProjectClickListener);
return holder;
case TYPE_FOOTER:
return LoadingFooterViewHolder.inflate(parent);
}
throw new IllegalStateException("No holder for view type " + viewType);
}
@Override
public void onBindViewHolder(final RecyclerView.ViewHolder holder, int position) {
if (holder instanceof TodoViewHolder) {
Todo todo = getValueAt(position);
((TodoViewHolder) holder).bind(todo);
holder.itemView.setTag(R.id.list_position, position);
} else if (holder instanceof LoadingFooterViewHolder) {
((LoadingFooterViewHolder) holder).bind(mLoading);
} else {
throw new IllegalStateException("What is this holder?");
}
}
@Override
public int getItemCount() {
return mValues.size() + FOOTER_COUNT;
}
@Override
public int getItemViewType(int position) {
if (position == mValues.size()) {
return TYPE_FOOTER;
} else {
return TYPE_ITEM;
}
}
public void setData(Collection<Todo> todos) {
mValues.clear();
addData(todos);
}
public void addData(Collection<Todo> todos) {
if (todos != null) {
mValues.addAll(todos);
}
notifyDataSetChanged();
}
public Todo getValueAt(int position) {
return mValues.get(position);
}
public void setLoading(boolean loading) {
mLoading = loading;
notifyItemChanged(mValues.size());
}
}
package com.commit451.gitlab.adapter;
import android.content.Context;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import com.commit451.gitlab.R;
import com.commit451.gitlab.fragment.TodoFragment;
/**
* Projects Pager Adapter
*/
public class TodoPagerAdapter extends FragmentPagerAdapter {
private static final int SECTION_COUNT = 2;
private String[] mTitles;
public TodoPagerAdapter(Context context, FragmentManager fm) {
super(fm);
mTitles = context.getResources().getStringArray(R.array.tabs_todo);
}
@Override
public Fragment getItem(int position) {
switch(position) {
case 0:
return TodoFragment.newInstance(TodoFragment.MODE_TODO);
case 1:
return TodoFragment.newInstance(TodoFragment.MODE_DONE);
}
throw new IllegalStateException("Position exceeded on view pager");
}
@Override
public int getCount() {
return SECTION_COUNT;
}
@Override
public CharSequence getPageTitle(int position) {
return mTitles[position];
}
}
Loading
Loading
@@ -21,6 +21,7 @@ import com.commit451.gitlab.model.api.RepositoryCommit;
import com.commit451.gitlab.model.api.RepositoryFile;
import com.commit451.gitlab.model.api.RepositoryTreeObject;
import com.commit451.gitlab.model.api.Snippet;
import com.commit451.gitlab.model.api.Todo;
import com.commit451.gitlab.model.api.User;
import com.commit451.gitlab.model.api.UserBasic;
import com.commit451.gitlab.model.api.UserFull;
Loading
Loading
@@ -418,4 +419,11 @@ public interface GitLab {
 
@GET
Call<List<Snippet>> getSnippets(@Url String url);
/* --- TODOS --- */
@GET(API_VERSION + "/todos")
Call<List<Todo>> getTodos(@Query("state") @Todo.State String state);
@GET
Call<List<Todo>> getTodosByUrl(@Url String url);
}
\ No newline at end of file
package com.commit451.gitlab.fragment;
import android.net.Uri;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.commit451.easycallback.EasyCallback;
import com.commit451.gitlab.App;
import com.commit451.gitlab.R;
import com.commit451.gitlab.adapter.DividerItemDecoration;
import com.commit451.gitlab.adapter.TodoAdapter;
import com.commit451.gitlab.model.api.Todo;
import com.commit451.gitlab.util.PaginationUtil;
import java.util.List;
import butterknife.BindView;
import timber.log.Timber;
public class TodoFragment extends ButterKnifeFragment {
private static final String EXTRA_MODE = "extra_mode";
public static final int MODE_TODO = 0;
public static final int MODE_DONE = 1;
public static TodoFragment newInstance(int mode) {
Bundle args = new Bundle();
args.putInt(EXTRA_MODE, mode);
TodoFragment fragment = new TodoFragment();
fragment.setArguments(args);
return fragment;
}
@BindView(R.id.swipe_layout)
SwipeRefreshLayout mSwipeRefreshLayout;
@BindView(R.id.list)
RecyclerView mProjectsListView;
@BindView(R.id.message_text)
TextView mMessageView;
LinearLayoutManager mLayoutManager;
TodoAdapter mTodoAdapter;
int mMode;
Uri mNextPageUrl;
boolean mLoading = false;
private final RecyclerView.OnScrollListener mOnScrollListener = new RecyclerView.OnScrollListener() {
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
int visibleItemCount = mLayoutManager.getChildCount();
int totalItemCount = mLayoutManager.getItemCount();
int firstVisibleItem = mLayoutManager.findFirstVisibleItemPosition();
if (firstVisibleItem + visibleItemCount >= totalItemCount && !mLoading && mNextPageUrl != null) {
loadMore();
}
}
};
private final EasyCallback<List<Todo>> mProjectsCallback = new EasyCallback<List<Todo>>() {
@Override
public void success(@NonNull List<Todo> response) {
mLoading = false;
if (getView() == null) {
return;
}
mSwipeRefreshLayout.setRefreshing(false);
if (response.isEmpty()) {
mMessageView.setVisibility(View.VISIBLE);
mMessageView.setText(R.string.no_todos);
}
mTodoAdapter.setData(response);
mNextPageUrl = PaginationUtil.parse(getResponse()).getNext();
Timber.d("Next page url " + mNextPageUrl);
}
@Override
public void failure(Throwable t) {
mLoading = false;
Timber.e(t, null);
if (getView() == null) {
return;
}
mSwipeRefreshLayout.setRefreshing(false);
mMessageView.setVisibility(View.VISIBLE);
mMessageView.setText(R.string.connection_error);
mTodoAdapter.setData(null);
mNextPageUrl = null;
}
};
private final EasyCallback<List<Todo>> mMoreProjectsCallback = new EasyCallback<List<Todo>>() {
@Override
public void success(@NonNull List<Todo> response) {
mLoading = false;
if (getView() == null) {
return;
}
mTodoAdapter.setLoading(false);
mTodoAdapter.addData(response);
mNextPageUrl = PaginationUtil.parse(getResponse()).getNext();
Timber.d("Next page url " + mNextPageUrl);
}
@Override
public void failure(Throwable t) {
mLoading = false;
Timber.e(t, null);
if (getView() == null) {
return;
}
mTodoAdapter.setLoading(false);
}
};
private final TodoAdapter.Listener mProjectsListener = new TodoAdapter.Listener() {
@Override
public void onTodoClicked(Todo todo) {
//TODO
}
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mMode = getArguments().getInt(EXTRA_MODE);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_todo, container, false);
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
mTodoAdapter = new TodoAdapter(mProjectsListener);
mLayoutManager = new LinearLayoutManager(getActivity());
mProjectsListView.setLayoutManager(mLayoutManager);
mProjectsListView.addItemDecoration(new DividerItemDecoration(getActivity()));
mProjectsListView.setAdapter(mTodoAdapter);
mProjectsListView.addOnScrollListener(mOnScrollListener);
mSwipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
loadData();
}
});
loadData();
}
@Override
protected void loadData() {
if (getView() == null) {
return;
}
mMessageView.setVisibility(View.GONE);
mNextPageUrl = null;
switch (mMode) {
case MODE_TODO:
showLoading();
App.instance().getGitLab().getTodos(Todo.STATE_PENDING).enqueue(mProjectsCallback);
break;
case MODE_DONE:
showLoading();
App.instance().getGitLab().getTodos(Todo.STATE_DONE).enqueue(mProjectsCallback);
break;
default:
throw new IllegalStateException(mMode + " is not defined");
}
}
private void loadMore() {
if (getView() == null) {
return;
}
if (mNextPageUrl == null) {
return;
}
mLoading = true;
mTodoAdapter.setLoading(true);
Timber.d("loadMore called for " + mNextPageUrl);
App.instance().getGitLab().getTodosByUrl(mNextPageUrl.toString()).enqueue(mMoreProjectsCallback);
}
private void showLoading() {
mLoading = true;
mSwipeRefreshLayout.post(new Runnable() {
@Override
public void run() {
if (mSwipeRefreshLayout != null) {
mSwipeRefreshLayout.setRefreshing(true);
}
}
});
}
}
package com.commit451.gitlab.model.api;
import android.support.annotation.StringDef;
import com.bluelinelabs.logansquare.annotation.JsonField;
import com.bluelinelabs.logansquare.annotation.JsonObject;
import org.parceler.Parcel;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.Date;
/**
* Todos. Not processing Target, since it is different depending on what the type is, which
* makes it not play nice with any automated json parsing
*/
@Parcel
@JsonObject
public class Todo {
public static final String TARGET_ISSUE = "Issue";
public static final String TARGET_MERGE_REQUEST = "MergeRequest";
@StringDef({TARGET_ISSUE, TARGET_MERGE_REQUEST})
@Retention(RetentionPolicy.SOURCE)
public @interface TargetType {
}
public static final String STATE_PENDING = "pending";
public static final String STATE_DONE = "done";
@StringDef({STATE_PENDING, STATE_DONE})
@Retention(RetentionPolicy.SOURCE)
public @interface State {
}
@JsonField(name = "id")
String mId;
@JsonField(name = "project")
Project mProject;
@JsonField(name = "author")
UserBasic mAuthor;
@JsonField(name = "action_name")
String mActionName;
@JsonField(name = "target_type")
@TargetType
String mTargetType;
@JsonField(name = "target_url")
String mTargetUrl;
@JsonField(name = "body")
String mBody;
@JsonField(name = "state")
@State
String mState;
@JsonField(name = "created_at")
Date mCreatedAt;
public Todo() {}
public String getId() {
return mId;
}
public Project getProject() {
return mProject;
}
public UserBasic getAuthor() {
return mAuthor;
}
public String getActionName() {
return mActionName;
}
@TargetType
public String getTargetType() {
return mTargetType;
}
public String getTargetUrl() {
return mTargetUrl;
}
public String getBody() {
return mBody;
}
@State
public String getState() {
return mState;
}
public Date getCreatedAt() {
return mCreatedAt;
}
}
Loading
Loading
@@ -30,6 +30,7 @@ import com.commit451.gitlab.activity.ProjectActivity;
import com.commit451.gitlab.activity.ProjectsActivity;
import com.commit451.gitlab.activity.SearchActivity;
import com.commit451.gitlab.activity.SettingsActivity;
import com.commit451.gitlab.activity.TodosActivity;
import com.commit451.gitlab.activity.UserActivity;
import com.commit451.gitlab.activity.WebviewLoginActivity;
import com.commit451.gitlab.data.Prefs;
Loading
Loading
@@ -92,6 +93,10 @@ public class Navigator {
activity.startActivity(ActivityActivity.newIntent(activity));
}
 
public static void navigateToTodos(Activity activity) {
activity.startActivity(TodosActivity.newIntent(activity));
}
public static void navigateToLogin(Activity activity) {
activity.startActivity(LoginActivity.newIntent(activity));
}
Loading
Loading
Loading
Loading
@@ -21,6 +21,7 @@ import com.commit451.gitlab.R;
import com.commit451.gitlab.activity.ActivityActivity;
import com.commit451.gitlab.activity.GroupsActivity;
import com.commit451.gitlab.activity.ProjectsActivity;
import com.commit451.gitlab.activity.TodosActivity;
import com.commit451.gitlab.adapter.AccountsAdapter;
import com.commit451.gitlab.data.Prefs;
import com.commit451.gitlab.event.CloseDrawerEvent;
Loading
Loading
@@ -90,6 +91,16 @@ public class LabCoatNavigationView extends NavigationView {
}
App.bus().post(new CloseDrawerEvent());
return true;
case R.id.nav_todos:
if (getContext() instanceof TodosActivity) {
} else {
Navigator.navigateToTodos((Activity) getContext());
((Activity) getContext()).finish();
((Activity)getContext()).overridePendingTransition(R.anim.fade_in, R.anim.do_nothing);
}
App.bus().post(new CloseDrawerEvent());
return true;
case R.id.nav_about:
App.bus().post(new CloseDrawerEvent());
Navigator.navigateToAbout((Activity) getContext());
Loading
Loading
@@ -221,6 +232,10 @@ public class LabCoatNavigationView extends NavigationView {
menuItem.setChecked(true);
return;
}
if (getContext() instanceof TodosActivity && menuItem.getItemId() == R.id.nav_todos) {
menuItem.setChecked(true);
return;
}
}
throw new IllegalStateException("You need to set a selected nav item for this activity");
}
Loading
Loading
package com.commit451.gitlab.viewHolder;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import com.commit451.gitlab.App;
import com.commit451.gitlab.R;
import com.commit451.gitlab.model.api.Todo;
import com.commit451.gitlab.transformation.CircleTransformation;
import com.commit451.gitlab.util.DateUtil;
import com.commit451.gitlab.util.ImageUtil;
import butterknife.BindView;
import butterknife.ButterKnife;
/**
* issues, yay!
*/
public class TodoViewHolder extends RecyclerView.ViewHolder {
public static TodoViewHolder inflate(ViewGroup parent) {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.item_todo, parent, false);
return new TodoViewHolder(view);
}
@BindView(R.id.issue_image) ImageView mImageView;
@BindView(R.id.issue_message) TextView mMessageView;
@BindView(R.id.issue_creator) TextView mCreatorView;
public TodoViewHolder(View view) {
super(view);
ButterKnife.bind(this, view);
}
public void bind(Todo todo) {
if (todo.getAuthor() != null) {
App.instance().getPicasso()
.load(ImageUtil.getAvatarUrl(todo.getAuthor(), itemView.getResources().getDimensionPixelSize(R.dimen.image_size)))
.transform(new CircleTransformation())
.into(mImageView);
} else {
mImageView.setImageBitmap(null);
}
mMessageView.setText(todo.getBody());
String time = "";
if (todo.getCreatedAt() != null) {
time += DateUtil.getRelativeTimeSpanString(itemView.getContext(), todo.getCreatedAt());
}
mCreatorView.setText(time);
}
}
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="#FFFFFFFF"
android:pathData="M2,17h2v0.5L3,17.5v1h1v0.5L2,19v1h3v-4L2,16v1zM3,8h1L4,4L2,4v1h1v3zM2,11h1.8L2,13.1v0.9h3v-1L3.2,13L5,10.9L5,10L2,10v1zM7,5v2h14L21,5L7,5zM7,19h14v-2L7,17v2zM7,13h14v-2L7,11v2z"/>
</vector>
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">
<android.support.design.widget.CoordinatorLayout
android:id="@+id/main_content_container"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.AppBarLayout
android:id="@+id/appbar"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:layout_scrollFlags="scroll|enterAlways|snap"/>
<android.support.design.widget.TabLayout
android:id="@+id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</android.support.design.widget.AppBarLayout>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<include layout="@layout/progress_fullscreen"/>
</FrameLayout>
</android.support.design.widget.CoordinatorLayout>
<com.commit451.gitlab.view.LabCoatNavigationView
android:id="@+id/navigation_view"
android:layout_width="304dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:clickable="true"
android:fitsSystemWindows="true" />
</android.support.v4.widget.DrawerLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.commit451.gitlab.view.LabCoatSwipeRefreshLayout
android:id="@+id/swipe_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.RecyclerView
android:id="@+id/list"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</com.commit451.gitlab.view.LabCoatSwipeRefreshLayout>
<TextView
android:id="@+id/message_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_margin="16dp"
android:gravity="center"
android:text="@string/no_commits_found"
android:visibility="gone"/>
</FrameLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/selectableItemBackground"
android:minHeight="?android:attr/listPreferredItemHeight"
android:orientation="horizontal">
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:layout_marginLeft="@dimen/activity_horizontal_margin"
android:layout_marginRight="@dimen/activity_horizontal_margin"
android:layout_marginTop="8dp"
android:layout_weight="1"
android:orientation="vertical">
<TextView
android:id="@+id/issue_message"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="end"
android:maxLines="2"
android:textSize="@dimen/text_size_small"
tools:text="I commited all the code at once cause I am cool. So sorry" />
<TextView
android:id="@+id/issue_creator"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="@dimen/text_size_tiny"
tools:text="Created 45 days ago by Jawnnypoo" />
</LinearLayout>
<ImageView
android:id="@+id/issue_image"
android:layout_width="@dimen/image_size"
android:layout_height="@dimen/image_size"
android:layout_gravity="center_vertical"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:contentDescription="@null"
tools:src="@drawable/ic_assign_24dp" />
</LinearLayout>
\ No newline at end of file
Loading
Loading
@@ -16,6 +16,10 @@
android:id="@+id/nav_activity"
android:icon="@drawable/ic_activity_24dp"
android:title="@string/nav_activity" />
<item
android:id="@+id/nav_todos"
android:icon="@drawable/ic_todo_24dp"
android:title="@string/nav_todos" />
</group>
 
<group
Loading
Loading
Loading
Loading
@@ -27,4 +27,10 @@
<item name="android:statusBarColor">@android:color/transparent</item>
<item name="android:windowTranslucentStatus">true</item>
</style>
<style name="Activity.Todos">
<item name="colorPrimaryDark">@android:color/transparent</item>
<item name="android:statusBarColor">@android:color/transparent</item>
<item name="android:windowTranslucentStatus">true</item>
</style>
</resources>
\ No newline at end of file
Loading
Loading
@@ -9,6 +9,7 @@
<string name="nav_projects">Projects</string>
<string name="nav_groups">Groups</string>
<string name="nav_activity">Activity</string>
<string name="nav_todos">Todos</string>
<!-- Menu -->
<string name="action_logout">Logout</string>
<string name="action_save">Save</string>
Loading
Loading
@@ -71,6 +72,13 @@
<item>@string/title_users</item>
</string-array>
 
<string name="title_todo">To do</string>
<string name="title_done">Done</string>
<string-array name="tabs_todo">
<item>@string/title_todo</item>
<item>@string/title_done</item>
</string-array>
<!-- Login -->
<string name="login_button">Login</string>
<string name="url_hint">URL (e.g. https://gitlab.com/)</string>
Loading
Loading
@@ -419,6 +427,9 @@
<item>@string/setting_starting_view_activity</item>
</string-array>
 
<!-- Todos -->
<string name="no_todos">No todos.</string>
<!-- Deep link scheme -->
<string name="deeplink_scheme">labcoat</string>
<!-- Deep link host -->
Loading
Loading
Loading
Loading
@@ -38,6 +38,10 @@
<!--Check v21 for the good bits-->
</style>
 
<style name="Activity.Todos">
<!--Check v21 for the good bits-->
</style>
<style name="Activity.Translucent">
<!-- using a semi-transparent window background for the drag-back gesture -->
<item name="android:windowBackground">@color/scrim</item>
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment