/* * VITacademics * Copyright (C) 2015 Aneesh Neelam <neelam.aneesh@gmail.com> * Copyright (C) 2015 Saurabh Joshi <saurabhjoshi94@outlook.com> * Copyright (C) 2015 Gaurav Agerwala <gauravagerwala@gmail.com> * Copyright (C) 2015 Karthik Balakrishnan <karthikb351@gmail.com> * Copyright (C) 2015 Pulkit Juneja <pulkit.16296@gmail.com> * Copyright (C) 2015 Hemant Jain <hemanham@gmail.com> * Copyright (C) 2015 Darshan Mehta <darshanmehta17@gmail.com> * * This file is part of VITacademics. * * VITacademics is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * VITacademics is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with VITacademics. If not, see <http://www.gnu.org/licenses/>. */ package com.karthikb351.vitinfo2.activity; import android.content.Context; import android.os.Bundle; import android.os.Handler; import android.support.design.widget.NavigationView; import android.support.design.widget.Snackbar; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentTransaction; import android.support.v4.widget.DrawerLayout; import android.support.v7.app.ActionBar; import android.support.v7.app.ActionBarDrawerToggle; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.view.MenuItem; import android.view.View; import android.widget.LinearLayout; import android.widget.TextView; import com.karthikb351.vitinfo2.MainApplication; import com.karthikb351.vitinfo2.R; import com.karthikb351.vitinfo2.api.NetworkController; import com.karthikb351.vitinfo2.api.RequestConfig; import com.karthikb351.vitinfo2.event.RefreshFragmentEvent; import com.karthikb351.vitinfo2.fragment.AboutFragment; import com.karthikb351.vitinfo2.fragment.grades.GradesFragment; import com.karthikb351.vitinfo2.fragment.messages.MessagesFragment; import com.karthikb351.vitinfo2.fragment.schedule.ScheduleFragment; import com.karthikb351.vitinfo2.fragment.settings.SettingsFragment; import com.karthikb351.vitinfo2.model.Status; import com.karthikb351.vitinfo2.utility.Constants; import com.karthikb351.vitinfo2.utility.StringUtils; import com.karthikb351.vitinfo2.utility.ResultListener; import java.util.Arrays; import java.util.List; import de.greenrobot.event.EventBus; import uk.co.chrisjenx.calligraphy.CalligraphyContextWrapper; public class MainActivity extends AppCompatActivity { private String name; private String registerNumber; private List<String> navigationTabs; private LinearLayout mainContent; private DrawerLayout drawerLayout; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initializeData(); initializeView(); } @Override protected void onResume() { super.onResume(); setContentView(R.layout.activity_main); initializeData(); initializeView(); } private void initializeData() { name = ((MainApplication) getApplication()).getDataHolderInstanceInitialized().getName(); registerNumber = ((MainApplication) getApplication()).getDataHolderInstanceInitialized().getRegisterNumber(); } @Override protected void attachBaseContext(Context newBase) { super.attachBaseContext(CalligraphyContextWrapper.wrap(newBase)); } private void initializeView() { TextView headerUsername; TextView headerRegistrationNumber; navigationTabs = Arrays.asList(getResources().getStringArray(R.array.navigation_tab)); drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); mainContent = (LinearLayout) findViewById(R.id.llMainContent); final Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); final ActionBar actionBar = getSupportActionBar(); if (actionBar != null) { ActionBarDrawerToggle mDrawerToggle = new ActionBarDrawerToggle( this, drawerLayout, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close ); drawerLayout.setDrawerListener(mDrawerToggle); actionBar.setDisplayHomeAsUpEnabled(true); actionBar.setHomeButtonEnabled(true); mDrawerToggle.syncState(); } NavigationView navigationView = (NavigationView) findViewById(R.id.navigation_view); navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() { @Override public boolean onNavigationItemSelected(final MenuItem menuItem) { menuItem.setChecked(true); drawerLayout.closeDrawers(); new Handler().postDelayed(new Runnable() { @Override public void run() { switchFragment(menuItem.getItemId()); } }, Constants.DRAWER_CLOSE_TIME_OUT); return true; } }); View headerLayout = navigationView.getHeaderView(0); headerRegistrationNumber = (TextView) headerLayout.findViewById(R.id.header_registration_number); headerUsername = (TextView) headerLayout.findViewById(R.id.header_username); if(StringUtils.checkString(registerNumber)){ headerRegistrationNumber.setText(registerNumber); } if(StringUtils.checkString(name)){ headerUsername.setText(StringUtils.toTitleCase(name.toLowerCase())); } getSupportFragmentManager().beginTransaction().add(R.id.flContent, new ScheduleFragment(), ScheduleFragment.class.getSimpleName()).commitAllowingStateLoss(); } private void switchFragment(int id) { Fragment fragment = null; int position = 0; FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); switch (id) { case R.id.drawer_timetable: fragment = ScheduleFragment.newInstance(); position = 0; break; /*case R.id.drawer_courses: fragment = CoursesFragment.newInstance(); position = 1; break;*/ // case R.id.drawer_home: // fragment = TodayFragment.newInstance(); // position = 2; // break; case R.id.drawer_settings: fragment = SettingsFragment.newInstance(); position = 3; break; case R.id.drawer_messages: fragment = MessagesFragment.newInstance(); position = 4; break; case R.id.drawer_about: fragment = AboutFragment.newInstance(); position = 5; break; case R.id.drawer_grades: fragment = GradesFragment.newInstance(); position = 6; break ; } fragmentTransaction.replace(R.id.flContent, fragment, navigationTabs.get(position)).commit(); } public void pullToRefresh(final ResultListener callback) { NetworkController networkController = NetworkController.getInstance(MainActivity.this); final ResultListener resultListener = new ResultListener() { @Override public void onSuccess() { initializeData(); if (callback != null) { callback.onSuccess(); } try { Snackbar.make(findViewById(R.id.llMainContent), "Success", Snackbar.LENGTH_LONG).show(); } catch (NullPointerException e) { e.printStackTrace(); } EventBus.getDefault().post(new RefreshFragmentEvent()); } @Override public void onFailure(Status status) { if (callback != null) { callback.onFailure(status); } try { Snackbar.make(findViewById(R.id.llMainContent), status.getMessage(), Snackbar.LENGTH_LONG).show(); } catch (NullPointerException e) { e.printStackTrace(); } } }; RequestConfig requestConfig = new RequestConfig(new ResultListener() { @Override public void onSuccess() { ((MainApplication) getApplication()).getDataHolderInstance().refreshData(MainActivity.this, resultListener); } @Override public void onFailure(Status status) { resultListener.onFailure(status); } }); requestConfig.addRequest(RequestConfig.REQUEST_SYSTEM); requestConfig.addRequest(RequestConfig.REQUEST_REFRESH); requestConfig.addRequest(RequestConfig.REQUEST_GRADES); requestConfig.addRequest(RequestConfig.REQUEST_TOKEN); networkController.dispatch(requestConfig); } public LinearLayout getMainContent() { return mainContent; } }