private void SelectNewLibrary(Library library)
        {
            if (IsFinishing)
            {
                return;
            }

            // If there are fragments loaded, do nothing
            Stack <Fragment> stack = stacks[(int)App.STATE.CurrentLibrary];

            if (stack.Count > 0)
            {
                drawer.CloseDrawer(list);
                return;
            }

            Fragment fragment;

            App.STATE.CurrentLibrary = library;
            string tag = Enum.GetName(typeof(Library), library);

            FragmentManager     manager     = SupportFragmentManager;
            FragmentTransaction transaction = manager.BeginTransaction();

            transaction.SetTransition((int)FragmentTransit.FragmentFade);

            if (App.STATE.CurrentLibrary == Library.DailyText)
            {
                string date = App.FUNCTIONS.FormatDateTime(DateTime.Now);

                fragment = new ArticleFragment(NavStruct.Parse(date), library);
            }
            else
            {
                fragment = new LibraryFragment();
            }

            transaction.Replace(Resource.Id.content_frame, fragment);
            transaction.Commit();

            int index = App.STATE.Libraries.IndexOf(library);

            list.SetItemChecked(index, true);
            list.SetSelection(index);

            drawer.CloseDrawer(list);

            Console.WriteLine("Current LibraryMode is " + App.STATE.CurrentLibrary.ToString());
        }
        private void LoadArticle(NavStruct article)
        {
            Fragment fragment = new ArticleFragment(article, LibraryMode);

            fragment.RetainInstance = true;

            FragmentManager     manager     = Activity.SupportFragmentManager;
            FragmentTransaction transaction = manager.BeginTransaction();

            transaction.SetTransition((int)FragmentTransit.FragmentFade);
            transaction.Add(Resource.Id.content_frame, fragment, null);
            transaction.AddToBackStack(null);
            transaction.Commit();

            bool memorize = PreferenceManager.GetDefaultSharedPreferences(Activity.ApplicationContext).GetBoolean("memorizeLibraryArticle", true);

            if (memorize)
            {
                ((MainLibraryActivity)Activity).stacks[(int)LibraryMode].Push(fragment);
            }
        }
        private void SelectLibrary(Library library)
        {
            if (IsFinishing)
            {
                return;
            }

            //// If there are fragments loaded, do nothing
            //Stack<Fragment> stack = stacks[(int)App.STATE.CurrentLibrary];
            //if (stack.Count > 0)
            //{
            //    drawer.CloseDrawer(list);
            //    return;
            //}

            App.STATE.CurrentLibrary = library;
            string tag = Enum.GetName(typeof(Library), library);

            FragmentManager     manager     = SupportFragmentManager;
            FragmentTransaction transaction = manager.BeginTransaction();

            transaction.SetTransition((int)FragmentTransit.FragmentFade);
            Fragment fragment = SupportFragmentManager.FindFragmentByTag(tag);

            if (fragment == null)
            {
                if (App.STATE.CurrentLibrary == Library.DailyText)
                {
                    string date = App.FUNCTIONS.FormatDateTime(DateTime.Now);

                    fragment = new ArticleFragment(NavStruct.Parse(date), library);
                    fragment.RetainInstance = true;
                }
                else
                {
                    fragment = new LibraryFragment();
                    fragment.RetainInstance = true;
                }

                if (SelectedFragment != null)
                {
                    transaction.Detach(SelectedFragment);
                }
                transaction.Add(Resource.Id.content_frame, fragment, tag);
            }
            else
            {
                transaction.Detach(SelectedFragment);
                transaction.Attach(fragment);
            }

            // COMMIT TRANSACTION
            if (active)
            {
                transaction.Commit();
            }
            else
            {
                transaction.CommitAllowingStateLoss();
            }

            SelectedFragment = fragment;

            int index = App.STATE.Libraries.IndexOf(library);

            list.SetItemChecked(index, true);
            list.SetSelection(index);

            drawer.CloseDrawer(list);

            Console.WriteLine("Current LibraryMode is " + App.STATE.CurrentLibrary.ToString());
        }