From: pk910 Date: Sat, 27 Feb 2016 15:40:39 +0000 (+0100) Subject: alpha 0.0.2 X-Git-Url: http://git.pk910.de/?p=DHBWCampusApp.git;a=commitdiff_plain;h=cea4ee15ef92f521ae962404bd1b3c25042219fa alpha 0.0.2 --- diff --git a/app/build.gradle b/app/build.gradle index f86b286..fbca006 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -68,4 +68,5 @@ dependencies { + diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 4923c3b..54385a9 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -29,14 +29,6 @@ - - - diff --git a/app/src/main/java/de/dhbwloe/campusapp/CampusApp.java b/app/src/main/java/de/dhbwloe/campusapp/CampusApp.java index 15ae6dc..719d829 100644 --- a/app/src/main/java/de/dhbwloe/campusapp/CampusApp.java +++ b/app/src/main/java/de/dhbwloe/campusapp/CampusApp.java @@ -152,8 +152,10 @@ public class CampusApp extends FragmentActivity { AppContext.getNavigationManager().navigatePage("News"); break; case R.id.nav_settings: - Intent settings = new Intent(AppContext.getMainActivity(), SettingsActivity.class); - AppContext.getMainActivity().startActivity(settings); + AppContext.getNavigationManager().navigatePage("Settings"); + break; + case R.id.nav_wifi: + AppContext.getNavigationManager().navigatePage("WifiSettings"); break; case R.id.nav_impressum: AppContext.getNavigationManager().navigatePage("Impressum"); diff --git a/app/src/main/java/de/dhbwloe/campusapp/CampusAppContext.java b/app/src/main/java/de/dhbwloe/campusapp/CampusAppContext.java index 11d3999..e4f0e49 100644 --- a/app/src/main/java/de/dhbwloe/campusapp/CampusAppContext.java +++ b/app/src/main/java/de/dhbwloe/campusapp/CampusAppContext.java @@ -16,6 +16,7 @@ import de.dhbwloe.campusapp.fragments.Mensa; import de.dhbwloe.campusapp.fragments.MensaCard; import de.dhbwloe.campusapp.fragments.News; import de.dhbwloe.campusapp.fragments.PopupFragment; +import de.dhbwloe.campusapp.fragments.Settings; import de.dhbwloe.campusapp.fragments.SplashScreen; import de.dhbwloe.campusapp.fragments.Vorlesungsplan; import de.dhbwloe.campusapp.fragments.WebBrowser; @@ -56,6 +57,7 @@ public class CampusAppContext { new AppPage("News", News.class), new AppPage("WifiSettings", WifiSettings.class), new AppPage("FirstRun", FirstRun.class), + new AppPage("Settings", Settings.class), new AppPage("Impressum", Impressum.class), new AppPage("WebBrowser", WebBrowser.class), new AppPage("WebBrowserPopup", WebBrowser.class, 3) @@ -166,6 +168,11 @@ public class CampusAppContext { return oContextVariables; } + public String getResString(int id, Object... arguments) { + String format = getResString(id); + String res = String.format(format, arguments); + return res; + } public String getResString(int id) { String str = oMainActivity.getResources().getString(id); return str; diff --git a/app/src/main/java/de/dhbwloe/campusapp/SettingsActivity.java b/app/src/main/java/de/dhbwloe/campusapp/SettingsActivity.java deleted file mode 100644 index 86aedcc..0000000 --- a/app/src/main/java/de/dhbwloe/campusapp/SettingsActivity.java +++ /dev/null @@ -1,267 +0,0 @@ -package de.dhbwloe.campusapp; - - -import android.annotation.TargetApi; -import android.content.Context; -import android.content.Intent; -import android.content.res.Configuration; -import android.media.Ringtone; -import android.media.RingtoneManager; -import android.net.Uri; -import android.os.Build; -import android.os.Bundle; -import android.preference.ListPreference; -import android.preference.Preference; -import android.preference.PreferenceActivity; -import android.support.v7.app.ActionBar; -import android.preference.PreferenceFragment; -import android.preference.PreferenceManager; -import android.preference.RingtonePreference; -import android.text.TextUtils; -import android.view.MenuItem; -import android.support.v4.app.NavUtils; - -import java.util.List; - -/** - * A {@link PreferenceActivity} that presents a set of application settings. On - * handset devices, settings are presented as a single list. On tablets, - * settings are split by category, with category headers shown to the left of - * the list of settings. - *

- * See - * Android Design: Settings for design guidelines and the Settings - * API Guide for more information on developing a Settings UI. - */ -public class SettingsActivity extends AppCompatPreferenceActivity { - /** - * A preference value change listener that updates the preference's summary - * to reflect its new value. - */ - private static Preference.OnPreferenceChangeListener sBindPreferenceSummaryToValueListener = new Preference.OnPreferenceChangeListener() { - @Override - public boolean onPreferenceChange(Preference preference, Object value) { - String stringValue = value.toString(); - - if (preference instanceof ListPreference) { - // For list preferences, look up the correct display value in - // the preference's 'entries' list. - ListPreference listPreference = (ListPreference) preference; - int index = listPreference.findIndexOfValue(stringValue); - - // Set the summary to reflect the new value. - preference.setSummary( - index >= 0 - ? listPreference.getEntries()[index] - : null); - - } else if (preference instanceof RingtonePreference) { - // For ringtone preferences, look up the correct display value - // using RingtoneManager. - if (TextUtils.isEmpty(stringValue)) { - // Empty values correspond to 'silent' (no ringtone). - preference.setSummary(R.string.pref_ringtone_silent); - - } else { - Ringtone ringtone = RingtoneManager.getRingtone( - preference.getContext(), Uri.parse(stringValue)); - - if (ringtone == null) { - // Clear the summary if there was a lookup error. - preference.setSummary(null); - } else { - // Set the summary to reflect the new ringtone display - // name. - String name = ringtone.getTitle(preference.getContext()); - preference.setSummary(name); - } - } - - } else { - // For all other preferences, set the summary to the value's - // simple string representation. - preference.setSummary(stringValue); - } - return true; - } - }; - - /** - * Helper method to determine if the device has an extra-large screen. For - * example, 10" tablets are extra-large. - */ - private static boolean isXLargeTablet(Context context) { - return (context.getResources().getConfiguration().screenLayout - & Configuration.SCREENLAYOUT_SIZE_MASK) >= Configuration.SCREENLAYOUT_SIZE_XLARGE; - } - - /** - * Binds a preference's summary to its value. More specifically, when the - * preference's value is changed, its summary (line of text below the - * preference title) is updated to reflect the value. The summary is also - * immediately updated upon calling this method. The exact display format is - * dependent on the type of preference. - * - * @see #sBindPreferenceSummaryToValueListener - */ - private static void bindPreferenceSummaryToValue(Preference preference) { - // Set the listener to watch for value changes. - preference.setOnPreferenceChangeListener(sBindPreferenceSummaryToValueListener); - - // Trigger the listener immediately with the preference's - // current value. - sBindPreferenceSummaryToValueListener.onPreferenceChange(preference, - PreferenceManager - .getDefaultSharedPreferences(preference.getContext()) - .getString(preference.getKey(), "")); - } - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setupActionBar(); - } - - /** - * Set up the {@link android.app.ActionBar}, if the API is available. - */ - private void setupActionBar() { - ActionBar actionBar = getSupportActionBar(); - if (actionBar != null) { - // Show the Up button in the action bar. - actionBar.setDisplayHomeAsUpEnabled(true); - } - } - - @Override - public boolean onMenuItemSelected(int featureId, MenuItem item) { - int id = item.getItemId(); - if (id == android.R.id.home) { - if (!super.onMenuItemSelected(featureId, item)) { - NavUtils.navigateUpFromSameTask(this); - } - return true; - } - return super.onMenuItemSelected(featureId, item); - } - - /** - * {@inheritDoc} - */ - @Override - public boolean onIsMultiPane() { - return isXLargeTablet(this); - } - - /** - * {@inheritDoc} - */ - @Override - @TargetApi(Build.VERSION_CODES.HONEYCOMB) - public void onBuildHeaders(List

target) { - loadHeadersFromResource(R.xml.pref_headers, target); - } - - /** - * This method stops fragment injection in malicious applications. - * Make sure to deny any unknown fragments here. - */ - protected boolean isValidFragment(String fragmentName) { - return PreferenceFragment.class.getName().equals(fragmentName) - || GeneralPreferenceFragment.class.getName().equals(fragmentName) - || DataSyncPreferenceFragment.class.getName().equals(fragmentName) - || NotificationPreferenceFragment.class.getName().equals(fragmentName); - } - - /** - * This fragment shows general preferences only. It is used when the - * activity is showing a two-pane settings UI. - */ - @TargetApi(Build.VERSION_CODES.HONEYCOMB) - public static class GeneralPreferenceFragment extends PreferenceFragment { - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - addPreferencesFromResource(R.xml.pref_general); - setHasOptionsMenu(true); - - // Bind the summaries of EditText/List/Dialog/Ringtone preferences - // to their values. When their values change, their summaries are - // updated to reflect the new value, per the Android Design - // guidelines. - bindPreferenceSummaryToValue(findPreference("example_text")); - bindPreferenceSummaryToValue(findPreference("example_list")); - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - int id = item.getItemId(); - if (id == android.R.id.home) { - startActivity(new Intent(getActivity(), SettingsActivity.class)); - return true; - } - return super.onOptionsItemSelected(item); - } - } - - /** - * This fragment shows notification preferences only. It is used when the - * activity is showing a two-pane settings UI. - */ - @TargetApi(Build.VERSION_CODES.HONEYCOMB) - public static class NotificationPreferenceFragment extends PreferenceFragment { - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - addPreferencesFromResource(R.xml.pref_notification); - setHasOptionsMenu(true); - - // Bind the summaries of EditText/List/Dialog/Ringtone preferences - // to their values. When their values change, their summaries are - // updated to reflect the new value, per the Android Design - // guidelines. - bindPreferenceSummaryToValue(findPreference("notifications_new_message_ringtone")); - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - int id = item.getItemId(); - if (id == android.R.id.home) { - startActivity(new Intent(getActivity(), SettingsActivity.class)); - return true; - } - return super.onOptionsItemSelected(item); - } - } - - /** - * This fragment shows data and sync preferences only. It is used when the - * activity is showing a two-pane settings UI. - */ - @TargetApi(Build.VERSION_CODES.HONEYCOMB) - public static class DataSyncPreferenceFragment extends PreferenceFragment { - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - addPreferencesFromResource(R.xml.pref_data_sync); - setHasOptionsMenu(true); - - // Bind the summaries of EditText/List/Dialog/Ringtone preferences - // to their values. When their values change, their summaries are - // updated to reflect the new value, per the Android Design - // guidelines. - bindPreferenceSummaryToValue(findPreference("sync_frequency")); - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - int id = item.getItemId(); - if (id == android.R.id.home) { - startActivity(new Intent(getActivity(), SettingsActivity.class)); - return true; - } - return super.onOptionsItemSelected(item); - } - } -} diff --git a/app/src/main/java/de/dhbwloe/campusapp/Tools.java b/app/src/main/java/de/dhbwloe/campusapp/Tools.java index 168446e..5829802 100644 --- a/app/src/main/java/de/dhbwloe/campusapp/Tools.java +++ b/app/src/main/java/de/dhbwloe/campusapp/Tools.java @@ -6,6 +6,8 @@ import android.widget.AdapterView; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; +import java.util.Calendar; +import java.util.Date; import javax.crypto.Cipher; import javax.crypto.spec.SecretKeySpec; @@ -70,4 +72,29 @@ public class Tools { } } + public static String getWeekdayString(long date) { + return getWeekdayString(date, true); + } + + public static String getWeekdayString(long date, boolean fullString) { + return getWeekdayString(new Date(date * 1000), fullString); + } + + public static String getWeekdayString(Date date) { + return getWeekdayString(date, true); + } + + public static String getWeekdayString(Date date, boolean fullString) { + int weekdayResIds[]; + if(fullString) + weekdayResIds = new int[] { R.string.week_sunday, R.string.week_monday, R.string.week_tuesday, R.string.week_wednesday, R.string.week_thursday, R.string.week_friday, R.string.week_saturday }; + else + weekdayResIds = new int[] { R.string.week_sunday_short, R.string.week_monday_short, R.string.week_tuesday_short, R.string.week_wednesday_short, R.string.week_thursday_short, R.string.week_friday_short, R.string.week_saturday_short }; + Calendar cal = Calendar.getInstance(); + cal.setTime(date); + int dow = cal.get(Calendar.DAY_OF_WEEK); + int weekdayResId = weekdayResIds[dow-1]; + return CampusAppContext.getInstance().getResString(weekdayResId); + } + } diff --git a/app/src/main/java/de/dhbwloe/campusapp/database/NewsDatabaseHelper.java b/app/src/main/java/de/dhbwloe/campusapp/database/NewsDatabaseHelper.java index e71066d..f80aaac 100644 --- a/app/src/main/java/de/dhbwloe/campusapp/database/NewsDatabaseHelper.java +++ b/app/src/main/java/de/dhbwloe/campusapp/database/NewsDatabaseHelper.java @@ -77,8 +77,8 @@ public class NewsDatabaseHelper { public NewsItem[] getNewsItems(String source, long timeFrom, long timeTo) { String[] whereArgs = new String[] { source, - Long.toString(timeFrom), - Long.toString(timeTo) + Long.toString(timeTo), + Long.toString(timeFrom) }; Cursor resultSet = database.rawQuery("SELECT Id, Source, Time, UniqueId, ChkSum, Title, Summary, Content, Link, Categories FROM News WHERE Source = ? AND Time >= ? AND Time <= ?", whereArgs); ArrayList results = new ArrayList(); diff --git a/app/src/main/java/de/dhbwloe/campusapp/fragments/AppSearch.java b/app/src/main/java/de/dhbwloe/campusapp/fragments/AppSearch.java index 3ca9e02..10041e3 100644 --- a/app/src/main/java/de/dhbwloe/campusapp/fragments/AppSearch.java +++ b/app/src/main/java/de/dhbwloe/campusapp/fragments/AppSearch.java @@ -62,7 +62,7 @@ public class AppSearch extends CampusAppFragment { AppContext = CampusAppContext.getInstance(); oFragmentView = inflater.inflate(R.layout.fragment_appsearch, container, false); - AppContext.setTitle("Search: " + sSearchQuery); + AppContext.setTitle(AppContext.getResString(R.string.appsearch_title, sSearchQuery)); ViewPager viewPager = (ViewPager) oFragmentView.findViewById(R.id.viewpager); setupViewPager(viewPager); @@ -84,19 +84,19 @@ public class AppSearch extends CampusAppFragment { CampusAppFragment fragment; Bundle args = new Bundle(); args.putString("query", sSearchQuery); - Log.i("AppSearch", "New result instances: "+sSearchQuery); + Log.i("AppSearch", "New result instances: " + sSearchQuery); fragment = new AppSearchInternal(); fragment.setArguments(args); - adapter.addFragment("Campus App", fragment); + adapter.addFragment(AppContext.getResString(R.string.appsearch_inapp), fragment); fragment = new AppSearchDhbw(); fragment.setArguments(args); - adapter.addFragment("DHBW Suche", fragment); + adapter.addFragment(AppContext.getResString(R.string.appsearch_indhbw), fragment); fragment = new AppSearchStuv(); fragment.setArguments(args); - adapter.addFragment("Stuv Suche", fragment); + adapter.addFragment(AppContext.getResString(R.string.appsearch_instuv), fragment); } viewPager.setAdapter(adapter); diff --git a/app/src/main/java/de/dhbwloe/campusapp/fragments/AppSearchDhbw.java b/app/src/main/java/de/dhbwloe/campusapp/fragments/AppSearchDhbw.java index 3159aca..7956c1f 100644 --- a/app/src/main/java/de/dhbwloe/campusapp/fragments/AppSearchDhbw.java +++ b/app/src/main/java/de/dhbwloe/campusapp/fragments/AppSearchDhbw.java @@ -9,6 +9,7 @@ import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.ListView; +import android.widget.ProgressBar; import java.util.ArrayList; import java.util.List; @@ -30,6 +31,7 @@ public class AppSearchDhbw extends CampusAppFragment implements AppSearchProvide private AppSearchListAdapter appSearchAdapter; private DhbwSearchHelper seachHelper; private ArrayList searchResultItems = new ArrayList(); + private ProgressBar progressBar; @Override public void onCreate(Bundle savedInstanceState) { @@ -96,6 +98,8 @@ public class AppSearchDhbw extends CampusAppFragment implements AppSearchProvide if(bQueryExecuted && !reset) return; bQueryExecuted = true; + progressBar = (ProgressBar) oFragmentView.findViewById(R.id.searchProgress); + progressBar.setVisibility(View.VISIBLE); searchResultItems.clear(); @@ -107,6 +111,7 @@ public class AppSearchDhbw extends CampusAppFragment implements AppSearchProvide Log.i("SearchDhbw", "Success: "+results.size()); for(AppSearchListItem result : results) searchResultItems.add(result); + progressBar.setVisibility(View.GONE); if(appSearchAdapter != null) appSearchAdapter.notifyDataSetChanged(); else @@ -116,6 +121,7 @@ public class AppSearchDhbw extends CampusAppFragment implements AppSearchProvide @Override public void onSearchFailed(String error) { Log.i("SearchDhbw", "Failed: " + error); + progressBar.setVisibility(View.GONE); } }); } diff --git a/app/src/main/java/de/dhbwloe/campusapp/fragments/AppSearchInternal.java b/app/src/main/java/de/dhbwloe/campusapp/fragments/AppSearchInternal.java index 2c10dbb..ddc662e 100644 --- a/app/src/main/java/de/dhbwloe/campusapp/fragments/AppSearchInternal.java +++ b/app/src/main/java/de/dhbwloe/campusapp/fragments/AppSearchInternal.java @@ -9,6 +9,7 @@ import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.ListView; +import android.widget.ProgressBar; import android.widget.TextView; import java.util.ArrayList; diff --git a/app/src/main/java/de/dhbwloe/campusapp/fragments/AppSearchStuv.java b/app/src/main/java/de/dhbwloe/campusapp/fragments/AppSearchStuv.java index 3aad66b..b1e6f83 100644 --- a/app/src/main/java/de/dhbwloe/campusapp/fragments/AppSearchStuv.java +++ b/app/src/main/java/de/dhbwloe/campusapp/fragments/AppSearchStuv.java @@ -9,6 +9,7 @@ import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.ListView; +import android.widget.ProgressBar; import java.util.ArrayList; import java.util.List; @@ -32,6 +33,7 @@ public class AppSearchStuv extends CampusAppFragment implements AppSearchProvide private AppSearchListAdapter appSearchAdapter; private StuvSearchHelper seachHelper; private ArrayList searchResultItems = new ArrayList(); + private ProgressBar progressBar; @Override public void onCreate(Bundle savedInstanceState) { @@ -94,6 +96,8 @@ public class AppSearchStuv extends CampusAppFragment implements AppSearchProvide if(bQueryExecuted && !reset) return; bQueryExecuted = true; + progressBar = (ProgressBar) oFragmentView.findViewById(R.id.searchProgress); + progressBar.setVisibility(View.VISIBLE); searchResultItems.clear(); @@ -105,6 +109,7 @@ public class AppSearchStuv extends CampusAppFragment implements AppSearchProvide Log.i("SearchStuv", "Success: "+results.size()); for(AppSearchListItem result : results) searchResultItems.add(result); + progressBar.setVisibility(View.GONE); if(appSearchAdapter != null) appSearchAdapter.notifyDataSetChanged(); } @@ -112,6 +117,7 @@ public class AppSearchStuv extends CampusAppFragment implements AppSearchProvide @Override public void onSearchFailed(String error) { Log.i("SearchDhbw", "Failed: " + error); + progressBar.setVisibility(View.GONE); } }); diff --git a/app/src/main/java/de/dhbwloe/campusapp/fragments/Dashboard.java b/app/src/main/java/de/dhbwloe/campusapp/fragments/Dashboard.java index 79d1f65..574a4a7 100644 --- a/app/src/main/java/de/dhbwloe/campusapp/fragments/Dashboard.java +++ b/app/src/main/java/de/dhbwloe/campusapp/fragments/Dashboard.java @@ -10,6 +10,7 @@ import android.view.InflateException; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.widget.ImageView; import de.dhbwloe.campusapp.R; import de.dhbwloe.campusapp.search.SearchIndices; @@ -22,9 +23,9 @@ public class Dashboard extends CampusAppFragment { new SearchIndices("Dashboard", true) {{ setUpdateTime(1); setTarget("#Dashboard"); - setTitle("Dashboard"); - setDescription("Dashboard der App :)"); - addKeyWord("home, dashboard, start, übersicht, overview"); + setTitle(R.string.search_dashboard_title); + setDescription(R.string.search_dashboard_description); + addKeyWord(R.string.search_dashboard_keywords); }}, }; } @@ -33,8 +34,6 @@ public class Dashboard extends CampusAppFragment { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - - AppContext.getDatabaseManager().setRuntimeCache("CourseName", "tif13a"); } @Override @@ -50,7 +49,7 @@ public class Dashboard extends CampusAppFragment { view = inflater.inflate(R.layout.fragment_dashboard, container, false); } catch (InflateException e) { } - AppContext.setTitle("Dashboard"); + AppContext.setTitle(AppContext.getResString(R.string.dashboard_title)); String kursTag = AppContext.getDatabaseManager().getRuntimeCache("CourseName"); if(kursTag == null || kursTag.isEmpty()) { @@ -58,6 +57,23 @@ public class Dashboard extends CampusAppFragment { timetable.setVisibility(View.GONE); } + ImageView image; + image = (ImageView)view.findViewById(R.id.timetable_image); + image.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + AppContext.getNavigationManager().navigatePage("Vorlesungsplan"); + } + }); + + image = (ImageView)view.findViewById(R.id.mensa_image); + image.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + AppContext.getNavigationManager().navigatePage("Mensa"); + } + }); + return view; } } diff --git a/app/src/main/java/de/dhbwloe/campusapp/fragments/DashboardMensa.java b/app/src/main/java/de/dhbwloe/campusapp/fragments/DashboardMensa.java index 2d473a5..ccc2589 100644 --- a/app/src/main/java/de/dhbwloe/campusapp/fragments/DashboardMensa.java +++ b/app/src/main/java/de/dhbwloe/campusapp/fragments/DashboardMensa.java @@ -17,6 +17,7 @@ import java.util.Date; import de.dhbwloe.campusapp.CampusAppContext; import de.dhbwloe.campusapp.CampusAppFragment; import de.dhbwloe.campusapp.R; +import de.dhbwloe.campusapp.Tools; import de.dhbwloe.campusapp.mensaplan.MensaTagesplan; /** @@ -90,13 +91,11 @@ public class DashboardMensa extends CampusAppFragment { else if(now < date + (86400*2)) datetext = AppContext.getResString(R.string.dashboard_calendar_tomorrow); else { - int weekdayResIds[] = new int[] { R.string.week_sunday, R.string.week_monday, R.string.week_tuesday, R.string.week_wednesday, R.string.week_thursday, R.string.week_friday, R.string.week_saturday }; - Calendar cal = Calendar.getInstance(); - cal.setTime(new Date(date * 1000)); - int dow = cal.get(Calendar.DAY_OF_WEEK); - SimpleDateFormat dateFormat = new SimpleDateFormat("dd.MM"); + Date dateObj = new Date(date * 1000); + String dayStr = Tools.getWeekdayString(dateObj); + SimpleDateFormat dateFormat = new SimpleDateFormat(AppContext.getResString(R.string.timeformat_dashboard_mensa)); - datetext = AppContext.getResString(weekdayResIds[dow]) + ", " + dateFormat.format(cal.getTime()); + datetext = dayStr + ", " + dateFormat.format(dateObj); } return datetext; } diff --git a/app/src/main/java/de/dhbwloe/campusapp/fragments/DashboardVorlesungsplan.java b/app/src/main/java/de/dhbwloe/campusapp/fragments/DashboardVorlesungsplan.java index e67b364..bb0105d 100644 --- a/app/src/main/java/de/dhbwloe/campusapp/fragments/DashboardVorlesungsplan.java +++ b/app/src/main/java/de/dhbwloe/campusapp/fragments/DashboardVorlesungsplan.java @@ -140,7 +140,7 @@ public class DashboardVorlesungsplan extends CampusAppFragment { Date date; TextView leftCol, rightCol = null; RelativeLayout.LayoutParams params; - SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm"); + SimpleDateFormat dateFormat = new SimpleDateFormat(AppContext.getResString(R.string.timeformat_dashboard_vorlesungsplan_time)); int firstLeftColId = 0; if(events.size() > 0) { @@ -208,13 +208,10 @@ public class DashboardVorlesungsplan extends CampusAppFragment { else if(date1DayId == tomorrowDayId) datetext = AppContext.getResString(R.string.dashboard_calendar_tomorrow); else { - int weekdayResIds[] = new int[] { R.string.week_sunday, R.string.week_monday, R.string.week_tuesday, R.string.week_wednesday, R.string.week_thursday, R.string.week_friday, R.string.week_saturday }; - Calendar cal = Calendar.getInstance(); - cal.setTime(eventDate); - int dow = cal.get(Calendar.DAY_OF_WEEK); - SimpleDateFormat dateFormat = new SimpleDateFormat("dd.MM"); + String dayStr = Tools.getWeekdayString(eventDate); + SimpleDateFormat dateFormat = new SimpleDateFormat(AppContext.getResString(R.string.timeformat_dashboard_vorlesungsplan_date)); - datetext = AppContext.getResString(weekdayResIds[dow]) + ", " + dateFormat.format(eventDate); + datetext = dayStr + ", " + dateFormat.format(eventDate); } return datetext; } diff --git a/app/src/main/java/de/dhbwloe/campusapp/fragments/FirstRun.java b/app/src/main/java/de/dhbwloe/campusapp/fragments/FirstRun.java index b84a9ab..ac67163 100644 --- a/app/src/main/java/de/dhbwloe/campusapp/fragments/FirstRun.java +++ b/app/src/main/java/de/dhbwloe/campusapp/fragments/FirstRun.java @@ -7,6 +7,7 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; +import android.widget.EditText; import de.dhbwloe.campusapp.CampusAppFragment; import de.dhbwloe.campusapp.R; @@ -15,23 +16,48 @@ import de.dhbwloe.campusapp.R; * A simple {@link Fragment} subclass. */ public class FirstRun extends CampusAppFragment { + private View view; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - View view = inflater.inflate(R.layout.fragment_first_run, container, false); + view = inflater.inflate(R.layout.fragment_first_run, container, false); AppContext.setTitle("Campus App"); + final FirstRun that = this; Button startAppBtn = (Button)view.findViewById(R.id.startAppBtn); startAppBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - AppContext.getDatabaseManager().setRuntimeCache("AppStartCounter", "1"); - AppContext.getNavigationManager().navigatePage("SplashScreen", null, false); + that.startApp(); + } + }); + + Button courseSendBtn = (Button)view.findViewById(R.id.courseSubmitBtn); + courseSendBtn.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if(that.setCourse()) + that.startApp(); } }); return view; } + private void startApp() { + AppContext.getDatabaseManager().setRuntimeCache("AppStartCounter", "1"); + AppContext.getNavigationManager().navigatePage("SplashScreen", null, false); + } + + private boolean setCourse() { + EditText courseInput = (EditText)view.findViewById(R.id.courseInput); + String courseName = courseInput.getText().toString(); + if(courseName.length() <= 3) + return false; + + AppContext.getDatabaseManager().setRuntimeCache("CourseName", courseName); + return true; + } + } diff --git a/app/src/main/java/de/dhbwloe/campusapp/fragments/Impressum.java b/app/src/main/java/de/dhbwloe/campusapp/fragments/Impressum.java index a888f2a..66e09b3 100644 --- a/app/src/main/java/de/dhbwloe/campusapp/fragments/Impressum.java +++ b/app/src/main/java/de/dhbwloe/campusapp/fragments/Impressum.java @@ -7,6 +7,7 @@ import android.support.v4.app.FragmentActivity; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.widget.TextView; import de.dhbwloe.campusapp.CampusAppFragment; import de.dhbwloe.campusapp.R; @@ -22,9 +23,9 @@ public class Impressum extends CampusAppFragment { new SearchIndices("Impressum", true) {{ setUpdateTime(1); setTarget("#Impressum"); - setTitle("Impressum"); - setDescription("Impressum der App"); - addKeyWord("impressum, kontakt, autor, author, contact, imprint"); + setTitle(R.string.search_impressum_title); + setDescription(R.string.search_impressum_description); + addKeyWord(R.string.search_impressum_keywords); }}, }; } @@ -33,7 +34,17 @@ public class Impressum extends CampusAppFragment { public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_impressum, container, false); - AppContext.setTitle("Impressum"); + AppContext.setTitle(AppContext.getResString(R.string.impressum_title)); + + TextView urlView = (TextView) view.findViewById(R.id.sourceUrl); + urlView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Bundle args = new Bundle(); + args.putString("url", "http://dev.pk910.de/DHBWCampusApp"); + AppContext.getNavigationManager().navigatePage("WebBrowser", args, false); + } + }); return view; } diff --git a/app/src/main/java/de/dhbwloe/campusapp/fragments/Mensa.java b/app/src/main/java/de/dhbwloe/campusapp/fragments/Mensa.java index 2d641de..3f911a2 100644 --- a/app/src/main/java/de/dhbwloe/campusapp/fragments/Mensa.java +++ b/app/src/main/java/de/dhbwloe/campusapp/fragments/Mensa.java @@ -21,6 +21,7 @@ import java.util.List; import de.dhbwloe.campusapp.CampusAppFragment; import de.dhbwloe.campusapp.R; +import de.dhbwloe.campusapp.Tools; import de.dhbwloe.campusapp.search.SearchIndices; /** @@ -33,9 +34,9 @@ public class Mensa extends CampusAppFragment { new SearchIndices("Mensa", true) {{ setUpdateTime(1); setTarget("#Mensa"); - setTitle("Mensa"); - setDescription("Aktuelle Mensapläne"); - addKeyWord("mensa, kantine, essen, mittagessen, mensaplan, plan, hunger, mittag"); + setTitle(R.string.search_mensa_title); + setDescription(R.string.search_mensa_description); + addKeyWord(R.string.search_mensa_keywords); }}, }; } @@ -59,7 +60,7 @@ public class Mensa extends CampusAppFragment { } } - AppContext.setTitle("Mensa Speiseplan"); + AppContext.setTitle(AppContext.getResString(R.string.mensa_title)); /* toolbar = (Toolbar) view.findViewById(R.id.toolbar); @@ -85,7 +86,6 @@ public class Mensa extends CampusAppFragment { if(viewDate < now) now = viewDate; - int weekdayResIds[] = new int[] { R.string.week_monday_short, R.string.week_tuesday_short, R.string.week_wednesday_short, R.string.week_thursday_short, R.string.week_friday_short, R.string.week_saturday_short, R.string.week_sunday_short }; Calendar cal = Calendar.getInstance(); cal.setTime(new Date(now * 1000)); cal.set(Calendar.HOUR_OF_DAY, 0); @@ -133,7 +133,7 @@ public class Mensa extends CampusAppFragment { } lastWeekday = weekday; - title = AppContext.getResString(weekdayResIds[weekday]); + title = Tools.getWeekdayString(date, false); bundle.putLong("date", date); adapter.addFragment(bundle, title); } diff --git a/app/src/main/java/de/dhbwloe/campusapp/fragments/MensaCard.java b/app/src/main/java/de/dhbwloe/campusapp/fragments/MensaCard.java index e465d72..93b9132 100644 --- a/app/src/main/java/de/dhbwloe/campusapp/fragments/MensaCard.java +++ b/app/src/main/java/de/dhbwloe/campusapp/fragments/MensaCard.java @@ -26,24 +26,11 @@ import de.dhbwloe.campusapp.search.SearchIndices; public class MensaCard extends CampusAppFragment { private View view; - /* implement this for search results ;) */ - public static SearchIndices[] GetSearchIndices() { - return new SearchIndices[] { - new SearchIndices("MensaCard", true) {{ - setUpdateTime(1); - setTarget("#MensaCard"); - setTitle("Mensakarte auslesen"); - setDescription("Mensakarte Kontostand"); - addKeyWord("mensa, kantine, essen, mittagessen, mensaplan, karte, ausweis, geld, kontostand, euro"); - }}, - }; - } - @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { view = inflater.inflate(R.layout.fragment_mensa_card, container, false); - AppContext.setTitle("Mensa Guthaben"); + AppContext.setTitle(AppContext.getResString(R.string.mensacard_title)); Bundle args = getArguments(); if(args != null && args.containsKey("balance")) { diff --git a/app/src/main/java/de/dhbwloe/campusapp/fragments/MensaTagesplan.java b/app/src/main/java/de/dhbwloe/campusapp/fragments/MensaTagesplan.java index 0a6f53c..7216738 100644 --- a/app/src/main/java/de/dhbwloe/campusapp/fragments/MensaTagesplan.java +++ b/app/src/main/java/de/dhbwloe/campusapp/fragments/MensaTagesplan.java @@ -37,8 +37,8 @@ public class MensaTagesplan extends CampusAppFragment { setActiveOnLoad = true; return; } - SimpleDateFormat titleDateFormater = new SimpleDateFormat("dd.MM.yyyy"); - AppContext.setTitle("Mensa: " + titleDateFormater.format(viewPlanDate)); + SimpleDateFormat titleDateFormater = new SimpleDateFormat(AppContext.getResString(R.string.timeformat_mensa_titledate)); + AppContext.setTitle(AppContext.getResString(R.string.mensa_dayplan_title, titleDateFormater.format(viewPlanDate))); } private void setupPlanDate() { diff --git a/app/src/main/java/de/dhbwloe/campusapp/fragments/News.java b/app/src/main/java/de/dhbwloe/campusapp/fragments/News.java index 6a48b68..5efb4f7 100644 --- a/app/src/main/java/de/dhbwloe/campusapp/fragments/News.java +++ b/app/src/main/java/de/dhbwloe/campusapp/fragments/News.java @@ -7,10 +7,21 @@ import android.support.v4.app.FragmentActivity; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.widget.AdapterView; +import android.widget.CheckBox; +import android.widget.CompoundButton; +import android.widget.ListView; + +import java.util.Collections; +import java.util.Comparator; +import java.util.Date; +import java.util.ArrayList; import de.dhbwloe.campusapp.CampusAppFragment; import de.dhbwloe.campusapp.R; +import de.dhbwloe.campusapp.news.NewsItem; import de.dhbwloe.campusapp.search.SearchIndices; +import de.dhbwloe.campusapp.vorlesungen.CourseEvent; /** * A simple {@link Fragment} subclass. @@ -22,21 +33,106 @@ public class News extends CampusAppFragment { new SearchIndices("News", true) {{ setUpdateTime(1); setTarget("#News"); - setTitle("News"); - setDescription("News der DHBW & Stuv"); - addKeyWord("news, dhbw, stuv, termin, termine"); + setTitle(R.string.search_news_title); + setDescription(R.string.search_news_description); + addKeyWord(R.string.search_news_keywords); }}, }; } + private View view; + private NewsListAdapter listAdapter; + private ArrayList newsListItems = new ArrayList(); + @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - View view = inflater.inflate(R.layout.fragment_news, container, false); - AppContext.setTitle("News"); + view = inflater.inflate(R.layout.fragment_news, container, false); + AppContext.setTitle(AppContext.getResString(R.string.news_title)); + + ListView newsItemsList = (ListView) view.findViewById(R.id.newsListView); + listAdapter = new NewsListAdapter(view.getContext(), R.layout.fragment_news_item, newsListItems); + newsItemsList.setAdapter(listAdapter); + + CompoundButton.OnCheckedChangeListener changeListener = new CompoundButton.OnCheckedChangeListener() { + @Override + public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { + refreshNewsItems(); + } + }; + ((CheckBox) view.findViewById(R.id.showDhbwNews)).setOnCheckedChangeListener(changeListener); + ((CheckBox) view.findViewById(R.id.showStuvNews)).setOnCheckedChangeListener(changeListener); + ((CheckBox) view.findViewById(R.id.showStuvEvents)).setOnCheckedChangeListener(changeListener); + newsItemsList.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView parent, View view, int position, long id) { + NewsListItem item = newsListItems.get(position); + if (item == null) + return; + + String link = item.getLink(); + if(link != null) { + Bundle args = new Bundle(); + args.putString("url", link); + AppContext.getNavigationManager().navigatePage("WebBrowser", args, false); + } + } + }); return view; } + @Override + public void onResume() { + super.onResume(); + refreshNewsItems(); + } + + private void refreshNewsItems() { + newsListItems.clear(); + + CheckBox showDhbwNewsChkbok = (CheckBox) view.findViewById(R.id.showDhbwNews); + CheckBox showStuvNewsChkbok = (CheckBox) view.findViewById(R.id.showStuvNews); + CheckBox showStuvEventsChkbok = (CheckBox) view.findViewById(R.id.showStuvEvents); + + if(showDhbwNewsChkbok.isChecked()) { + loadNewsSource("DHBW", true); + } + if(showStuvNewsChkbok.isChecked()) { + loadNewsSource("STUV", false); + } + if(showStuvEventsChkbok.isChecked()) { + loadEventsSource("STUV", false); + } + + Collections.sort(newsListItems, new Comparator() { + @Override + public int compare(NewsListItem item2, NewsListItem item1) { + long now = (new Date()).getTime()/1000; + return (int) (item2.getTimeDifference(now) - item1.getTimeDifference(now)); + } + }); + listAdapter.notifyDataSetChanged(); + } + + private void loadNewsSource(String sourceName, boolean isDhbw) { + long now = (new Date()).getTime() / 1000; + + NewsItem[] news = AppContext.getDatabaseManager().getNewsItems(sourceName, now, now - (86400 * 30 * 6)); // load 6 month + for(NewsItem cnews : news) { + NewsListItem listItem = new NewsListItem(cnews, isDhbw); + newsListItems.add(listItem); + } + } + + private void loadEventsSource(String sourceName, boolean isDhbw) { + long now = (new Date()).getTime() / 1000; + + CourseEvent[] events = AppContext.getDatabaseManager().getCourseCalendarTimetable(sourceName, now, 30 * 6); // load 6 month + for(CourseEvent event : events) { + NewsListItem listItem = new NewsListItem(event, isDhbw); + newsListItems.add(listItem); + } + } } diff --git a/app/src/main/java/de/dhbwloe/campusapp/fragments/NewsListAdapter.java b/app/src/main/java/de/dhbwloe/campusapp/fragments/NewsListAdapter.java new file mode 100644 index 0000000..6de086e --- /dev/null +++ b/app/src/main/java/de/dhbwloe/campusapp/fragments/NewsListAdapter.java @@ -0,0 +1,75 @@ +package de.dhbwloe.campusapp.fragments; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ArrayAdapter; +import android.widget.ImageView; +import android.widget.TextView; + +import java.util.ArrayList; + +import de.dhbwloe.campusapp.R; + +/** + * Created by pk910 on 27.02.2016. + */ +public class NewsListAdapter extends ArrayAdapter { + private Context context; + private int layoutResourceId; + private ArrayList data = new ArrayList(); + + public NewsListAdapter(Context context, int layoutResourceId, ArrayList data) { + super(context, layoutResourceId, data); + this.layoutResourceId = layoutResourceId; + this.context = context; + this.data = data; + } + + @Override + public View getView(int position, View convertView, ViewGroup parent) { + View row = convertView; + RecordHolder holder = null; + + if (row == null) { + LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); + row = inflater.inflate(layoutResourceId, parent, false); + + holder = new RecordHolder(row); + row.setTag(holder); + } else { + holder = (RecordHolder) row.getTag(); + } + + final NewsListAdapter that = this; + final NewsListItem item = data.get(position); + + holder.newsTitle.setText(item.getFormatedDate() + ": " + item.getTitle()); + holder.newsDescription.setText(item.getDescription()); + if(item.isDhbwNews()) { + holder.newsDhbwLogo.setVisibility(View.VISIBLE); + holder.newsStuvLogo.setVisibility(View.GONE); + } else { + holder.newsDhbwLogo.setVisibility(View.GONE); + holder.newsStuvLogo.setVisibility(View.VISIBLE); + } + + return row; + } + + static class RecordHolder { + TextView newsTitle; + TextView newsDescription; + ImageView newsDhbwLogo; + ImageView newsStuvLogo; + + public RecordHolder(View view) { + this.newsTitle = (TextView) view.findViewById(R.id.newsTitleView); + this.newsDescription = (TextView) view.findViewById(R.id.newsDescriptionView); + + newsDhbwLogo = (ImageView) view.findViewById(R.id.dhbwLogo); + newsStuvLogo = (ImageView) view.findViewById(R.id.stuvLogo); + } + } +} diff --git a/app/src/main/java/de/dhbwloe/campusapp/fragments/NewsListItem.java b/app/src/main/java/de/dhbwloe/campusapp/fragments/NewsListItem.java new file mode 100644 index 0000000..e0da6c4 --- /dev/null +++ b/app/src/main/java/de/dhbwloe/campusapp/fragments/NewsListItem.java @@ -0,0 +1,69 @@ +package de.dhbwloe.campusapp.fragments; + +import java.text.SimpleDateFormat; +import java.util.Date; + +import de.dhbwloe.campusapp.CampusAppContext; +import de.dhbwloe.campusapp.R; +import de.dhbwloe.campusapp.news.NewsItem; +import de.dhbwloe.campusapp.vorlesungen.CourseEvent; + +/** + * Created by pk910 on 27.02.2016. + */ +public class NewsListItem { + private String sNewsTitle; + private String sNewsDescription; + private String sNewsLink; + private long lNewsDate; + private boolean bIsDhbwNews; + private boolean bIsEvent; + + public NewsListItem(NewsItem newsItem, boolean isDhbwNews) { + sNewsTitle = newsItem.getTitle(); + sNewsDescription = newsItem.getSummary(); + sNewsLink = newsItem.getLink(); + lNewsDate = newsItem.getTime(); + bIsDhbwNews = isDhbwNews; + bIsEvent = false; + } + + public NewsListItem(CourseEvent newsEvent, boolean isDhbwEvent) { + sNewsTitle = newsEvent.getEventTitle(); + sNewsDescription = newsEvent.getEventLocation(); + sNewsLink = null; + lNewsDate = newsEvent.getEventFrom(); + bIsDhbwNews = isDhbwEvent; + bIsEvent = true; + } + + public long getTimeDifference(long now) { + return Math.abs(now - lNewsDate); + } + + public String getTitle() { + return sNewsTitle; + } + + public String getDescription() { + return sNewsDescription; + } + + public boolean isDhbwNews() { + return bIsDhbwNews; + } + + public String getFormatedDate() { + String dateFormat; + if(bIsEvent) + dateFormat = CampusAppContext.getInstance().getResString(R.string.timeformat_news_event); + else + dateFormat = CampusAppContext.getInstance().getResString(R.string.timeformat_news_news); + SimpleDateFormat format = new SimpleDateFormat(dateFormat); + return format.format(new Date(lNewsDate * 1000)); + } + + public String getLink() { + return sNewsLink; + } +} diff --git a/app/src/main/java/de/dhbwloe/campusapp/fragments/Settings.java b/app/src/main/java/de/dhbwloe/campusapp/fragments/Settings.java new file mode 100644 index 0000000..85a4442 --- /dev/null +++ b/app/src/main/java/de/dhbwloe/campusapp/fragments/Settings.java @@ -0,0 +1,31 @@ +package de.dhbwloe.campusapp.fragments; + + +import android.os.Bundle; +import android.support.v4.app.Fragment; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import de.dhbwloe.campusapp.CampusAppFragment; +import de.dhbwloe.campusapp.R; + +/** + * A simple {@link Fragment} subclass. + */ +public class Settings extends CampusAppFragment { + + + public Settings() { + // Required empty public constructor + } + + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + // Inflate the layout for this fragment + return inflater.inflate(R.layout.fragment_settings, container, false); + } + +} diff --git a/app/src/main/java/de/dhbwloe/campusapp/fragments/Vorlesungsplan.java b/app/src/main/java/de/dhbwloe/campusapp/fragments/Vorlesungsplan.java index 6428e63..d4b8bb6 100644 --- a/app/src/main/java/de/dhbwloe/campusapp/fragments/Vorlesungsplan.java +++ b/app/src/main/java/de/dhbwloe/campusapp/fragments/Vorlesungsplan.java @@ -35,16 +35,16 @@ public class Vorlesungsplan extends CampusAppFragment { new SearchIndices("Vorlesungsplan", true) {{ setUpdateTime(1); setTarget("#Vorlesungsplan"); - setTitle("Vorlesungsplan"); - setDescription("Vorlesungsplan dienes Kurses"); - addKeyWord("vorlesung, vorlesungen, plan, vorlesungsplan, stundenplan, termin, termine, kursplan, blockplan, block, zeit, zeiten"); + setTitle(R.string.search_vorlesungsplan_title); + setDescription(R.string.search_vorlesungsplan_description); + addKeyWord(R.string.search_vorlesungsplan_keywords); }}, new SearchIndices("Vorlesungsplan", true) {{ setUpdateTime(1); setTarget("#Vorlesungsplan#view=exams"); - setTitle("Vorlesungsplan"); - setDescription("Klausurübersicht dienes Kurses"); - addKeyWord("klausuren, prüfungen, exams, termine, zeitpunkt, plan, ergebnisse"); + setTitle(R.string.search_vorlesungsplan_klausur_title); + setDescription(R.string.search_vorlesungsplan_klausur_description); + addKeyWord(R.string.search_vorlesungsplan_klausur_keywords); }}, }; } @@ -53,7 +53,7 @@ public class Vorlesungsplan extends CampusAppFragment { public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_vorlesungsplan, container, false); - AppContext.setTitle("Vorlesungsplan"); + AppContext.setTitle(AppContext.getResString(R.string.vorlesungsplan_title)); ViewPager pager = (ViewPager) view.findViewById(R.id.viewpager); setupViewPager(pager); diff --git a/app/src/main/java/de/dhbwloe/campusapp/fragments/VorlesungsplanGroupsListItem.java b/app/src/main/java/de/dhbwloe/campusapp/fragments/VorlesungsplanGroupsListItem.java index 01d6ee7..73c5053 100644 --- a/app/src/main/java/de/dhbwloe/campusapp/fragments/VorlesungsplanGroupsListItem.java +++ b/app/src/main/java/de/dhbwloe/campusapp/fragments/VorlesungsplanGroupsListItem.java @@ -3,6 +3,9 @@ package de.dhbwloe.campusapp.fragments; import java.text.SimpleDateFormat; import java.util.Date; +import de.dhbwloe.campusapp.CampusAppContext; +import de.dhbwloe.campusapp.R; + /** * Created by pk910 on 20.02.2016. */ @@ -37,19 +40,25 @@ public class VorlesungsplanGroupsListItem { } public String getFirstEvent() { - SimpleDateFormat dateFormat = new SimpleDateFormat("dd.MM.yyyy HH:mm"); + if(firstEvent == 0) + return null; + SimpleDateFormat dateFormat = new SimpleDateFormat(CampusAppContext.getInstance().getResString(R.string.timeformat_vorlesungsplan_fulldate)); Date date = new Date(firstEvent*1000); return dateFormat.format(date); } public String getLastEvent() { - SimpleDateFormat dateFormat = new SimpleDateFormat("dd.MM.yyyy HH:mm"); + if(lastEvent == 0) + return null; + SimpleDateFormat dateFormat = new SimpleDateFormat(CampusAppContext.getInstance().getResString(R.string.timeformat_vorlesungsplan_fulldate)); Date date = new Date(lastEvent*1000); return dateFormat.format(date); } public String getNextEvent() { - SimpleDateFormat dateFormat = new SimpleDateFormat("dd.MM.yyyy HH:mm"); + if(nextEvent == 0) + return null; + SimpleDateFormat dateFormat = new SimpleDateFormat(CampusAppContext.getInstance().getResString(R.string.timeformat_vorlesungsplan_fulldate)); Date date = new Date(nextEvent*1000); return dateFormat.format(date); } @@ -57,7 +66,7 @@ public class VorlesungsplanGroupsListItem { public String getNextKlausurEvent() { if(nextKlausurEvent == 0) return null; - SimpleDateFormat dateFormat = new SimpleDateFormat("dd.MM.yyyy HH:mm"); + SimpleDateFormat dateFormat = new SimpleDateFormat(CampusAppContext.getInstance().getResString(R.string.timeformat_vorlesungsplan_fulldate)); Date date = new Date(nextKlausurEvent*1000); return dateFormat.format(date); } diff --git a/app/src/main/java/de/dhbwloe/campusapp/fragments/VorlesungsplanUpcomingCourseListItem.java b/app/src/main/java/de/dhbwloe/campusapp/fragments/VorlesungsplanUpcomingCourseListItem.java index e706e3f..6fc45f4 100644 --- a/app/src/main/java/de/dhbwloe/campusapp/fragments/VorlesungsplanUpcomingCourseListItem.java +++ b/app/src/main/java/de/dhbwloe/campusapp/fragments/VorlesungsplanUpcomingCourseListItem.java @@ -24,7 +24,7 @@ public class VorlesungsplanUpcomingCourseListItem { public void updateContainerView(View view) { - SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm"); + SimpleDateFormat dateFormat = new SimpleDateFormat(CampusAppContext.getInstance().getResString(R.string.timeformat_vorlesungsplan_time)); TextView timeFrom = (TextView) view.findViewById(R.id.timeFrom); TextView timeTo = (TextView) view.findViewById(R.id.timeTo); TextView location = (TextView) view.findViewById(R.id.location); diff --git a/app/src/main/java/de/dhbwloe/campusapp/fragments/VorlesungsplanUpcomingDayListItem.java b/app/src/main/java/de/dhbwloe/campusapp/fragments/VorlesungsplanUpcomingDayListItem.java index d8d1104..d9ced0c 100644 --- a/app/src/main/java/de/dhbwloe/campusapp/fragments/VorlesungsplanUpcomingDayListItem.java +++ b/app/src/main/java/de/dhbwloe/campusapp/fragments/VorlesungsplanUpcomingDayListItem.java @@ -53,13 +53,13 @@ public class VorlesungsplanUpcomingDayListItem { } public String getFormatedDate() { - SimpleDateFormat dateFormat = new SimpleDateFormat("dd.MM."); + SimpleDateFormat dateFormat = new SimpleDateFormat(CampusAppContext.getInstance().getResString(R.string.timeformat_vorlesungsplan_date)); Date date = new Date(cardDate * 1000); - int weekdayResIds[] = new int[] { R.string.week_saturday, R.string.week_sunday, R.string.week_monday, R.string.week_tuesday, R.string.week_wednesday, R.string.week_thursday, R.string.week_friday }; + int weekdayResIds[] = new int[] { R.string.week_sunday, R.string.week_monday, R.string.week_tuesday, R.string.week_wednesday, R.string.week_thursday, R.string.week_friday, R.string.week_saturday }; Calendar cal = Calendar.getInstance(); cal.setTime(date); - int dow = cal.get(Calendar.DAY_OF_WEEK); + int dow = cal.get(Calendar.DAY_OF_WEEK)-1; return CampusAppContext.getInstance().getResString(weekdayResIds[dow]) + ", " + dateFormat.format(date); } diff --git a/app/src/main/java/de/dhbwloe/campusapp/fragments/WifiSettings.java b/app/src/main/java/de/dhbwloe/campusapp/fragments/WifiSettings.java index 1ce7001..615d7ba 100644 --- a/app/src/main/java/de/dhbwloe/campusapp/fragments/WifiSettings.java +++ b/app/src/main/java/de/dhbwloe/campusapp/fragments/WifiSettings.java @@ -58,9 +58,9 @@ public class WifiSettings extends CampusAppFragment { new SearchIndices("WifiSettings", true) {{ setUpdateTime(1); setTarget("#WifiSettings"); - setTitle("Wifi Settings"); - setDescription("WLAN Konfiguration für dieses Gerät"); - addKeyWord("wlan, secure, dhbw-secure, wifi, w-lan, wireless, internet, netzwerk"); + setTitle(R.string.search_wifi_title); + setDescription(R.string.search_wifi_description); + addKeyWord(R.string.search_wifi_keywords); }}, }; } @@ -88,29 +88,31 @@ public class WifiSettings extends CampusAppFragment { } } - SupplicantState supl_state=((SupplicantState)intent.getParcelableExtra(WifiManager.EXTRA_NEW_STATE)); - switch(supl_state){ - case ASSOCIATING: - settings.isAssociating = true; - settings.isAssociated = false; - settings.isAuthenticated = false; - settings.isDisconnected = false; - break; - case ASSOCIATED: - settings.isAssociated = true; - break; - case COMPLETED: - settings.isAuthenticated = true; - break; - case DISCONNECTED: - settings.isAssociated = false; - settings.isAssociating = false; - settings.isDisconnected = true; - break; - default: - break; + if(settings != null) { + SupplicantState supl_state = ((SupplicantState) intent.getParcelableExtra(WifiManager.EXTRA_NEW_STATE)); + switch (supl_state) { + case ASSOCIATING: + settings.isAssociating = true; + settings.isAssociated = false; + settings.isAuthenticated = false; + settings.isDisconnected = false; + break; + case ASSOCIATED: + settings.isAssociated = true; + break; + case COMPLETED: + settings.isAuthenticated = true; + break; + case DISCONNECTED: + settings.isAssociated = false; + settings.isAssociating = false; + settings.isDisconnected = true; + break; + default: + break; + } + updateWifiState(); } - updateWifiState(); } NetworkInfo networkInfo = (NetworkInfo) intent.getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO); diff --git a/app/src/main/java/de/dhbwloe/campusapp/mensaplan/MensaplanManager.java b/app/src/main/java/de/dhbwloe/campusapp/mensaplan/MensaplanManager.java index 251c36c..20ef99a 100644 --- a/app/src/main/java/de/dhbwloe/campusapp/mensaplan/MensaplanManager.java +++ b/app/src/main/java/de/dhbwloe/campusapp/mensaplan/MensaplanManager.java @@ -64,7 +64,7 @@ public class MensaplanManager extends XmlRequestHelper { if (m.find()) { NumberFormat nf = NumberFormat.getInstance(Locale.GERMAN); try { - Number result = nf.parse(m.group(1)); + Number result = nf.parse(m.group(1)); return (int)(result.doubleValue()*100); } catch (ParseException e) { return 0; diff --git a/app/src/main/java/de/dhbwloe/campusapp/search/SearchIndices.java b/app/src/main/java/de/dhbwloe/campusapp/search/SearchIndices.java index fe1db98..9b4cab5 100644 --- a/app/src/main/java/de/dhbwloe/campusapp/search/SearchIndices.java +++ b/app/src/main/java/de/dhbwloe/campusapp/search/SearchIndices.java @@ -1,13 +1,16 @@ package de.dhbwloe.campusapp.search; +import java.util.ArrayList; import java.util.Date; +import de.dhbwloe.campusapp.CampusAppContext; + /** * Created by pk910 on 19.01.2016. */ public class SearchIndices { private String keyname = null; - private StringBuffer keywordsBuffer = new StringBuffer(); + private StringBuilder keywordsBuffer = new StringBuilder(); protected boolean isStatic = false; protected String target = new String(); protected String keywords = null; @@ -31,6 +34,10 @@ public class SearchIndices { keywordsBuffer.append(words); } + public void addKeyWord(int words) { + addKeyWord(CampusAppContext.getInstance().getResString(words)); + } + public void setTarget(String target) { this.target = target; } @@ -43,6 +50,14 @@ public class SearchIndices { this.title = title; } + public void setDescription(int description) { + this.description = CampusAppContext.getInstance().getResString(description); + } + + public void setTitle(int title) { + this.title = CampusAppContext.getInstance().getResString(title); + } + public void setUpdateTime(long updateTime) { this.updateTime = updateTime; } diff --git a/app/src/main/java/de/dhbwloe/campusapp/wifi/WifiNetworkSettings.java b/app/src/main/java/de/dhbwloe/campusapp/wifi/WifiNetworkSettings.java index 3c1ba68..96a561f 100644 --- a/app/src/main/java/de/dhbwloe/campusapp/wifi/WifiNetworkSettings.java +++ b/app/src/main/java/de/dhbwloe/campusapp/wifi/WifiNetworkSettings.java @@ -83,6 +83,7 @@ public class WifiNetworkSettings { "uD3s1d70097Es++KwAg=\n" + "-----END CERTIFICATE-----\n")); + /* presets.add((new WifiNetworkSettings("dhbw-802.1x", "dhbw-802.1x", WifiNetworkAuthenticationTypes.WIFI_AUTHTYPE_WPA_ENTERPRISE)). setWpaEnterprise( new int[]{WifiConfiguration.KeyMgmt.WPA_EAP, WifiConfiguration.KeyMgmt.IEEE8021X}, @@ -111,6 +112,7 @@ public class WifiNetworkSettings { "xbrYNuSD7Odlt79jWvNGr4GUN9RBjNYj1h7P9WgbRGOiWrqnNVmh5XAFmw4jV5mU\n" + "Cm26OWMohpLzGITY+9HPBVZkVw==\n" + "-----END CERTIFICATE-----")); + */ presets.add((new WifiNetworkSettings("eduroam", "eduroam", WifiNetworkAuthenticationTypes.WIFI_AUTHTYPE_WPA_ENTERPRISE)). setWpaEnterprise( diff --git a/app/src/main/res/drawable-hdpi/ic_announcement_black_24dp.png b/app/src/main/res/drawable-hdpi/ic_announcement_black_24dp.png new file mode 100644 index 0000000..8353564 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_announcement_black_24dp.png differ diff --git a/app/src/main/res/drawable-hdpi/ic_dashboard_black_24dp.png b/app/src/main/res/drawable-hdpi/ic_dashboard_black_24dp.png new file mode 100644 index 0000000..b832916 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_dashboard_black_24dp.png differ diff --git a/app/src/main/res/drawable-hdpi/ic_event_black_24dp.png b/app/src/main/res/drawable-hdpi/ic_event_black_24dp.png new file mode 100644 index 0000000..0a71678 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_event_black_24dp.png differ diff --git a/app/src/main/res/drawable-hdpi/ic_local_dining_black_24dp.png b/app/src/main/res/drawable-hdpi/ic_local_dining_black_24dp.png new file mode 100644 index 0000000..c98123c Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_local_dining_black_24dp.png differ diff --git a/app/src/main/res/drawable-hdpi/ic_wifi_black_24dp.png b/app/src/main/res/drawable-hdpi/ic_wifi_black_24dp.png new file mode 100644 index 0000000..8a989e8 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_wifi_black_24dp.png differ diff --git a/app/src/main/res/drawable-mdpi/ic_announcement_black_24dp.png b/app/src/main/res/drawable-mdpi/ic_announcement_black_24dp.png new file mode 100644 index 0000000..4b2e82c Binary files /dev/null and b/app/src/main/res/drawable-mdpi/ic_announcement_black_24dp.png differ diff --git a/app/src/main/res/drawable-mdpi/ic_dashboard_black_24dp.png b/app/src/main/res/drawable-mdpi/ic_dashboard_black_24dp.png new file mode 100644 index 0000000..c0cb862 Binary files /dev/null and b/app/src/main/res/drawable-mdpi/ic_dashboard_black_24dp.png differ diff --git a/app/src/main/res/drawable-mdpi/ic_event_black_24dp.png b/app/src/main/res/drawable-mdpi/ic_event_black_24dp.png new file mode 100644 index 0000000..c47f281 Binary files /dev/null and b/app/src/main/res/drawable-mdpi/ic_event_black_24dp.png differ diff --git a/app/src/main/res/drawable-mdpi/ic_local_dining_black_24dp.png b/app/src/main/res/drawable-mdpi/ic_local_dining_black_24dp.png new file mode 100644 index 0000000..f048dcf Binary files /dev/null and b/app/src/main/res/drawable-mdpi/ic_local_dining_black_24dp.png differ diff --git a/app/src/main/res/drawable-mdpi/ic_wifi_black_24dp.png b/app/src/main/res/drawable-mdpi/ic_wifi_black_24dp.png new file mode 100644 index 0000000..c5bc88d Binary files /dev/null and b/app/src/main/res/drawable-mdpi/ic_wifi_black_24dp.png differ diff --git a/app/src/main/res/drawable-xhdpi/ic_announcement_black_24dp.png b/app/src/main/res/drawable-xhdpi/ic_announcement_black_24dp.png new file mode 100644 index 0000000..0d05bef Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_announcement_black_24dp.png differ diff --git a/app/src/main/res/drawable-xhdpi/ic_dashboard_black_24dp.png b/app/src/main/res/drawable-xhdpi/ic_dashboard_black_24dp.png new file mode 100644 index 0000000..ba2911e Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_dashboard_black_24dp.png differ diff --git a/app/src/main/res/drawable-xhdpi/ic_event_black_24dp.png b/app/src/main/res/drawable-xhdpi/ic_event_black_24dp.png new file mode 100644 index 0000000..4b3cefa Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_event_black_24dp.png differ diff --git a/app/src/main/res/drawable-xhdpi/ic_local_dining_black_24dp.png b/app/src/main/res/drawable-xhdpi/ic_local_dining_black_24dp.png new file mode 100644 index 0000000..f5c20a7 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_local_dining_black_24dp.png differ diff --git a/app/src/main/res/drawable-xhdpi/ic_wifi_black_24dp.png b/app/src/main/res/drawable-xhdpi/ic_wifi_black_24dp.png new file mode 100644 index 0000000..06f3975 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_wifi_black_24dp.png differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_announcement_black_24dp.png b/app/src/main/res/drawable-xxhdpi/ic_announcement_black_24dp.png new file mode 100644 index 0000000..b806076 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_announcement_black_24dp.png differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_dashboard_black_24dp.png b/app/src/main/res/drawable-xxhdpi/ic_dashboard_black_24dp.png new file mode 100644 index 0000000..ad14dfe Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_dashboard_black_24dp.png differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_event_black_24dp.png b/app/src/main/res/drawable-xxhdpi/ic_event_black_24dp.png new file mode 100644 index 0000000..2f5815d Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_event_black_24dp.png differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_local_dining_black_24dp.png b/app/src/main/res/drawable-xxhdpi/ic_local_dining_black_24dp.png new file mode 100644 index 0000000..5316cb7 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_local_dining_black_24dp.png differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_wifi_black_24dp.png b/app/src/main/res/drawable-xxhdpi/ic_wifi_black_24dp.png new file mode 100644 index 0000000..03d77fc Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_wifi_black_24dp.png differ diff --git a/app/src/main/res/drawable-xxxhdpi/ic_announcement_black_24dp.png b/app/src/main/res/drawable-xxxhdpi/ic_announcement_black_24dp.png new file mode 100644 index 0000000..dcec4d8 Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/ic_announcement_black_24dp.png differ diff --git a/app/src/main/res/drawable-xxxhdpi/ic_dashboard_black_24dp.png b/app/src/main/res/drawable-xxxhdpi/ic_dashboard_black_24dp.png new file mode 100644 index 0000000..8fad114 Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/ic_dashboard_black_24dp.png differ diff --git a/app/src/main/res/drawable-xxxhdpi/ic_event_black_24dp.png b/app/src/main/res/drawable-xxxhdpi/ic_event_black_24dp.png new file mode 100644 index 0000000..0458ac5 Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/ic_event_black_24dp.png differ diff --git a/app/src/main/res/drawable-xxxhdpi/ic_local_dining_black_24dp.png b/app/src/main/res/drawable-xxxhdpi/ic_local_dining_black_24dp.png new file mode 100644 index 0000000..7bcb121 Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/ic_local_dining_black_24dp.png differ diff --git a/app/src/main/res/drawable-xxxhdpi/ic_wifi_black_24dp.png b/app/src/main/res/drawable-xxxhdpi/ic_wifi_black_24dp.png new file mode 100644 index 0000000..7450747 Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/ic_wifi_black_24dp.png differ diff --git a/app/src/main/res/drawable/news_toggle_background.xml b/app/src/main/res/drawable/news_toggle_background.xml new file mode 100644 index 0000000..6bd2978 --- /dev/null +++ b/app/src/main/res/drawable/news_toggle_background.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout-land/fragment_dashboard.xml b/app/src/main/res/layout-land/fragment_dashboard.xml index 994876f..b23f1ea 100644 --- a/app/src/main/res/layout-land/fragment_dashboard.xml +++ b/app/src/main/res/layout-land/fragment_dashboard.xml @@ -33,7 +33,7 @@ @@ -76,7 +76,7 @@ diff --git a/app/src/main/res/layout/fragment_appsearch_list.xml b/app/src/main/res/layout/fragment_appsearch_list.xml index ee1c433..3b191a0 100644 --- a/app/src/main/res/layout/fragment_appsearch_list.xml +++ b/app/src/main/res/layout/fragment_appsearch_list.xml @@ -1,4 +1,4 @@ - - + + + diff --git a/app/src/main/res/layout/fragment_dashboard.xml b/app/src/main/res/layout/fragment_dashboard.xml index 4f0d324..8c8ac46 100644 --- a/app/src/main/res/layout/fragment_dashboard.xml +++ b/app/src/main/res/layout/fragment_dashboard.xml @@ -22,7 +22,7 @@ diff --git a/app/src/main/res/layout/fragment_first_run.xml b/app/src/main/res/layout/fragment_first_run.xml index 8596249..436457e 100644 --- a/app/src/main/res/layout/fragment_first_run.xml +++ b/app/src/main/res/layout/fragment_first_run.xml @@ -3,18 +3,80 @@ android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" - tools:context="de.dhbwloe.campusapp.fragments.FirstRun"> + tools:context="de.dhbwloe.campusapp.fragments.FirstRun" + android:padding="8dp"> - + + + + + + + + + +