Coder Social home page Coder Social logo

brainy-quote-app's People

Contributors

chan96 avatar rbarman avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar

brainy-quote-app's Issues

Search in Menu Bar

selection_005

Since there is a search button already, should we still include the one in the menu bar? Maybe replace with a bar that contains sharing options, twitter/facebook image buttons?

Back End Coding seems to be done.

All back end coding seems to be done.

User can successfully pull quotes from valid keywords or authors from BrainyQuote. Also I have fixed all searches so that the app can pull quotes past the first page if the user has gone past the first page ; the app will not crash.

So the challenge : try to make the app crash....
&& Think of good UI designs and implementations that you would want to see.

Connecting to url for every execution of each async task.

Every async task's doInBackground() method is connecting to an url at every execution.
Even though getting a new quote is fast, it is unnecessary to connect to an url if we are on the same page.

For example, assume a page has 5 quotes. IOW these 5 quotes have the same url.
Currently if we were to swipe through and see all 5 quotes, we would have to connect to the same url that theses 5 quotes are on after each swipe.
However once we get past the 5 quotes, we have connect to a new url. It is much more efficient to connect to a url once only once we change the url.

Option to unfavorite a quote

This should be done after issue 15 is fully implemented.

The user should be able to click starOn and unfavorite the current quote

  1. starOn becomes starOff
  2. the current quote is removed from the listview in Fav Quote Screen

Need a sample url of an author with initials as a keyword...

From d46ddfa I noticed that I had incorrectly placed the generateAuthorUrl(String s) for every time I started a AboutAuthorSearch async task instead of generateTagUrl(String s).

I fixed that. However within the SearchWithInitials async task, I need to rewrite :

new AboutAuthorSearch().execute(generateAuthorWithInitialsUrl(queryText));
I am not 100% sure if I can not do AboutAuthorSearch().execute(generateTagUrl(queryText)); because I imagine that i would have to account for a url with initials.

However I would need an example of a url with initials as a keyword to be completely sure of what to do.

Search bar in action bar

What do you think about hiding the search bar in the action bar until the user clicks the search button at the center of the page (on the main screen). With the setup right now, it is slightly redundant. Also, this could free up space for other things like sharing buttons. Once the user clicks the search button, any existing items that take up too much space in the action bar will be hidden and replaced by the full search bar. If the user cancels the search, then any items previously hidden will become un-hidden.

Future features

Are there any other possible new features that we would like to implement to our app? So far the user can view random and custom quotes, share quotes, and favorite certain quotes.

Wrong quote on swipe right when pageNum = 2, index = 0 [pageNum ++]

pageNum == 2 and index == 0 (or any scenario where pageNum ++ and index == 0)

swipe right ...

  1. expect quote where pageNum == 1 and index == quotesOnPage -1 ;
  2. get quote where pageNum == 2 and index == quotesOnPage -1;

However text in text view used for testing say pageNum == 1 and index == quotesOnPage-1.

Arrow buttons

I feel like it is not too clear to the end user whether or not he/she can swipe the screen to get to the next quote (ex. random quote). What do you think about adding arrows like these (but sideways) at the very left and right side of the screen? They could appear with each quote, but then fade out after half a second. Pressing the location of where the arrow was will cause the app to move to the next quote, and repeat the appearance of the arrows.
selection_010

As another option, we could display a small grey text hint that a user could see at the top of the Random and Specific quote activities, but dissapears after the first quote is seen, or something similar.

Animation onSwipe left and right.

A general principle for Apps is that it must be responsive to user touch. We currently have a toast message every time the user swipes left and right which does show some sense of responsiveness to the user. However the toast message is very bland and should be used sparingly. If the user were to swipe through quotes very quickly, there would be toasts overlapping the previous toasts and the user would see a toast message for t * n seconds where t is the time per toast and n is the number of toasts. The user could just click anywhere on the activity page to get rid of a toast but they would have to do it n times. This is not a good experience for the user.

I think we should have some sort of animation or transition between new quotes. We can however keep a toast message stating "there are no previous quotes" if the user attempts to get a previous quote on the first quote, but all other toast messages should be removed.

Remember Search History

Remember search history is a necessary component for any app that has a search capability. Currently I am using the android SearchRecentSuggestionProviderClass.

General Steps are :

  1. The system takes the search query text (whatever has been typed so far) and performs a query to the content provider that contains your suggestions.
  2. Your content provider returns a Cursor that points to all suggestions that match the search query text.
  3. The system displays the list of suggestions provided by the Cursor.

Pre Version 1 Release Checklist

There is less than one week left to break and we have made a lot of progress. I think it is conceivable that we release version 1 of this app within 2 - 3 weeks. (Exact deadline date can be discussed more in depth when we meet each other and are aware of our respective class schedules).

I have compiled a checklist for things that need to be implemented or fixed. If you have another item that should be addressed, please post it and then make a respective issue on it. We can then discuss that specific issue on that issue page in order to not have too much clutter on this thread.

  1. Remember search history #30
  2. Activity restarting on orientation change. #31
  3. Custom Bottom bar needs to be cleaner. #26
  4. PopUp Menu on author search needs to be cleaner. #32
  5. Animation onSwipeLeft and onSwipeRight #29
  6. Settings Page (for version 1 we may not need to have full text customization like font type) #27
  7. Bookmarking Feature #33
  8. General code refactoring

Again, post anything that should be added for V1 and ask/comment on the respective issue page.

Discussion on Settings Page

Now with fdb1fb7 we can discuss the content and design of the settings page.

For content I'm thinking ...

  1. Clear Favorites
  2. Clear Search History
  3. Customization
  4. Others

For design ....

I am not entirely sure. We could try doing a listview.

What are your opinions?

Sharing button

Currently, the user must press the hardware menu button on his/her phone to access the favorites menu (it is hidden). I feel like without a little sharing icon in the action bar, or something similar, the user wouldn't really know this feature. Adding an icon would also make it easier/quicker to favorite/unfavorite apps. What do you think?

Discussion on Split ActionBar

Continued from #23 (comment)
It is agreed that we will use split action bar. (For reference : http://developer.android.com/design/patterns/actionbar.html#considerations-split-action-bars)

Now the question arises, what will we put on the top action bar and on the bottom action bar?

My current thoughts :
Top Action Bar

  1. Search Icon (definitely)
  2. other

Bottom Action Bar

  1. Share Icon
  2. Favorite Icon
  3. Menu Icon
  4. other

The awkward one is where to put the favorites icon? The star icon is too similar and the user can easily get confused. We could have a way for the user to get to the favorites by clicking on the menu icon which will lead to a pop up menu.

What are your thoughts?

Favorites Button in ActionBar

Now that we can fully store favorite quotes, it it necessary to have a favorites button in the action bar so that the user can view his favorite quotes at any point in the application.

We have several options of doing this...

  1. Favorites Button in ActionBar that will launch FavQuotesScreen Activity + a Favorite Button near the quote that will add the quote to favorites.
  2. Both types of buttons in the action bar. The struggle with this is that it clutters the action bar and the user could mistake one for the other.
  3. A general Button in the action bar that will launch a pop up menu when clicked. The pop up menu will ask the user if he wants to view favorites or add the current quote to favorites.
  4. Some variation of (3) or something else.

I think 3 is a good way to go. Maybe 1. What do you think?

Favorite Button

All relevant discussion on the Favorite Button.

We already have a Favorites action item in the action bar, it is now time to discuss where / how our Favorite Button will be implemented.

Few options

  1. As a button near the Quote
  2. As an action item in the action bar
  3. Something else - hybrid of Favorites and Favorite in one action item that would lead to a menu where the user can decide.
  4. Other.

(3) seems to much clicking (even if it is 2 clicks) to add a favorite quote or check favorites.
(2) Could get the action bar crowded and the user might confuse the Favorites and Favorite action items.
(1) Seems best to me so far.

What do you think?

Share button in CAB in fav quote screen

What do you think of a share button in the contextual action bar of the fav quote screen? What if the user doesn't want to share a viewed quote immediately (too busy, wants to do it at a specific time, doesn't know whom to send it too, but will, etc.). By putting into the CAB, the user can select multiple or single quotes to share.

Bookmarking search place for specific queryText

We might want to keep track of the user's place of in the Specific Search Activity for specific queryText values.

For example. I look up quotes by "JK Rowling." I look at 20 quotes by her. When I restart the application would I want to go through the previously seen 20 quotes or look at new quotes? Maybe, maybe not. The user should have a way for bookmarking his spot if he wanted to similar to a bookmark feature on e - readers.

What has been said previously :
BrianChan
We could define an option to show previously seen quotes for the custom quote search feature (ex. The user may want to look up the same quote to favorite it if he/she changed their mind). The default setting would probably be to not re show previously seen quotes. One possible way to check for previously seen quotes on a custom search, would be to create multiple files, with each file having different author names. Each time the user searches for a quote by a specific author, the app checks if there is a file with that author's name. If not, create the file, append the quote, and show the quote to the user. If the user searches for the same author again, then it would open up the same file (has author's name), and search the entire file for any place where the string of the quote to be shown is already in the file. If yes, then try to get another quote by the author. Rinse and repeat. However, this would get more complicated if the user searched quotes about the author (you would need to get the author of the quote, and the other author the author is talking about).

If we just created files to store every quote the user views on a custom search, the files would build up, and the performance penalty would be pretty big (also if we just append quotes to a single file).

Me:
counter solution that could work for any type of search (byAuthor, aboutAuthor, keyword, or topic)

  1. User enters some queryText
  2. We already have the generateUrl methods that will build a url for that queryText
  3. We will store a file with the url
    ex) http://www.brainyquote.com/quotes/authors/n/nelson_mandela.html
  4. Every time we get to a new page, the file with the url will be changed. ex)http://www.brainyquote.com/quotes/authors/n/nelson_mandela_2.html
  5. Once the user exits the Specific Quote Activity we will concatenate the index number to the url. ex)http://www.brainyquote.com/quotes/authors/n/nelson_mandela_2.html4 => index 4 on second page.

Now when the user enter's a previously entered queryText...

  1. The generateUrl methods will create a url
  2. We compare the url to the a substring of all stored urls. ex) our generated url is http://www.brainyquote.com/quotes/authors/n/nelson_mandela.html, but we will check for any matches with "http://www.brainyquote.com/quotes/authors/n/nelson_mandela" because the stored urls will be concatenated with the index value and could represent a page greater than 1.
  3. If there is a match in the generated url and a substring, we can connect to the stored url show the quote at the specified index.

There would also have to be a bookmark icon for the user to click on either on the bottom customized bar or on the actionbar.

PopUpMenu on author search needs to be cleaner

screen shot 2014-01-08 at 10 01 16 am

We could have a more custom and aesthetic pop up menu. Also it would be nice to have a run time change to the popup menu to have : “You are search for [author] quotes” , “Quote by [author]?”, etc.

FavQuoteScreen activity extending BaseActivity

If FavQuoteScreen is extending BaseActivity, then it will have the following in the onOptionsItemSelected :

case R.id.launch_fav_activity:
Intent intent = new Intent(getBaseContext(), FavQuotesScreen.class);
startActivity(intent);
return true;
This means that the user can click on the favorite action icon in the action bar to re-lauch the FavQuoteScreen Activity. If the user were to click the icon while viewing the FavQuoteScreenActivity n times, the user will have to press the back button n times to get back to the home screen.

So, FavQuoteScreen can not extend BaseActivity.

Favorite quotes button

A favorites button the user can select once a quote is published on screen. The button will write a text file to the app's installation directory, which can be later retrieved and viewed.

Action bar menu

What do you think about having a settings menu in the action bar like this:
selection_009

We could put the favorites page link in here, as well as other settings like "clear favorites", "about" etc. This frees up space and may offer better organization.

Instructional Custom Toast Messages

continued from #18

There will be custom toast messages for Random and Specific Quote Activities to tell the user that should swipe right / left to get next / previous quotes.

first name w/ 3 letter initial

JRR Tolkien
WEB Du Bois

Will fail.
Possible solution is to have a boolean threeLetter and do similar process as SearchWithInitials async task that is currently running well with 2 letter initials. However this seems to be less efficient as another async task will have to be created.

Discussion on extra functionalities for List View in FavQuoteScreen Activity

Currently the user can only see and scroll through the list view of favorited quotes.
We should have more uses.

Some ideas from : #10 (comment)

There are a couple more things we could potentially do with the ListView if we add onClickListeners

  1. onLongClick => get a menu if the user wants to remove the clicked quote from favorites, send it, etc
  2. onLongClick + drag => user could change position of the clicked quote in the list (not most important)
  3. onClick => launch an activity to view only the clicked quote. There can buttons to remove or share below the quote.

add any more extras

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.