mirror of https://github.com/tasks/tasks
Collapsible navigation drawer groups
parent
a946b8e216
commit
fba0f1cfec
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,83 @@
|
||||
package com.todoroo.astrid.adapter;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Intent;
|
||||
import android.view.View;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
import butterknife.BindView;
|
||||
import butterknife.ButterKnife;
|
||||
import butterknife.OnClick;
|
||||
import org.tasks.LocalBroadcastManager;
|
||||
import org.tasks.R;
|
||||
import org.tasks.data.CaldavDao;
|
||||
import org.tasks.data.GoogleTaskDao;
|
||||
import org.tasks.filters.NavigationDrawerSubheader;
|
||||
import org.tasks.preferences.Preferences;
|
||||
import org.tasks.preferences.SyncPreferences;
|
||||
import org.tasks.themes.DrawableUtil;
|
||||
|
||||
public class SubheaderViewHolder extends RecyclerView.ViewHolder {
|
||||
|
||||
private final Preferences preferences;
|
||||
private final GoogleTaskDao googleTaskDao;
|
||||
private final CaldavDao caldavDao;
|
||||
private final LocalBroadcastManager localBroadcastManager;
|
||||
@BindView(R.id.text)
|
||||
TextView text;
|
||||
|
||||
@BindView(R.id.icon_error)
|
||||
ImageView errorIcon;
|
||||
|
||||
private NavigationDrawerSubheader subheader;
|
||||
|
||||
SubheaderViewHolder(
|
||||
@NonNull View itemView,
|
||||
Activity activity,
|
||||
Preferences preferences,
|
||||
GoogleTaskDao googleTaskDao,
|
||||
CaldavDao caldavDao,
|
||||
LocalBroadcastManager localBroadcastManager) {
|
||||
super(itemView);
|
||||
this.preferences = preferences;
|
||||
this.googleTaskDao = googleTaskDao;
|
||||
this.caldavDao = caldavDao;
|
||||
this.localBroadcastManager = localBroadcastManager;
|
||||
|
||||
ButterKnife.bind(this, itemView);
|
||||
|
||||
errorIcon.setOnClickListener(
|
||||
v -> activity.startActivity(new Intent(activity, SyncPreferences.class)));
|
||||
}
|
||||
|
||||
@OnClick(R.id.subheader_row)
|
||||
public void onClick() {
|
||||
boolean collapsed = !subheader.isCollapsed();
|
||||
switch (subheader.getSubheaderType()) {
|
||||
case PREFERENCE:
|
||||
preferences.setBoolean((int) subheader.getId(), collapsed);
|
||||
break;
|
||||
case GOOGLE_TASKS:
|
||||
googleTaskDao.setCollapsed(subheader.getId(), collapsed);
|
||||
break;
|
||||
case CALDAV:
|
||||
caldavDao.setCollapsed(subheader.getId(), collapsed);
|
||||
break;
|
||||
}
|
||||
localBroadcastManager.broadcastRefreshList();
|
||||
}
|
||||
|
||||
public void bind(NavigationDrawerSubheader subheader) {
|
||||
this.subheader = subheader;
|
||||
text.setText(subheader.listingTitle);
|
||||
errorIcon.setVisibility(subheader.error ? View.VISIBLE : View.GONE);
|
||||
DrawableUtil.setRightDrawable(
|
||||
itemView.getContext(),
|
||||
text,
|
||||
subheader.isCollapsed()
|
||||
? R.drawable.ic_keyboard_arrow_up_black_18dp
|
||||
: R.drawable.ic_keyboard_arrow_down_black_18dp);
|
||||
}
|
||||
}
|
@ -0,0 +1,5 @@
|
||||
package org.tasks;
|
||||
|
||||
public interface Function<T> {
|
||||
T call();
|
||||
}
|
@ -0,0 +1,5 @@
|
||||
<vector android:autoMirrored="true" android:height="18dp"
|
||||
android:viewportHeight="24.0" android:viewportWidth="24.0"
|
||||
android:width="18dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="#FF000000" android:pathData="M7.41,7.84L12,12.42l4.59,-4.58L18,9.25l-6,6 -6,-6z"/>
|
||||
</vector>
|
@ -0,0 +1,5 @@
|
||||
<vector android:autoMirrored="true" android:height="18dp"
|
||||
android:viewportHeight="24.0" android:viewportWidth="24.0"
|
||||
android:width="18dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="#FF000000" android:pathData="M7.41,15.41L12,10.83l4.59,4.58L18,14l-6,-6 -6,6z"/>
|
||||
</vector>
|
Loading…
Reference in New Issue