Search in sources :

Example 1 with AndroidDateLabelCreator

use of com.alexstyl.specialdates.date.AndroidDateLabelCreator in project Memento-Calendar by alexstyl.

the class SearchActivity method onCreate.

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_search);
    AppComponent applicationModule = ((MementoApplication) getApplication()).getApplicationModule();
    applicationModule.inject(this);
    peopleEventsSearch = new PeopleEventsSearch(peopleEventsProvider, NameMatcher.INSTANCE);
    DateLabelCreator dateLabelCreator = new AndroidDateLabelCreator(this);
    viewModelFactory = new ContactEventViewModelFactory(new ContactEventLabelCreator(Date.Companion.today(), strings, dateLabelCreator), colors);
    analytics.trackScreen(Screen.SEARCH);
    searchbar = Views.findById(this, R.id.search_searchbar);
    setSupportActionBar(searchbar);
    content = Views.findById(this, R.id.search_content);
    resultView = Views.findById(this, R.id.search_results);
    resultView.setHasFixedSize(true);
    int spacingInPixels = getResources().getDimensionPixelSize(R.dimen.search_result_card_vertical_padding) / HALF;
    resultView.addItemDecoration(new SpacesItemDecoration(spacingInPixels, COLUMNS));
    RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(context());
    resultView.setLayoutManager(mLayoutManager);
    namesSuggestionsView = Views.findById(this, R.id.search_nameday_suggestions);
    if (savedInstanceState != null) {
        searchQuery = savedInstanceState.getString(KEY_QUERY);
    }
    setupSearchField();
    adapter = new SearchResultAdapter(imageLoader, labelCreator);
    adapter.setSearchResultClickListener(listener);
    resultView.setAdapter(adapter);
    searchbar.setOnBackKeyPressedListener(onBackKeyPressedListener);
    setupSearchbarHint(namedayUserSettings);
    if (namedayUserSettings.isEnabled()) {
        GridLayoutManager namedayManager = new GridLayoutManager(context(), 1, RecyclerView.HORIZONTAL, false);
        namesAdapter = NameSuggestionsAdapter.newInstance(onNameSelectedListener, namedayUserSettings, namedayCalendarProvider);
        namesSuggestionsView.setHasFixedSize(true);
        namesSuggestionsView.setLayoutManager(namedayManager);
        namesSuggestionsView.setAdapter(namesAdapter);
        searchbar.setInputType(InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
        searchbar.setOnFocusChangeListener(new ToggleVisibilityOnFocus(namesSuggestionsView));
    } else {
        namesSuggestionsView.setVisibility(GONE);
    }
    if (savedInstanceState == null) {
        fader.hideContentOf(searchbar);
        ViewTreeObserver viewTreeObserver = searchbar.getViewTreeObserver();
        viewTreeObserver.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {

            @Override
            public void onGlobalLayout() {
                searchbar.getViewTreeObserver().removeOnGlobalLayoutListener(this);
                animateShowSearch();
            }

            private void animateShowSearch() {
                TransitionManager.beginDelayedTransition(searchbar, FadeInTransition.createTransition());
                fader.showContent(searchbar);
            }
        });
    }
}
Also used : MementoApplication(com.alexstyl.specialdates.MementoApplication) LinearLayoutManager(android.support.v7.widget.LinearLayoutManager) GridLayoutManager(android.support.v7.widget.GridLayoutManager) AppComponent(com.alexstyl.specialdates.AppComponent) RecyclerView(android.support.v7.widget.RecyclerView) SpacesItemDecoration(com.alexstyl.specialdates.ui.widget.SpacesItemDecoration) AndroidDateLabelCreator(com.alexstyl.specialdates.date.AndroidDateLabelCreator) DateLabelCreator(com.alexstyl.specialdates.date.DateLabelCreator) ViewTreeObserver(android.view.ViewTreeObserver) AndroidDateLabelCreator(com.alexstyl.specialdates.date.AndroidDateLabelCreator)

Example 2 with AndroidDateLabelCreator

use of com.alexstyl.specialdates.date.AndroidDateLabelCreator in project Memento-Calendar by alexstyl.

the class AddEventActivity method onCreate.

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    overridePendingTransition(R.anim.slide_in_from_below, R.anim.stay);
    setContentView(R.layout.activity_add_event);
    AppComponent applicationModule = ((MementoApplication) getApplication()).getApplicationModule();
    applicationModule.inject(this);
    analytics.trackScreen(Screen.ADD_EVENT);
    filePathProvider = new FilePathProvider(this);
    MementoToolbar toolbar = Views.findById(this, R.id.memento_toolbar);
    setSupportActionBar(toolbar);
    toolbar.displayNavigationIconAsClose();
    AvatarPickerView avatarView = Views.findById(this, R.id.add_event_avatar);
    RecyclerView eventsView = Views.findById(this, R.id.add_event_events);
    eventsView.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false));
    eventsView.setHasFixedSize(true);
    ContactDetailsAdapter adapter = new ContactDetailsAdapter(contactDetailsListener);
    eventsView.setAdapter(adapter);
    AddEventContactEventViewModelFactory factory = new AddEventContactEventViewModelFactory(new AndroidDateLabelCreator(this));
    AddEventViewModelFactory addEventFactory = new AddEventViewModelFactory(strings);
    ContactEventsFetcher contactEventsFetcher = new ContactEventsFetcher(getSupportLoaderManager(), this, peopleEventsProvider, factory, addEventFactory);
    WriteableAccountsProvider accountsProvider = WriteableAccountsProvider.from(this);
    ContactOperations contactOperations = new ContactOperations(getContentResolver(), accountsProvider, peopleEventsProvider, ShortDateLabelCreator.INSTANCE);
    MessageDisplayer messageDisplayer = new ToastDisplayer(getApplicationContext());
    ContactOperationsExecutor operationsExecutor = new ContactOperationsExecutor(getContentResolver(), tracker);
    ImageDecoder imageDecoder = new ImageDecoder();
    AvatarPresenter avatarPresenter = new AvatarPresenter(imageLoader, avatarView, createToolbarAnimator(toolbar), imageDecoder);
    EventsPresenter eventsPresenter = new EventsPresenter(contactEventsFetcher, adapter, factory, addEventFactory);
    presenter = new AddContactEventsPresenter(analytics, avatarPresenter, eventsPresenter, contactOperations, messageDisplayer, operationsExecutor);
    permissionChecker = new AndroidPermissions(tracker, this);
    presenter.startPresenting(new OnCameraClickedListener() {

        @RequiresApi(api = Build.VERSION_CODES.M)
        @Override
        public void onPictureRetakenRequested() {
            if (permissionChecker.canReadExternalStorage()) {
                BottomSheetPicturesDialog.includeClearImageOption().show(getSupportFragmentManager(), "picture_pick");
            } else {
                requestExternalStoragePermission();
            }
        }

        @RequiresApi(api = Build.VERSION_CODES.M)
        @Override
        public void onNewPictureTakenRequested() {
            if (permissionChecker.canReadExternalStorage()) {
                BottomSheetPicturesDialog.newInstance().show(getSupportFragmentManager(), "picture_pick");
            } else {
                requestExternalStoragePermission();
            }
        }

        @RequiresApi(api = Build.VERSION_CODES.M)
        private void requestExternalStoragePermission() {
            requestPermissions(new String[] { Manifest.permission.READ_EXTERNAL_STORAGE }, CODE_PERMISSION_EXTERNAL_STORAGE);
        }
    });
}
Also used : LinearLayoutManager(android.support.v7.widget.LinearLayoutManager) MementoToolbar(com.alexstyl.specialdates.ui.widget.MementoToolbar) AndroidDateLabelCreator(com.alexstyl.specialdates.date.AndroidDateLabelCreator) MementoApplication(com.alexstyl.specialdates.MementoApplication) ImageDecoder(com.alexstyl.specialdates.images.ImageDecoder) AvatarPickerView(com.alexstyl.specialdates.addevent.ui.AvatarPickerView) AndroidPermissions(com.alexstyl.specialdates.permissions.AndroidPermissions) AppComponent(com.alexstyl.specialdates.AppComponent) RequiresApi(android.support.annotation.RequiresApi) RecyclerView(android.support.v7.widget.RecyclerView)

Aggregations

LinearLayoutManager (android.support.v7.widget.LinearLayoutManager)2 RecyclerView (android.support.v7.widget.RecyclerView)2 AppComponent (com.alexstyl.specialdates.AppComponent)2 MementoApplication (com.alexstyl.specialdates.MementoApplication)2 AndroidDateLabelCreator (com.alexstyl.specialdates.date.AndroidDateLabelCreator)2 RequiresApi (android.support.annotation.RequiresApi)1 GridLayoutManager (android.support.v7.widget.GridLayoutManager)1 ViewTreeObserver (android.view.ViewTreeObserver)1 AvatarPickerView (com.alexstyl.specialdates.addevent.ui.AvatarPickerView)1 DateLabelCreator (com.alexstyl.specialdates.date.DateLabelCreator)1 ImageDecoder (com.alexstyl.specialdates.images.ImageDecoder)1 AndroidPermissions (com.alexstyl.specialdates.permissions.AndroidPermissions)1 MementoToolbar (com.alexstyl.specialdates.ui.widget.MementoToolbar)1 SpacesItemDecoration (com.alexstyl.specialdates.ui.widget.SpacesItemDecoration)1