Search in sources :

Example 1 with TreeItem

use of email.schaal.ocreader.database.model.TreeItem in project ocreader by schaal.

the class ListActivity method onCreate.

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    binding = DataBindingUtil.setContentView(this, R.layout.activity_list);
    setSupportActionBar(binding.toolbarLayout.toolbar);
    SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
    binding.swipeRefreshLayout.setColorSchemeResources(R.color.primary);
    binding.swipeRefreshLayout.setOnRefreshListener(this);
    profileDrawerItem = new ProfileDrawerItem().withName(preferences.getString(Preferences.USERNAME.getKey(), getString(R.string.app_name))).withEmail(Preferences.URL.getString(preferences));
    updateUserProfile();
    IProfile profileSettingsItem = new ProfileSettingDrawerItem().withName(getString(R.string.account_settings)).withIconTinted(true).withIcon(R.drawable.ic_settings).withTag((Runnable) () -> {
        Intent loginIntent = new Intent(ListActivity.this, LoginActivity.class);
        startActivityForResult(loginIntent, LoginActivity.REQUEST_CODE);
    });
    accountHeader = new AccountHeaderBuilder().withActivity(this).withHeaderBackground(R.drawable.header_background).addProfiles(profileDrawerItem, profileSettingsItem).withCurrentProfileHiddenInList(true).withProfileImagesClickable(false).withSavedInstance(savedInstanceState).withOnAccountHeaderListener((view, profile, current) -> {
        if (profile instanceof Tagable) {
            Tagable tagable = (Tagable) profile;
            if (tagable.getTag() instanceof Runnable) {
                ((Runnable) tagable.getTag()).run();
                return false;
            }
        }
        return true;
    }).build();
    refreshDrawerItem = new PrimaryDrawerItem().withName(getString(R.string.action_sync)).withSelectable(false).withIconTintingEnabled(true).withIcon(R.drawable.ic_refresh).withIdentifier(REFRESH_DRAWER_ITEM_ID).withTag((Runnable) () -> SyncService.startSync(ListActivity.this));
    IDrawerItem settingsDrawerItem = new PrimaryDrawerItem().withName(R.string.settings).withIcon(R.drawable.ic_settings).withIconTintingEnabled(true).withSelectable(false).withTag((Runnable) () -> {
        startDrawer.closeDrawer();
        Intent settingsIntent = new Intent(ListActivity.this, SettingsActivity.class);
        startActivity(settingsIntent);
    });
    DrawerBuilder startDrawerBuilder = new DrawerBuilder().withActivity(this).withAccountHeader(accountHeader).addStickyDrawerItems(settingsDrawerItem, refreshDrawerItem).withOnDrawerListener(new Drawer.OnDrawerListener() {

        @Override
        public void onDrawerOpened(View drawerView) {
            drawerManager.getStartAdapter().updateUnreadCount(getRealm(), isShowOnlyUnread());
        }

        @Override
        public void onDrawerClosed(View drawerView) {
        }

        @Override
        public void onDrawerSlide(View drawerView, float slideOffset) {
        }
    }).withOnDrawerItemClickListener((view, position, drawerItem) -> {
        if (drawerItem.getTag() instanceof TreeItem) {
            TreeItem item = (TreeItem) drawerItem.getTag();
            onStartDrawerItemClicked(item);
            return false;
        } else if (drawerItem.getTag() instanceof Runnable) {
            ((Runnable) drawerItem.getTag()).run();
        }
        return true;
    }).withSavedInstance(savedInstanceState);
    DrawerBuilder endDrawerBuilder = new DrawerBuilder().withActivity(this).withDrawerGravity(Gravity.END).withSavedInstance(savedInstanceState).withShowDrawerOnFirstLaunch(true).withOnDrawerListener(new Drawer.OnDrawerListener() {

        @Override
        public void onDrawerOpened(View drawerView) {
            drawerManager.getEndAdapter().updateUnreadCount(getRealm(), isShowOnlyUnread());
        }

        @Override
        public void onDrawerClosed(View drawerView) {
        }

        @Override
        public void onDrawerSlide(View drawerView, float slideOffset) {
        }
    }).withOnDrawerItemClickListener((view, position, drawerItem) -> {
        if (drawerItem.getTag() instanceof Feed) {
            Feed feed = (Feed) drawerItem.getTag();
            onEndDrawerItemClicked(feed);
            return false;
        }
        return true;
    });
    startDrawerBuilder.withToolbar(binding.toolbarLayout.toolbar);
    startDrawer = startDrawerBuilder.build();
    drawerManager = new DrawerManager(this, startDrawer, endDrawerBuilder.append(startDrawer), unreadSwitchListener);
    layoutManager = new LinearLayoutManager(this);
    adapter = new ErrorAdapter(this, getRealm(), drawerManager.getState(), this, this);
    binding.fabMarkAllAsRead.setOnClickListener(new View.OnClickListener() {

        private void onCompletion(View view) {
            adapter.updateItems(false);
            view.setEnabled(true);
            binding.fabMarkAllAsRead.toggleSync();
        }

        @Override
        public void onClick(final View view) {
            if (binding.fabMarkAllAsRead.isSync()) {
                SyncService.startSync(ListActivity.this);
                binding.fabMarkAllAsRead.toggleSync();
            } else {
                Queries.markTemporaryFeedAsRead(getRealm(), () -> onCompletion(view), error -> {
                    Log.e(TAG, "Failed to mark temporary feed as read", error);
                    onCompletion(view);
                });
            }
        }
    });
    binding.fabMarkAllAsRead.setOnLongClickListener(v -> {
        Toast.makeText(ListActivity.this, R.string.mark_all_as_read, Toast.LENGTH_SHORT).show();
        return true;
    });
    binding.itemsRecyclerview.setAdapter(adapter);
    binding.itemsRecyclerview.setLayoutManager(layoutManager);
    if (savedInstanceState == null && getIntent().hasExtra(SyncService.EXTRA_ID)) {
        drawerManager.getState().restore(getRealm(), getIntent().getIntExtra(SyncService.EXTRA_ID, -10), null, false);
    } else {
        drawerManager.getState().restoreInstanceState(getRealm(), getPreferences(MODE_PRIVATE));
    }
    binding.itemsRecyclerview.addItemDecoration(new DividerItemDecoration(this, R.dimen.divider_inset));
    adapter.updateItems(false);
    if (savedInstanceState != null) {
        layoutManager.onRestoreInstanceState(savedInstanceState.getParcelable(LAYOUT_MANAGER_STATE));
        adapter.onRestoreInstanceState(savedInstanceState);
        if (adapter.getSelectedItemsCount() > 0) {
            actionMode = startActionMode(this);
        }
    }
    drawerManager.reloadAdapters(getRealm(), isShowOnlyUnread());
    // noinspection ConstantConditions
    getSupportActionBar().setTitle(drawerManager.getState().getTreeItem().getName());
}
Also used : ActionMode(android.view.ActionMode) Bundle(android.os.Bundle) OnCheckedChangeListener(com.mikepenz.materialdrawer.interfaces.OnCheckedChangeListener) Libs(com.mikepenz.aboutlibraries.Libs) DividerItemDecoration(email.schaal.ocreader.view.DividerItemDecoration) Nameable(com.mikepenz.materialdrawer.model.interfaces.Nameable) LocalBroadcastManager(android.support.v4.content.LocalBroadcastManager) ActivityListBinding(email.schaal.ocreader.databinding.ActivityListBinding) Tagable(com.mikepenz.materialdrawer.model.interfaces.Tagable) Base64InputStream(android.util.Base64InputStream) ByteArrayInputStream(java.io.ByteArrayInputStream) Item(email.schaal.ocreader.database.model.Item) TemporaryFeed(email.schaal.ocreader.database.model.TemporaryFeed) View(android.view.View) ProfileSettingDrawerItem(com.mikepenz.materialdrawer.model.ProfileSettingDrawerItem) PreferenceManager(android.preference.PreferenceManager) SyncType(email.schaal.ocreader.service.SyncType) Log(android.util.Log) AccountHeader(com.mikepenz.materialdrawer.AccountHeader) ContextCompat(android.support.v4.content.ContextCompat) AllUnreadFolder(email.schaal.ocreader.database.model.AllUnreadFolder) PrimaryDrawerItem(com.mikepenz.materialdrawer.model.PrimaryDrawerItem) BroadcastReceiver(android.content.BroadcastReceiver) Queries(email.schaal.ocreader.database.Queries) ErrorAdapter(email.schaal.ocreader.view.ErrorAdapter) DrawerBuilder(com.mikepenz.materialdrawer.DrawerBuilder) Nullable(android.support.annotation.Nullable) Snackbar(android.support.design.widget.Snackbar) Context(android.content.Context) Intent(android.content.Intent) BitmapFactory(android.graphics.BitmapFactory) IProfile(com.mikepenz.materialdrawer.model.interfaces.IProfile) NonNull(android.support.annotation.NonNull) IDrawerItem(com.mikepenz.materialdrawer.model.interfaces.IDrawerItem) TreeItem(email.schaal.ocreader.database.model.TreeItem) MenuItem(android.view.MenuItem) SyncService(email.schaal.ocreader.service.SyncService) Drawer(com.mikepenz.materialdrawer.Drawer) Toast(android.widget.Toast) Menu(android.view.Menu) User(email.schaal.ocreader.database.model.User) DrawerManager(email.schaal.ocreader.view.drawer.DrawerManager) DrawerLayout(android.support.v4.widget.DrawerLayout) ProfileDrawerItem(com.mikepenz.materialdrawer.model.ProfileDrawerItem) SwipeRefreshLayout(android.support.v4.widget.SwipeRefreshLayout) LibsBuilder(com.mikepenz.aboutlibraries.LibsBuilder) Feed(email.schaal.ocreader.database.model.Feed) LoadMoreAdapter(email.schaal.ocreader.view.LoadMoreAdapter) CompoundButton(android.widget.CompoundButton) LinearLayoutManager(android.support.v7.widget.LinearLayoutManager) Gravity(android.view.Gravity) SharedPreferences(android.content.SharedPreferences) Bitmap(android.graphics.Bitmap) DataBindingUtil(android.databinding.DataBindingUtil) Base64(android.util.Base64) ItemViewHolder(email.schaal.ocreader.view.ItemViewHolder) AccountHeaderBuilder(com.mikepenz.materialdrawer.AccountHeaderBuilder) Activity(android.app.Activity) PrimaryDrawerItem(com.mikepenz.materialdrawer.model.PrimaryDrawerItem) IDrawerItem(com.mikepenz.materialdrawer.model.interfaces.IDrawerItem) ProfileSettingDrawerItem(com.mikepenz.materialdrawer.model.ProfileSettingDrawerItem) ErrorAdapter(email.schaal.ocreader.view.ErrorAdapter) TreeItem(email.schaal.ocreader.database.model.TreeItem) ProfileDrawerItem(com.mikepenz.materialdrawer.model.ProfileDrawerItem) AccountHeaderBuilder(com.mikepenz.materialdrawer.AccountHeaderBuilder) LinearLayoutManager(android.support.v7.widget.LinearLayoutManager) IProfile(com.mikepenz.materialdrawer.model.interfaces.IProfile) TemporaryFeed(email.schaal.ocreader.database.model.TemporaryFeed) Feed(email.schaal.ocreader.database.model.Feed) DrawerManager(email.schaal.ocreader.view.drawer.DrawerManager) SharedPreferences(android.content.SharedPreferences) Intent(android.content.Intent) Drawer(com.mikepenz.materialdrawer.Drawer) DividerItemDecoration(email.schaal.ocreader.view.DividerItemDecoration) View(android.view.View) DrawerBuilder(com.mikepenz.materialdrawer.DrawerBuilder) Tagable(com.mikepenz.materialdrawer.model.interfaces.Tagable)

Example 2 with TreeItem

use of email.schaal.ocreader.database.model.TreeItem in project ocreader by schaal.

the class BaseDrawerManager method updateUnreadCount.

public void updateUnreadCount(Realm realm, boolean showOnlyUnread) {
    if (showOnlyUnread) {
        reload(realm, true);
    } else {
        for (IDrawerItem drawerItem : drawer.getDrawerItems()) {
            if (drawerItem instanceof Badgeable && drawerItem.getTag() instanceof TreeItem) {
                Badgeable badgeable = (Badgeable) drawerItem;
                Integer count = ((TreeItem) drawerItem.getTag()).getCount(realm);
                if (count <= 0) {
                    updateBadge(badgeable, null);
                } else {
                    updateBadge(badgeable, String.valueOf(count));
                }
            }
        }
    }
}
Also used : IDrawerItem(com.mikepenz.materialdrawer.model.interfaces.IDrawerItem) TreeItem(email.schaal.ocreader.database.model.TreeItem) Badgeable(com.mikepenz.materialdrawer.model.interfaces.Badgeable)

Aggregations

IDrawerItem (com.mikepenz.materialdrawer.model.interfaces.IDrawerItem)2 TreeItem (email.schaal.ocreader.database.model.TreeItem)2 Activity (android.app.Activity)1 BroadcastReceiver (android.content.BroadcastReceiver)1 Context (android.content.Context)1 Intent (android.content.Intent)1 SharedPreferences (android.content.SharedPreferences)1 DataBindingUtil (android.databinding.DataBindingUtil)1 Bitmap (android.graphics.Bitmap)1 BitmapFactory (android.graphics.BitmapFactory)1 Bundle (android.os.Bundle)1 PreferenceManager (android.preference.PreferenceManager)1 NonNull (android.support.annotation.NonNull)1 Nullable (android.support.annotation.Nullable)1 Snackbar (android.support.design.widget.Snackbar)1 ContextCompat (android.support.v4.content.ContextCompat)1 LocalBroadcastManager (android.support.v4.content.LocalBroadcastManager)1 DrawerLayout (android.support.v4.widget.DrawerLayout)1 SwipeRefreshLayout (android.support.v4.widget.SwipeRefreshLayout)1 LinearLayoutManager (android.support.v7.widget.LinearLayoutManager)1