QT Play
Source: GitHub, rar

Play's web page has changed. Doesn't work with new page.

  • List products from play.com under selected price
  • Same overall functionality as List Play.com products
  • Multi-Threaded so updates UI while processing data.


    QTPlay
    Selections

  • Page shows total amount of pages and products processed and how many under selected price.
  • Result list shows name of the product and price.
  • Clicking name of the item will open new browser to item's page in play.com


    Sequence Diagram:

    Sequence


    	CLASSES:
    	--------------------------
    	Communication between Widget and ItemManager with Signals
    
    	* Widget
    		- User Interface
    		* BrowserWidget
    			- Internet browser
    		
    	* ItemManager 
    		* Categories
    			- Contains list of urls
    		* HtmlWorker
    			- Gets html page
    		* ItemWorker
    			- Process page to items
    		* CollectionWorker
    			- Check that new item is valid
    			- Add items to collection (check duplicates)
    			* ItemCollection
    				- Collection on all items, new items (stack) etc.
    				
    	* Item
    		- Item data (name, url, prices)
    	* Money
    		- Helper class for currency
    		
    		
    	WORKFLOW:
    	------------------------
    	All workers are Threads.
    	
    	1) ItemManager generates urls for selected Category
    	2) User Defines Category and max price from Widget
    	3) User presses start
    	
    	4) ItemManager passes url to HtmlWorker and starts it
    	4.1) HtmlWorker gets HtmlData from selected url
    	4.2) If HtmlData is empty and no more urls to process set HtmlWorker to finished
    	4.2) Else ItemManager places HtmlData to WorkQueue for ItemWorker
    	4.2.1) If ItemWorker not running start it
    	4.2.2) Go to 4
    
    	5) ItemWorker processes HtmlData from WorkQueue to Item objects
    	5.1) Items are placed to WorkQueue for CollectionWorker
    	5.2) If CollectionWorker is not running start it
    	5.3) If WorkQueue is empty and HtmlWorker is finished set ItemWorker to finished
    	5.3) If HtmlData in WorkQueue
    	5.3.1) Go to 5
    	5.3) If WorkQueue is empty do nothing (wait that is started in 4.2.1)
    	
    	6) CollectionWorker gets items from WorkQueue and cheks valid items
    	6.1) Checks that items are valid and places those to ItemCollection
    	6.2) ItemManager send new items to Widget
    	6.3) If more items in WorkQueue
    	6.3.1) Go to 6
    	6.3) If ItemWorker is finished set CollectionWorker to finished
    	6.3) If WorkQueue is empty do nothing (wait that is started in 5.2)
    	


    29.1.2011
    tomi.tuhkanen@iki.fi