chris-hut / edmontonwifi Goto Github PK
View Code? Open in Web Editor NEWAndroid App Using Edmonton's Open Data
License: MIT License
Android App Using Edmonton's Open Data
License: MIT License
Blocked by #2
Kinda silly having this huge ass list for them wifis.
Add search functionality for:
When you look into my eyes, then you won't be seeing what's on the screen.
Right now when you click on a wifi from the list to choose it, all of the information is displayed very ugly.
Lettuce fix this
Definition of done:
Since no one really cares about the 1st time tutorial, there should be a help section in settings that tells everyone about how to use the app
Before I worry about trying to fix all of this stuff, I should create at least one other fragment that will be in the navigation drawer so that I can make sure that everything works with multiple fragments.
Fragment can just be blank or say something like "Coming Soon"
Currently in main activity, we list all wifis, but this sure doesn't look that great.
Definition of done:
Currently MainActivities actionOnClick variable that determines what to do when a use clicks on a wifi in the list isn't being saved when the application is being killed.
This is probably due to me being stupid with my SharedPreferences since I haven't used them in a while.
Figure this out and fix it.
Definition of done:
Currently we do this in the foreground, and that's probably not the best, especially when we do this in a proper way.
Should use some async magic here!
Currently I have it so that Wifi s a preference listener and whenever the sort preference is changed, the wifi will sort based on that.
This is a terrible design, and once I start adding wifis, the overhead of adding all of them as listeners is silly. What I should do, possibly in MainActivity, is have MainActivity get the sort preference and then tell all of the possible fragments that they should sort themselves in this way.
We should let people filter WiFi's by their distance to them.
Since we're just currently getting the user's location in the onCreate of MainActivity, we should allow them to refresh their location when they want.
Also current implementation just tells user how far away they are from each wifi with no units or anything, should spruce that up a bit.
Definition of done:
Search doesn't seem to be working anymore. :( ๐ฑ
Needs to be done after #44.
The addition of the NavigationDrawer broke sorting of Wifis. This is because the Sort Dialog is created by MainActivity, and when calling its SortDialogFragmentCallback thing, it calls MainActivity, who doesn't have any more wifis.
Possible solutions:
Currently the intent to maps doesn't seem to work all of the time, need to make sure that we're using the correct city
Needs to be done after #44.
Currently the actionbar text is always EdmontonWifi, even though it should be the name of the Fragment that is currently in the foreground.
This shouldn't be to hard to implement; I remember in a couple tutorials seeing how to do this.
Right now we just mash the search, this could probably be done a lot better.
Definition of done:
Right now we're just using some magic method I got from stackoverflow to get the location of the device, which sucks because:
Should be done with #27
Definition of done:
When you click on a drawer, it currently doesn't close when you click on the fragment in choice, this should probably not happen.
This currently isn't very MVCy.
Let's try and change that.
Definition of done:
Eclipse could be the worst thing ever, we should really switch to android dev studio
Wouldn't it be nice if this app showed you what is supposed to happen the first time you open it?
You know the #HOLOYOLO blue that circles stuff and tells you about what is happening?
Definition of done:
Currently WifiList WifiList doesn't have the ability to update views when the list of Wifi's is changed.
Should we implement this?
However when would wifiList ever change except for when I personally update the JSON?
PreferenceManager.setDefaultValues(this, R.xml.advanced_preferences, false);
Calling this during onCreate() ensures that your application is properly initialized with default settings, which your application might need to read in order to determine some behaviors (such as whether to download data while on a cellular network).
A boolean indicating whether the default values should be set more than once.
When false, the system sets the default values only if this method has never been called in the past (or the KEY_HAS_SET_DEFAULT_VALUES in the default value shared preferences file is false).
As long as you set the third argument to false, you can safely call this method every time your activity starts without overriding the user's saved preferences by resetting them to the defaults. However, if you set it to true, you will override any previous values with the defaults.
So all I have to do is call that again, but there might be a better way of doing this.
See here that I'm currently doing this disgusting method of casting the activity that is is attached to/with the DialogFragment in order to get the last saved actionOnClick variable so the dialog shows what the user last selected.
May be blocked by #7
Definition of done:
I know that I've already implemented search suggestions based on recent history, but it would be nice if I had search suggestions based on Data
Needs to be done after #44.
The MainActivity has the ability to check if the NavigationDrawer is currently open or not. This means that in order to hide the Menus while the NavigationDrawer is open, I'll need to be using MainActivity to perform this action.
I think my options are:
Try looking in the Developer Docs and other places for best practices.
Currently the action bar says WifiViewActivity and doesn't allow the user to get back to the main activity without pressing the back button.
Same thing for SearchActivity
Put the name of the WiFi in the ActionBar
Might have forgotten to remove the status from this.
If you click sort on something, the toast displays inaccurate info if you choose one of the later ones.
If you hit the last one, the app crashes, probably an indexouttabounds
Don't think it was actually sorted either
Say the user either doesn't have that good of location, (no gps/they're in a tunnel), lettuce let them search from another location and we'll base all the results off of that.
Let users set a location to find wifi distances from:
Related to #4
What's the point of a project if no one even knows what it is, what it's supposed to do!
Pull off some regex magic, and remove the text in the WiFi name from the WiFi's name for the listview
Currently the sort dialog looks like it was made as a grade 10 com sci example to the class.
Lets make them a bit nicer.
Definition of done:
Sure, you might say with a hint of sarcasm in your tone, in the wifi view we, (maybe), show what kind of facility the wifi is, but there should be some background as well.
Sure this app is totally useless right now, but why not give a person a reason to actually download it?
I'm talking about supporting multiple different open datas, (data sets? things? not really sure what to call this). Since I've already implemented the loading the data from json, (albeit, not that nicely, it wouldn't be that hard to add even more information about the city of Edmonton into the app.
End goal, assuming all of these JSONs are small enough, would be an app where you can choose what "thing"/service you are looking for, and I'd be able to give you a bit of information about each location, show you the closest one, and direct you to it via google maps.
This would require a tad bit of refactoring, especially because of the large amounts of data we'd be keeping in memory, it might be smarter to switch to a database here, but that's another thing to keep in mind.
Settings isn't very readable right now, let's fix that.
Sorting should be moved to a background thread before I stop adding lots of different datas, especially now that they all are listening for updates to the sort preference.
After a Wifi is clicked, it's silly to have us just do something right off the bat, we should go to some viewing of the Wifi, where the user can from there, do what they want, this will also make it much easier to handle from the search activity.
This will also remove a lot of logic from onListItemClick
Currently we just make a shitty toast and close the activity.
Should we be doing something nicer?
Say load an invalid Wifi telling the user we messed up?
Or is this fine?
Also when would this ever happen?
Material Design is so nice, I should switch to one of these in order to show more information, and have an overall nicer app!
Clicking on an item is so Ice Cream Sandwich.
We should add a little down arrow toggle thing that will show the user more of the information about the WiFi when toggled.
This sounds kinda cool:
Already Implemented:
Implement this:
It looks weird to have two of the same location in some cases, should hide the in progress ones. Better yet, let's only show the currently active ones, and have some checkboxes hidden in settings to show the future ones
Currently we just hope that everything works perfectly and if something goes wrong we'll probably just end up crashing. Let's handle some error cases and make some tests for them.
Cases:
There should be a settings option in the NavigationDrawer.
However, this does not look like much fun to figure out.
MATERIAL DESIGN
MUST PLEASE LORD DUARTE
Let's ad the construction data, just so we can have more than one data, as well as giving us a better test of how we're loading data.
Related to #34
This will be a big one.
Need to be able to get the users location and use it properly.
Check out Location Strategies for strategies on how to do this.
I'm thinking something like initially ask/get the users location, then have a refresh location button somewhere.
Since a bunch of comparators have been created in the Wifi class, there should be for the user to sort the list of Wifis in a bunch of different ways.
Possible ways to sort:
Definition of done:
Navigation Drawer
Creating a Navigation Drawer
Preparing for #34
Right now we just load the data from the json.txt file, and then keep it in memory as an ArrayList. Is this the best idea?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.