Wednesday, June 19, 2013

Day 28: Fixed overlapping of ListPicker with other controls

I had to change the design of the ListPicker due to the overlapping on the radio buttons of the Table Type. Have to consider improving this in future. So here the user has to first select a branch, and then select the type of table, which will display the available table numbers.

Tuesday, June 18, 2013

Day 27: Adjusting ListPicker control

Referred to this article on implementing ListPicker for displaying the branch names and table names on the Select Table page.

Wednesday, June 12, 2013

Day 26: Completion of Menu Selection UI

As initially planned, by the use of Isolated Storage settings was able to store the selected menu where the quantity is more than 0. Need to improve the user friendliness of the quantity textbox, since when tapped on it the keypad with alphabets is appearing. Need to improve this to display the numeric keypad by default.

In overall the functionality of this page is complete.

Thursday, June 6, 2013

Day 25: Menu Display Page ListBox

Got the listbox display the correct menu description and price as we click through the arrow buttons.


This functionality was implemented with a hint from this article.
I had to override the ToString() method in the Menu class as follows to bind it to the control that displays it.

  public class Menu  
   {  
     private int _imageIndex;  
     public int ImageIndex  
     {  
       get { return _imageIndex; }  
       set { _imageIndex = value; }  
     }  
     private float _price;  
     public float Price  
     {  
       get { return _price; }  
       set { _price = value; }  
     }  
     private string _menuName;  
     public string MenuName  
     {  
       get { return _menuName; }  
       set { _menuName = value; }  
     }  
     private int _quantity;  
     private string _code;  
     public string Code  
     {  
       get { return _code; }  
       set { _code = value; }  
     }  
     public int Quantity  
     {  
       get { return _quantity; }  
       set { _quantity = value; }  
     }  
     public override string ToString()  
     {  
       return " "+MenuName + "\n Rs." + Math.Round(Convert.ToDouble(Price),2).ToString()+"/=";  
     }  
   }  

And in the MenuDisplayLogic class this is how I retrieve the details of all menus for initializing:

  public static List<Models.Menu> GetMenuDetails()  
     {  
       List<Models.Menu> menuDetails = new List<Models.Menu>();  
       using (EasyFoodMobDBContext dbcontext = new EasyFoodMobDBContext(EasyFoodMobDBContext.ConnectionString))  
       {  
         bool res = dbcontext.CreateIfNotExists();  
       }  
       using (EasyFoodMobDBContext dbcontext = new EasyFoodMobDBContext(EasyFoodMobDBContext.ConnectionString))  
       {  
         var query = from c in dbcontext.Menu  
               select new { c.FoodCode,c.FoodDescription,c.FoodPrice };  
         foreach(var menu in query)  
         {  
           Models.Menu newmenu = new Models.Menu();  
           newmenu.Code = menu.FoodCode;  
           newmenu.MenuName = menu.FoodDescription;  
           newmenu.Price = (float)menu.FoodPrice;  
           menuDetails.Add(newmenu);  
         }  
        }  
       return menuDetails;  
}

Then I had to do small modifications to the Carousel control class for being able to initialize the details and display them appropriately as the user browses through the menu. First I set the correct image index to the Menu objects in the initialization. Only through this index I would be able to display the correct details.

  private void AddImagesToCarousel()  
     {  
       menuList = MenuDisplayLogic.GetMenuDetails();  
       if (ListImagesCarousel != null && ListImagesCarousel.Count > 0)  
       {  
         for (int i = 0; i < ListImagesCarousel.Count; i++)  
         {  
           // get the image url  
           //string url = ListImagesCarousel[i];  
           Image image = new Image();  
           //image.Source = new BitmapImage(new Uri(url, UriKind.RelativeOrAbsolute));  
           image = ListImagesCarousel[i];  
           // TAG is used as an identifier for images  
           image.Tag = i.ToString();  
           //Adding it to Menu  
            menuList[i].ImageIndex = i;  
           // event Tapped to find selected image  
           image.Tap += image_Tap;  
           // add and set image position  
           LayoutRoot.Children.Add(image);  
           SetPosImage(image, i);  
           _images.Add(image);  
         }  
       }  
     }  

Then on the initial state and on other states I would need to get the correct menu, and bind it directly to the control. Thanks to LINQ, it took only a single line of code.

  private void SetIndex(int value)  
     {  
       _target = value;  
       _target = Math.Max(0, _target);  
       _target = Math.Min(_images.Count - 1, _target);  
       listBox1.ItemsSource = menuList.Where(a => a.ImageIndex == _target);  
     }  
     private void MoveIndex(int value)  
     {  
       _target += value;  
       _target = Math.Max(0, _target);  
       _target = Math.Min(_images.Count - 1, _target);  
       listBox1.ItemsSource = menuList.Where(a => a.ImageIndex == _target);  
     }  

With this 90% of work for this page is complete. I am only left with enabling the user to enter the quantity of the menu and the saving of the order to the isolated storage.

Tuesday, June 4, 2013

Day 24: Menu Display Logic

Continued to work on the menu display logic. Hope to finish the functionality of this page by tomorrow.

Monday, June 3, 2013

Day 22: Page Navigation


  • Referred to this article which explains briefly how to navigate and pass parameters from one page to the another.

Day 23: Tweaks to the Menu Selection UI

  • Was working on arranging the image carousel additionally with a textblock & textbox to store the quantity of each menu ordered. This cannot be added in the Main control since the events related to the picture browsing were in the Carousel control, and the quantity ordered information needs to be synchronizing with the picture swiping. The carousel control was not aligning properly when new controls were added to it.

  • Read articles on serializing and sending objects over WCF.

Wednesday, May 29, 2013

Day 20 & 21: Fixed SQL Server CE Image loading issue

It was a tough couple of days trying to get data out of the SQL Server CE DB. After referring to many articles, found a way to convert the System.Data.Linq.Binary type to a byte array, and in turn convert it to the intended System.Windows.Controls.Media.Image data type by using an intermediary BitMapImage data type.

But I couldn't test this since I was faced with another issue of setting up a connection string to the DataContext class that was generated by the SQL Server CE Toolbox component. What I have learnt is, when a password is used upon the DB, it uses some encryption,and the contents of it cannot be viewed through Visual Studio 2010 or any other Desktop DB extraction tool. This was annoying. Removing the password did give relief to some extent, yet database was not found kind of an exception occurred. After several twists here and there, I was able to see my food menu images on the simulator around 3.00am. Yippee...!

Yet I thought of writing up an article later about the different kinds of issues and achievements made in making a connection to the DB and retrieving images and etc, since there aren't many content on the web that address these issues in detail.

Looking forward to finish the Menu Selection page tonight.

Monday, May 27, 2013

Day 19: Retrieving Image from SQL Server CE problem


Last night was able to manage a couple of things:
  • Windows Phone Silverlight Toolkit resolved by worry of an alternative to Combo box. This toolkit provides a control called the ListPicker, which more or less acts the same way as a conventional drop down menu.
  • Managed to get the 3D Image Carousel control rendering on my Mobile Application project.
  • Got the DataContext classes for the tables of the SQL Server CE DB auto generated from the SQL Server CE Server Explorer.
The existing 3D Image Carousel control code expects a URL of Images from the local storage and renders the images on the screen. But my need was to load the images from the DB. So I had to do some changes to the existing code:
This is the existing code:

 // dependency property  
     public static DependencyProperty ListImagesCarouselProperty =  
     DependencyProperty.Register("ListImagesCarousel", typeof(List<string>), typeof(Carousel3D), new PropertyMetadata(null));  
     public List<string> ListImagesCarousel  
     {  
       get  
       {  
         return (List<string>)GetValue(ListImagesCarouselProperty);  
       }  
       set  
       {  
         SetValue(ListImagesCarouselProperty, value);  
         // set visibility to Visible -> this shows up all controls on UI  
         gridMainCarousel.Visibility = System.Windows.Visibility.Visible;  
         AddImagesToCarousel();  
         // set position to center of images  
         SetIndex(_images.Count / 2);  
         Start();  
       }  
     }  
  // Add images to Canvas  
     private void AddImagesToCarousel()  
     {  
       if (ListImagesCarousel != null && ListImagesCarousel.Count > 0)  
       {  
         for (int i = 0; i < ListImagesCarousel.Count; i++)  
         {  
           // get the image url  
           string url = ListImagesCarousel[i];  
           Image image = new Image();  
           image.Source = new BitmapImage(new Uri(url, UriKind.RelativeOrAbsolute));  
           // TAG is used as an identifier for images  
           image.Tag = i.ToString();  
           // event Tapped to find selected image  
           image.Tap += image_Tap;  
           // add and set image position  
           LayoutRoot.Children.Add(image);  
           SetPosImage(image, i);  
           _images.Add(image);  
         }  
       }  
     }  

MSDN describes the Dependency Property as:

Dependency properties and the WPF property system extend property functionality by providing a type that backs a property, as an alternative implementation to the standard pattern of backing the property with a private field.
The first line would change as:
 public static DependencyProperty ListImagesCarouselProperty =    
   DependencyProperty.Register("ListImagesCarousel", typeof(List<Image>), typeof(Carousel3D), new PropertyMetadata(null));    

The remaining code in the Carousel control class was changed as highlighted in color.


   public List<Image> ListImagesCarousel   
    {   
     get   
     {   
      return (List<Image>)GetValue(ListImagesCarouselProperty);   
     }   
     set   
     {   
      SetValue(ListImagesCarouselProperty, value);   
      // set visibility to Visible -> this shows up all controls on UI   
      gridMainCarousel.Visibility = System.Windows.Visibility.Visible;   
      AddImagesToCarousel();   
      // set position to center of images   
      SetIndex(_images.Count / 2);   
      Start();   
     }   
    }   
  // Add images to Canvas   
    private void AddImagesToCarousel()   
    {   
     if (ListImagesCarousel != null && ListImagesCarousel.Count > 0)   
     {   
      for (int i = 0; i < ListImagesCarousel.Count; i++)   
      {   
       // get the image url   
       //string url = ListImagesCarousel[i];   
       Image image = new Image();   
       //image.Source = new BitmapImage(new Uri(url, UriKind.RelativeOrAbsolute));  
       image = ListImagesCarousel[i];  
       // TAG is used as an identifier for images   
       image.Tag = i.ToString();   
       // event Tapped to find selected image   
       image.Tap += image_Tap;   
       // add and set image position   
       LayoutRoot.Children.Add(image);   
       SetPosImage(image, i);   
       _images.Add(image);   
      }   
     }   
    }  

All this was fine, and I used a separate business logic class to retrieve the menu images using LINQ. The images are returned as a System.Data.Linq.Binary type from the auto generated data-context class. But there was a problem mapping it to a System.Windows.Controls.Image data type, as the Image type used in the above code is actually the fore mentioned type. Hope to find a solution for it tonight.

Sunday, May 26, 2013

Day 18: Added data to the SQL Server CE

It wasn't a productive weekend. Inserting an image into a SQL CE table is different from the bigger versions of SQL Server. After some search on the internet, with the help of the already installed SQL CE Toolbox controls, I was able to add Menu images to the DB. The method of how I inserted images is given below:



By right clicking on the table I selected --> Edit Top 200 Rows and then the below row list appears. I right click on the cell where the image is to be inserted and select "Import Image" where I choose the image.




Monday, May 20, 2013

Day 17: Testing Image carousel

Yesterday, spent time exploring a solution for the image carousel which was previously appearing vertically. A very nice alternative solution was found here, which the solution would only open up on Visual Studio 2012 and on Windows 8, since Visual Studio 2012 IDE for Windows Phone Development is supported only on Windows 8. So I manually added the code and relevant structure to a self made Visual Studio 2010 Windows Phone Application project, and with fixing a few compilation errors, managed to get the image carousel sliding, as shown in the original article. Was also referring to articles and videos on implementing Pivot controls for displaying information. Pivot controls provide a smooth user experience to drill down and visualize information in a nice manner. Unfortunately time wouldn't permit to implement it.

Found a solution for the missing combo box via the "ListPicker" provided by the Windows Phone Toolkit.

All these days I believe I have done sufficient reading for the implementation. Also sample tests for each new area has been experimented. Tonight hope to revise the implementation strategy, identifying key areas to be developed, based on the various technologies and approaches learnt so far.

Friday, May 17, 2013

Day 16: Reading materials on WCF further

While reading more on WCF and Duplex Contract, I came across this article, which explains the usage of WCF Duplex Contract with MSMQ (Microsoft Message Queuing). MSMQ is a free service available on Windows Operating systems which handles incoming message requests from clients connecting to it. In the case of a network dis-connectivity, a previous request would remain in the queue and continue operation once the connection is back. At the same time whenever the server is in a high workload the MSMQ coordinates all requests in an effective manner. This would be handy for my project if MSMQ would support the coordination of XML files. Have read elsewhere about a possibility.
If there are multiple orders made at the same time MSMQ could avoid connectivity failures by functioning as a middle layer. The layout would be something similar to this:


The above image was found on the internet and has been described how the MSMQ service would work for a single client. For the moment I have no idea to implement this and would go ahead without the Queue in the middle. Depending on the time available, I would consider implementing this.

Wednesday, May 15, 2013

Day 15: WCF Duplex Connectivity & Contracts

Yesterday, i was left with a question on how to trigger notifications to a desktop application from a WCF service. Since the requirement was, if a user notifies the common server that he has arrived at some branch, the notification should be delegated to the correct branch. This could be achieved via WCF Duplex. Utilizing the free time at office tried the example application described at:
http://www.codeproject.com/Articles/491844/A-Beginners-Guide-to-Duplex-WCF

This was a complete new thing to me. While the WCF service defines the client method definitions, the client methods are implemented in the client application and through a special service contract the WCF service is able to call/trigger the client application methods.


Now this example was nicely illustrated between a WCF service and a single desktop application. Have to decide how this could suit my needs where a WCF application, a mobile application and a desktop application are involved.

While trying out the example faced a couple of issues:
  • The Visual Studio WCF Test Client was throwing errors every time I tried to run the web service. Later found from MSDN that Duplex Contracts were not supported in the WCF Test Client. Disabled this through the project properties and continued working.
  • When trying to run the client application "port 80 being used by another application" error was thrown. As I have experienced the similar error before when dealing with HTTP connectivity, my experience played in to rectify it. The default Skype settings is configured to use port 80. Unless we disable this, no other application would be able to use it.
Have to look forward the service contract implementations in the project.

Tuesday, May 14, 2013

Day 14: Preparation of other project types and Web Service contracts

Created the WCF service, and Branch Application UI screens. The identified service contracts methods for the common web service are as below:


    [ServiceContract]
    public interface IService1
    {
        // TODO: Add your service operations here

        [OperationContract]
        Int64 SaveOrder(Models.Order order);

        [OperationContract]
        void NotifyArrivalForOtherBranch(Int64 orderID,int currentBranchID,int tableNo);

        [OperationContract]
        void NotifyArrival(Int64 orderID, int tableID);

        [OperationContract]
        void NotifyArrival(Int64 orderID);

        [OperationContract]
        DataSet GetOrderDetails(Int64 orderID);

        [OperationContract]
        int GetTimeForConfiguration(string configuration);

        [OperationContract]
        string GetBranchName(int branchID);

        [OperationContract]
        double GetTotal(int orderID);
       
    }

The methods are yet to be implemented. Planning to create another class to handle the business logic between operations. Have to investigate on how to trigger notifications from the web service to the branch application whenever a user has made a notification of arrival.

Read an article on IsolatedStorage on Windows Phone 7 from the following link:
http://www.jeffblankenburg.com/2010/10/15/31-days-of-windows-phone-day-15-isolated-storage/

The article nicely details the Isolated storage options on a Windows Phone. There are basically two ways:
  1. Using name-value pairs and storing them as IsolatedSettings, where we can save as Custom objects, given the fact that we retrieve them using an explicit cast.
  2. Storing it in the file system of the phone.
Isolated storage means the data resides within the phone, and the storage doesn't allow you to share information externally. I felt that option 1 would suit well to store the Order as an object instead of an XML file. 
Yet needed a way to retrieve initial data for the application such as menu details, location details from the SQL Server CE. Windows Phone 7.1.1 update seems to have LINQ to SQL functionality. Need to get this update.



Sunday, May 12, 2013

Day 13: Notify Screen

Designed the notify screen:


This screen will appear when the user has previously placed an order. Still investigating an alternative control/approach for a dropdownlist, as Windows Phone 7 doesn't have such a control. As mentioned earlier the arrival location will be currently set based on the time of the order, but will be replaced to show based on GPS location.

Read part of an article on implementing MVVM for Windows Phone development at http://msdn.microsoft.com/en-us/library/windowsphone/develop/gg521153(v=vs.105).aspx.
The INotifyPropertyChanged interface used upon the Model classes is the key to notify property changes to the views. The PropertyChanged event can be raised on properties that are subtle to change during the application. 

Tuesday, May 7, 2013

Day 12: Added Confirmation Screen & Preparation of DataContainers

Managed to get the Confirmation screen designed as below:


This will show a summary of the user selection. Once the user clicks on "Place Order" the order will be sent to the Common Server, and the generated Order ID will be displayed as below:


Then the user will be prompted to "Save" the order and the confirmation will be displayed as below:


At this point the buttons need to disappear, which I will fix it in future, or I have to add a "Done" button.

Investigated on ORM (Object Relational Mapping) tools for Sql Server Compact edition. Found this tool,and need to read about it.

With this screen the UI designs for placing an order is done. Have to focus on notice of arrival UIs.

Sunday, May 5, 2013

Day 11: Designed Menu Selection and Table Selection screens

Windows Mobile Phone designing is not easy as it could be as with Win Forms development. Managed to get the Menu Selection & Table selection screens designed. The image carousel still needs to be investigated further to set it to horizontal view. The images are currently loaded from a folder. Will have to retrieve them from the DB later.

Referred to various a Image Carousel implementations, and came across a nice opensource framework called FluidKit from Codeplex. It is implemented for WPF. Have to see whether the image slider idea in it could be used for the project.

Menu Selection
The menu selection screen would work like this: User will be abale to browse through each item. As an item is focused, the name and price of it will be displayed. User can select the quantity of it and move to the next item or once all items confirmed, can click on "Confirm" to move to the "Table Selection" screen.


Table Selection
This screen items are optional so user could choose to skip to go to the confirmation screen, or could make a choice of the preferred table. Need to add branch selection option at the top, so the type of seats and table numbers (with pictures) can be displayed dynamically for each branch.

Wednesday, May 1, 2013

Day 10: Created tables in the DBs


Luckily I already had SQL Server 2008 R2, SQL Server 2008 and SQL Server Compact editions installed in my computer. Created the planned schema as follows:

  • SQL Server 2008 R2 - for the Common DB
  • SQL Server 2008 - Branch DB (Will clone the same to another SQL Server 2008 Express database, to simulate the DB for another branch).
  • SQL Server Compact - for Mobile.
The diagrams for each database are given below:

Tables for the Common DB
In addition to the planned schema for the Common DB, I have added a stand alone table called TimeConfiguration to maintain various time related information to the system, such as order expiry time & table reservation expiry time.

Tables for the Branch DB


Tables for the Mobile DB

Friday, April 26, 2013

Day 9: Finalized DB schema and other storage plans.

Was not able to go ahead with the schedule due to extra office work. Anyway last night managed to come with the storage structure for the system. The storage will be spread out as the following:

  1. Common DB (SQL Server 2008 R2) - Common Server
  2. Branch DB (SQL Server 2008 R2) - Branch Server
  3. Mobile Phone DB (SQL Server Compact) - Mobile Phone
  4. XML file in the mobile phone to store & send the order over the internet. - Mobile Phone
Common DB Structure

Orders
  • TokenNumber - PK
  • OrderedForBranch - FK to Branch.BranchCode & BranchTable.BranchCode
  • OrderedDate
  • TableReserved
  • TableAttendTime
  • TableNo.
Menu Order
  • MenuID - FK to Menu.MenuID
  • TokenNumber - FK to Orders.TokenNumber
  • Quantity
Menu
  • MenuID - PK
  • FoodCode - Unique
  • FoodDescription
  • FoodPrice
  • FoodImage
Branch
  • BranchCode - PK
  • BranchName
BranchTable
  • BranchCode - PK, FK to BranchCode.BranchCode
  • TableNo. - PK
  • TableType (2,4,6,8 or 10 seater)
  • Image
Branch DB

Menu
  • MenuID - PK
  • FoodCode
  • FoodDescription
  • FoodPrice
  • Available
IncomingOrders
  • TokenNumber
  • TableNo.
  • NotifiedTime
  • OrderedDate
  • OrderedForBranch
Mobile DB
A cloned version of the Menu, Branch & BranchTable schemas from the CommonDB will be created on the Mobile DB to avoid delays in connecting, retrieving and displaying information remotely.

XML File to store or send order from Mobile:
<order>
  <orderid></orderid>
  <items>
    <item>
      <code></code>
      <price></price>
    </item>
  </items>
  <orderedforbranch tablereserved ="false">
    <tableno></tableno>
  </orderedforbranch>
  <ordereddate></ordereddate>
</order>

Instead of having a location setting table separately (within a branch), I've decided to have a table called BranchTable which contain list of tables at each branch, where some tables might contain surrounding images along with it.

I haven't considered a configuration arrangement to edit the expiration datetime of reserved table. Currently it can be assumed (hard coded) as 15 minutes from table attend time, as well as the expiration of an order (if unattended) as 2 hours from the table attend time. Also the Administration console for changing food prices and images are not considered as part of the proposal.

As for the current research, I couldn't finalize a way to detect the automatic arrival of user at a particular branch using GPS as the Windows Phone 7 simulator needs to be configured to suit the development PC with internet connectivity. Until further research, the option to notify the correct location of arrival will be enforced upon the user.

During the weekend, planning to create two similar clones of DB servers to simulate DB requirements for two different branches, and a SQL Server Compact server for the mobile. Read a tip of free SQL Server hosting available on Amazon.

Got a suggestion from a colleague to include NUnit testing framework to avoid repeated debugging.

Thursday, April 25, 2013

Day 8: 24.04.2013 (Wednesday)

Read an article on using the MVVM pattern for Windows Phone 7 development.

MVVM Stands for:

  • M - Model
  • V - View
  • VM - View Model
Model is used for handling the business logic of the application.

View is the user interface, and in Windows Phone 7 it is implemented using XAML.

The View Model stands as a transforming middle layer between the model and the view. It basically takes changes from the view and call the appropriate functionality in the model, while it also transforms the data generated in the model to make it useful in the view.



Thursday, April 18, 2013

Day 7: Created Essential Tables


  • Created a mock of the necessary tables using Visio 2010 as below

  • Have to decide which of these table/data structures will be created on the phone and on the common server. 
  • Referred to articles and watched a video on MSDN of the various storage methods available in Windows Phone 7:
    • Isolated Storage settings (stores it during the application)
    • File & folder structure
    • SQL Server Compact

Wednesday, April 17, 2013

Day 6: XML Structure for Storing order


  • Created an XML Structure for storing an order in the phone like the following:
  • Started designing the CommonDB structure. Hope to catch up soon with the plan.
  • Tried a demo in retrieving location information.

Friday, April 12, 2013

Day 5: Navigating between states in Windows Phone 7

Utilized the free time at office to watch some video tutorials at office. This time watched some tutorials from MSDN. Further to the explanation learnt  from PluralSight.com yesterday, the videos explained clearly how a Windows Phone 7 application could be handled between the Activated, Deactivated, Launch and Close events.

It was much more clear that Tomb-stoning state refers to either the Deactivated or Closed events.

Though not relevant, also watched a video on the difference between a sample Android application and Windows Phone 7 application.

Won't able to study stuff tonight due to the long travelling home. Hope to start some of the DB design work during the weekend.

Thursday, April 11, 2013

Day 4: Windows Phone 7 Application life cycle.


  • Watched tutorials on Windows Phone 7 on Pluralsight.com.
  • Learned about the Application life cycle of a Windows Phone 7 application, and some terminologies involved with it.
    • Persistent Data: Data that is maintained across a given session of an application
      • Ex: User settings etc
    • Transient Data: Data that is maintained for a particular/individual session of an application.
      • User entering or touching some data only to be used once in the application
    •  Page State: How a page looks like
      • The location ,color and sizing if controls on a page etc.
    • Application State: Information about the whole application
      • Using some service classes, not associated with a given page, but contributes in the overall functioning of an application.
    • Tombstoning: This is a term specifically used for Windows Phone 7, which refers to a process of Deactivating an application while preserving the state (includes Transient Data, Page State & Application State)
The Application Life Cycle consists of the following phases:
  • Launch: Starting an application
  • Running
  • Closed (Ex: User clicks the back button)
  • Reactivate: A deactivated application can be reactivated to its previous state (Using Transient data).
  • Deactivate (Clicking on something other than the application, like datetime at the top of the screen, or if the phone lock screen appears, or when some other application is run from the current programme).
Application Lifecycle of a Windows Phone 7

These lessons learnt would be needed to be considered during the ordering and notification process,especially the state related information, so that the user food order could be saved in the mobile phone until the notification of arrival is made.

Wednesday, April 10, 2013

Day 3 (10th April, 2013)


  • Continued reading Charles Petzold's book. Found an interesting piece of information which is common to all latest touch phones:

OLED (Organic Light Emitting Diode) display consumes less than half the power of an LCD display of the same size, but only when the screen is mostly black. For an all-white screen, an OLED consumes more than three times the power of an LCD.

  •  Regarding the touching feature of Windows Phone 7, they say:

The screens incorporate capacitance-touch technology, which means that they respond to a human fingertip but not to a stylus or other forms of pressure. Windows Phone 7 screens are required to respond to at least four simultaneous touch-points.
 Al though for the project multi touch will not be necessary, nor can be tested on the Windows Phone Emulator on the PC. During development the mouse click events would mimic the functionality of a human finger.

Tuesday, April 9, 2013

Day 2: More Video Tutorials and first Mobile App

Watched 2nd set of tutorials from www.pluralsight.com on how to create a normal windows phone app, a windows phone panoramic application which slides the contents across the screen, and a windows phone pivot app, which is similar to panoramic, but allows to view more details while sliding.

Soon after the videos I quickly started up creating the first GUI for the project based on the article provided at http://www.cespage.com/silverlight/wp7tut27.html. That article discusses how to create an image carousel on a Windows Phone 7 interface. It doesn't support click events.

Here below are the initial screen and the main screen on the Windows Phone Emulator for 512MB RAM:

The initial screen when the Windows Phone Emulator loaded for the first time


The initial screen for the mobile app developed with a sliding image carousel


Monday, April 8, 2013

Day 1: Windows Mobile 7 Basics


  • Last night watched some introductory videos on Windows Mobile 7 application development from www.pluralsight.com. 
  • Did some reading in the introduction section of Charles Petzold's Programming Windows Phone 7
  • Have to watch remaining videos tonight.