<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4540553777968119457</id><updated>2011-11-27T23:21:41.600-08:00</updated><category term='Qt'/><category term='Hardware'/><category term='D-Bus'/><category term='service adaptation'/><category term='dialer'/><category term='TCP/IP'/><category term='telephony'/><category term='Dialer UI'/><category term='symbian'/><category term='porting'/><category term='GsmService'/><title type='text'>Stunning (but secret) Mobile Linux Project</title><subtitle type='html'>Architect's blog for a "really new" Mobile Linux project.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://secretlinuxmobile.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4540553777968119457/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://secretlinuxmobile.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Michael Laine</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>12</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4540553777968119457.post-5846433945997425318</id><published>2010-01-28T06:26:00.000-08:00</published><updated>2010-01-28T23:10:09.344-08:00</updated><title type='text'>Round Pegs Through a Square Hole</title><content type='html'>Hardware integration is moving rapidly. You know, spinning around, hopping about, and generally just.. moving... rapidly.&lt;br /&gt;&lt;br /&gt;One of our most recent hiccups has been integrating our wonderful application suite with the Window Manager. Now, don't get me wrong, we have tried to avoid an unhealthy relationship with the whole contraption, but we are limited by it wherever it has not been set up according to our liking.&lt;br /&gt;&lt;br /&gt;One of the things we like to do is moving application windows outside the screen area, i.e. move them over the edge of the screen. This is kind of like "pushing the boundaries", or "expanding our horizons", but really its really more like ignoring the boundaries altogether...&lt;br /&gt;&lt;br /&gt;Now you might think it strange that we should do something like that. You may say: "how are applications useful when they are located outside the screen?" The answer is, that they are brought into view again when needed. And how? Well, using a very sophisticated system, of course. And sophisticated systems R us!&lt;br /&gt;&lt;br /&gt;This brings us to the actual topic of this entry. How to manage application windows on the screen.&lt;br /&gt;&lt;br /&gt;As mentioned before, the system relies on XML/TCP/IP connections where IPC is required, so we already have a method for having applications communicate with each other. Secondly, we have an application development platform (Qt), which allows widgets to be moved and hidden and whatnot.&lt;br /&gt;&lt;br /&gt;Lets begin by listing the goals that we have for window management:&lt;br /&gt;- moving windows&lt;br /&gt;- animating (interpolating) the locations of application windows on the screen (which is really just an application of the above)&lt;br /&gt;- bringing application windows to the foreground&lt;br /&gt;- hiding application windows&lt;br /&gt;&lt;br /&gt;Now, most platforms allow application processes to handle these for themselves: they may move their windows all around the screen, bring their windows to view and hide them again. Of course, with limitations. Additionally, there is almost always a mechanism for actually "managing" all the windows on a screen in a more authoritarian manner. This is often called the Window Manager.&lt;br /&gt;&lt;br /&gt;What we have done in our implementation, is we've used a traditional Linux Window Manager. But this doesn't have to be, and indeed will not be in some of the ported versions of this software. Instead, the moving around of windows will be performed by&lt;br /&gt;the individual applications, and overseen by a process that has - for the sake of safety - the ability to kill other application processes if they start misbehaving.&lt;br /&gt;&lt;br /&gt;All this can actually be done without touching a window manager at all! The applications are all built in a framework, which allocates windows in the first place, and thus there is great control over the goings on of application windows from there. This can, then, be used via IPC from the "Central", which is and has always been, the core of our system.&lt;br /&gt;&lt;br /&gt;Now the mind blowing part of all this is that it allows for unparalleled portability: what system can actually boast of a full windowing system that does not require native components to perform that task?&lt;br /&gt;&lt;br /&gt;Of course, to be fair, the applications do use native routines implicitly through the Qt libraries, but that is somebody else's headache :-)&lt;br /&gt;&lt;br /&gt;To conclude, I wanted to share one particular example of an application window residing and appearing from outside the device's screen: the virtual keyboard.&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;center&gt;&lt;img src="http://lh4.ggpht.com/_a5u-k5F9UqY/S2Gyc0pbpVI/AAAAAAAAACw/tFcQq_271es/kbd_anim.gif"&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;In this example, the "TextInput" application makes a kind request for the virtual keyboard to appear. This is routed through the "Central" component, which in turn tells the virtual keyboard it should appear.&lt;br /&gt;&lt;br /&gt;Currently the implementation is done using the Window Manager (authoritarian way), but could just as well be implemented using Qt's QWidget::move() function.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4540553777968119457-5846433945997425318?l=secretlinuxmobile.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://secretlinuxmobile.blogspot.com/feeds/5846433945997425318/comments/default' title='Lähetä kommentteja'/><link rel='replies' type='text/html' href='http://secretlinuxmobile.blogspot.com/2010/01/round-pegs-through-square-hole.html#comment-form' title='0 kommenttia'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4540553777968119457/posts/default/5846433945997425318'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4540553777968119457/posts/default/5846433945997425318'/><link rel='alternate' type='text/html' href='http://secretlinuxmobile.blogspot.com/2010/01/round-pegs-through-square-hole.html' title='Round Pegs Through a Square Hole'/><author><name>Michael Laine</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_a5u-k5F9UqY/S2Gyc0pbpVI/AAAAAAAAACw/tFcQq_271es/s72-c/kbd_anim.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4540553777968119457.post-8377509712691591861</id><published>2010-01-13T00:57:00.000-08:00</published><updated>2010-01-13T03:38:00.407-08:00</updated><title type='text'>GUI Architecture Revisited</title><content type='html'>The GUI architecture is designed to allow several separate applications, running in their own processes obviously, to function together as a cohesive UX system.&lt;br /&gt;&lt;br /&gt;Secondly, the applications are expected to use platform services through a single point of access and API.&lt;br /&gt;&lt;br /&gt;To achieve this, a TCP/IP communications method is used. Control messages (related to the GUI), service discovery, and service usage is all done through the same channel. To the application programmer, this is not revealed, but instead a collection of APIs are provided. The code for XML messaging over TCP/IP is contained within the code of each service.&lt;br /&gt;&lt;br /&gt;So, an application will tell the GsmService client instance to dial a number, the GsmService's client-side code will send an XML-message (via TCP/IP, through "Central") to the actual GsmService process. The GsmService process then uses the underlying platform's native services (via D-Bus in the case of moblin, through CTelephony on Symbian).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_a5u-k5F9UqY/S02Xu-baYLI/AAAAAAAAABA/k8wl0EowiUo/s1600-h/3-level-arch.PNG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 189px;" src="http://1.bp.blogspot.com/_a5u-k5F9UqY/S02Xu-baYLI/AAAAAAAAABA/k8wl0EowiUo/s320/3-level-arch.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5426159959339065522" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Graphically, it is traditionally difficult for separate applications to interact in a seamless way. In Windows Vista, this is achieved by having everything work through HW acceleration. This allows for windows to be rotated and skewed, with their contents still updating.&lt;br /&gt;&lt;br /&gt;In a mobile software stack, especially a portable one, the problem of drawing several elements on top of each other in a seamless way, is a more difficult one to solve. In our architecture, it is done by sending offscreen pixmaps via TCP/IP to the HomeScreen. Those offscreens can then be rotated, skewed, overlayed with something else or whatever. Seems to work very nicely!&lt;br /&gt;&lt;br /&gt;Below are a couple of shots with separate apps running side-by-side. In the left one, a dialer application sits on top of the HomeScreen application, which draws the card boundaries. On the right, an application is partly covered by the virtual keyboard application.&lt;br /&gt;&lt;br /&gt;&lt;table&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;&lt;img width=177 height=320 src="http://3.bp.blogspot.com/_a5u-k5F9UqY/S02vu5DATKI/AAAAAAAAABI/JMKmQUGcsF4/s320/screenshot_Dialer_small.png" border="0"/&gt;&lt;/td&gt;&lt;br /&gt;&lt;td&gt;&lt;img width=177 height=320 src="http://1.bp.blogspot.com/_a5u-k5F9UqY/S02vvGDFcPI/AAAAAAAAABQ/jpqAFL_ky1c/s320/screenshot_TextInput_small.png" border="0"/&gt;&lt;/td&gt;&lt;br /&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4540553777968119457-8377509712691591861?l=secretlinuxmobile.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://secretlinuxmobile.blogspot.com/feeds/8377509712691591861/comments/default' title='Lähetä kommentteja'/><link rel='replies' type='text/html' href='http://secretlinuxmobile.blogspot.com/2010/01/gui-architecture-revisited.html#comment-form' title='0 kommenttia'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4540553777968119457/posts/default/8377509712691591861'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4540553777968119457/posts/default/8377509712691591861'/><link rel='alternate' type='text/html' href='http://secretlinuxmobile.blogspot.com/2010/01/gui-architecture-revisited.html' title='GUI Architecture Revisited'/><author><name>Michael Laine</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_a5u-k5F9UqY/S02Xu-baYLI/AAAAAAAAABA/k8wl0EowiUo/s72-c/3-level-arch.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4540553777968119457.post-7029478580092062719</id><published>2010-01-12T04:41:00.000-08:00</published><updated>2010-01-13T00:56:58.031-08:00</updated><title type='text'>First look at the GUI Applications!</title><content type='html'>Ok, the day has arrived. Last year I promised some "swashbuckling" UI-imagery, but was prevented from uploading any concept photos then. But your wait is over now!&lt;br /&gt;&lt;br /&gt;This is the first screenshot, but I'll post more in coming days - I promise :-)&lt;br /&gt;The below image depicts the "main view", with new tweets shown as little "cards"... The contents of the tweets are not mine/ours...&lt;br /&gt;&lt;br /&gt;The image is pretty much self-explanatory, except for the neat background, which calls for a special mention: the background represents the current time of day (color brightness) and weather (rain drops) dynamically. It can show clear weather, snow, or rain.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_a5u-k5F9UqY/S0xxwiOyAII/AAAAAAAAAA4/jLB7Avs1MeA/s1600-h/screenshot_TimeLine_small.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 178px; height: 320px;" src="http://3.bp.blogspot.com/_a5u-k5F9UqY/S0xxwiOyAII/AAAAAAAAAA4/jLB7Avs1MeA/s320/screenshot_TimeLine_small.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5425836729711067266" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Little by little, we are getting closer to having a complete system running. All of this is, of course, in preparation for an upcoming mobile congress..&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4540553777968119457-7029478580092062719?l=secretlinuxmobile.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://secretlinuxmobile.blogspot.com/feeds/7029478580092062719/comments/default' title='Lähetä kommentteja'/><link rel='replies' type='text/html' href='http://secretlinuxmobile.blogspot.com/2010/01/first-look-at-gui-applications.html#comment-form' title='0 kommenttia'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4540553777968119457/posts/default/7029478580092062719'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4540553777968119457/posts/default/7029478580092062719'/><link rel='alternate' type='text/html' href='http://secretlinuxmobile.blogspot.com/2010/01/first-look-at-gui-applications.html' title='First look at the GUI Applications!'/><author><name>Michael Laine</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_a5u-k5F9UqY/S0xxwiOyAII/AAAAAAAAAA4/jLB7Avs1MeA/s72-c/screenshot_TimeLine_small.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4540553777968119457.post-7933700566989870720</id><published>2009-12-17T01:21:00.000-08:00</published><updated>2009-12-27T22:58:31.397-08:00</updated><title type='text'>Qt, GLWidgets, and the Hardware!</title><content type='html'>Hi guys!&lt;br /&gt;Its been some time now, since my previous post. And a LOT has happened since!&lt;br /&gt;&lt;br /&gt;Two of the most important events have been the release of Qt 4.6 and obtaining the Hardware platforms we will be using for further development.&lt;br /&gt;&lt;br /&gt;One of the big questions has been the performance of Qt applications on a mobile device. This is something we obviously haven't tested yet, as the operating system package for flashing is only being compiled as I write, but I am hopeful that if our HW vendor can get its driver act together, we'll have a beautiful and smooth UI in the making here.&lt;br /&gt;&lt;br /&gt;A month ago I, as the project's architect, went through a slightly stressy phase related to the graphics. You see, there are really two ways of doing the graphics: OpenGL+Qt drawing within a GLWidget, or by using the OpenGL graphics system for the entire Qt drawing. The GLWidget route has been the plan from the beginning, but some team members expressed their grave concern over the smoothness of graphics (they have since changed their minds, and accepted the architecture allows for great graphics), but in any case, I had to go thought the options.&lt;br /&gt;&lt;br /&gt;What I did, then, was go through the options...&lt;br /&gt;&lt;br /&gt;Using GLWidget has a strange feature, or maybe it should be called a bug: transparency does not work from GLWidget to GLWidget. The workaround is to implement draw and interaction event passing yourself, and draw into the same (top level widget's) QPainter. This allows for fast graphics, but not really the kind of programming experience that you would like.&lt;br /&gt;&lt;br /&gt;Getting back to the team on this, we decided to stick with Qt's opengl rendering via "-graphicssystem opengl". This seemed like a great idea, especially since Qt 4.6 became final that same day!&lt;br /&gt;&lt;br /&gt;The tension mounts, as we wait for good HW drivers for the hardware. This pretty much makes or brakes the whole system, as far as graphics are concerned.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4540553777968119457-7933700566989870720?l=secretlinuxmobile.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://secretlinuxmobile.blogspot.com/feeds/7933700566989870720/comments/default' title='Lähetä kommentteja'/><link rel='replies' type='text/html' href='http://secretlinuxmobile.blogspot.com/2009/12/qt-glwidgets-and-hardware.html#comment-form' title='0 kommenttia'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4540553777968119457/posts/default/7933700566989870720'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4540553777968119457/posts/default/7933700566989870720'/><link rel='alternate' type='text/html' href='http://secretlinuxmobile.blogspot.com/2009/12/qt-glwidgets-and-hardware.html' title='Qt, GLWidgets, and the Hardware!'/><author><name>Michael Laine</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4540553777968119457.post-1060908600581105478</id><published>2009-11-05T04:11:00.001-08:00</published><updated>2009-11-05T04:23:03.259-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='telephony'/><category scheme='http://www.blogger.com/atom/ns#' term='porting'/><category scheme='http://www.blogger.com/atom/ns#' term='Dialer UI'/><category scheme='http://www.blogger.com/atom/ns#' term='dialer'/><category scheme='http://www.blogger.com/atom/ns#' term='service adaptation'/><category scheme='http://www.blogger.com/atom/ns#' term='Qt'/><category scheme='http://www.blogger.com/atom/ns#' term='GsmService'/><category scheme='http://www.blogger.com/atom/ns#' term='symbian'/><title type='text'>Dialer UI &amp; First Actual Phone Calls</title><content type='html'>Hello again guys!&lt;br /&gt;Winter is slowly setting in, with the first sporadic snowflakes falling as I write this.&lt;br /&gt;Telephony now works! We have the entire software stack ready to use, and with the dialer UI I have now seen for myself.&lt;br /&gt;&lt;br /&gt;The architecture allows for very simple usage of system routines, for example:&lt;br /&gt;1) Dialer UI has SLOT "Dial", Which is Called When the User Clicks on "Call"&lt;br /&gt;&lt;font face = courier&gt;&lt;br /&gt;void Dialer::Dial( QString aNumber )&lt;br /&gt;{&lt;br /&gt;    gsmService-&gt;dial( aNumber );&lt;br /&gt;}&lt;br /&gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;2) The "dial"-Function Sends a Message via TCP/IP to the Service Process in Question&lt;br /&gt;This is where the service-specific stuff lives - the "service adaptation" layer. For each service there is an actual service process, and a client service class, such as "GsmService", that the client application can use. Simple, no?&lt;br /&gt;&lt;br /&gt;3) The Service Process uses the System's Actual Service&lt;br /&gt;In many cases this involves doing platform-specific things, such as using a service via D-Bus, as is the case in GsmService. If we want to port the system onto another platform, such as Symbian OS, we only have to rewrite this part&lt;br /&gt;&lt;br /&gt;4) Yes, it can be this simple :-P&lt;br /&gt;&lt;br /&gt;Anyhoo, I can now make phone calls directly from the "Dialer UI", using ofonod running on the system and a phone attached via USB. Very encouraging! Hopefully I'll be able to post pictures of this later on...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4540553777968119457-1060908600581105478?l=secretlinuxmobile.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://secretlinuxmobile.blogspot.com/feeds/1060908600581105478/comments/default' title='Lähetä kommentteja'/><link rel='replies' type='text/html' href='http://secretlinuxmobile.blogspot.com/2009/11/dialer-ui-first-actual-phone-calls.html#comment-form' title='0 kommenttia'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4540553777968119457/posts/default/1060908600581105478'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4540553777968119457/posts/default/1060908600581105478'/><link rel='alternate' type='text/html' href='http://secretlinuxmobile.blogspot.com/2009/11/dialer-ui-first-actual-phone-calls.html' title='Dialer UI &amp; First Actual Phone Calls'/><author><name>Michael Laine</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4540553777968119457.post-8397059476443988684</id><published>2009-10-27T06:35:00.000-07:00</published><updated>2009-11-05T04:23:43.580-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Hardware'/><category scheme='http://www.blogger.com/atom/ns#' term='TCP/IP'/><category scheme='http://www.blogger.com/atom/ns#' term='D-Bus'/><title type='text'></title><content type='html'>October... UI design, UI development, Hardware RFQs, Trying to tie widgets to services spanning TCP/IP, D-Bus and BEYOND!&lt;br /&gt;&lt;br /&gt;Ok, ok, lets turn down the dramatics here. But the truth remains that this project currently feels like a point-and-click adventure game.&lt;br /&gt;&lt;br /&gt;As most of my architectural drawings have already been finished, I've had time to work on some GUI implementation issues... such as the dialer UI. The dialer UI goes into the GUI framework, which in turn goes into the app system via TCP/IP. This way the application can use services provided by the "Central", without worrying too much about the underlying "core" implementation.&lt;br /&gt;&lt;br /&gt;Currently, due to an epic.. err... chain of events, I have to wait some hours before I can use the dialer system from my beautiful dialer UI.&lt;br /&gt;&lt;br /&gt;'nuff said, stay tuned for some swashbuckling UI-imagery later on... this year.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4540553777968119457-8397059476443988684?l=secretlinuxmobile.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://secretlinuxmobile.blogspot.com/feeds/8397059476443988684/comments/default' title='Lähetä kommentteja'/><link rel='replies' type='text/html' href='http://secretlinuxmobile.blogspot.com/2009/10/october.html#comment-form' title='0 kommenttia'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4540553777968119457/posts/default/8397059476443988684'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4540553777968119457/posts/default/8397059476443988684'/><link rel='alternate' type='text/html' href='http://secretlinuxmobile.blogspot.com/2009/10/october.html' title=''/><author><name>Michael Laine</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4540553777968119457.post-6872669522130953298</id><published>2009-09-16T01:48:00.000-07:00</published><updated>2009-09-16T02:13:03.566-07:00</updated><title type='text'>Qt tests</title><content type='html'>UI design is banging away at their molten iron, and we are busy trying to keep up with them :-) Ideas are being tossed both ways, and the final (G)UI is on its way!&lt;br /&gt;&lt;br /&gt;I can't reveal any secrets, even about my own ideas, at this point, but stay tuned.&lt;br /&gt;&lt;br /&gt;Mikael Laine's Qt drawing test:&lt;br /&gt;&lt;object width="320" height="266" class="BLOG_video_class" id="BLOG_video-4b1ae1d10430175c" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"&gt;&lt;param name="movie" value="http://www.youtube.com/get_player"&gt;&lt;param name="bgcolor" value="#FFFFFF"&gt;&lt;param name="allowfullscreen" value="true"&gt;&lt;param name="flashvars" value="flvurl=http://v23.nonxt1.googlevideo.com/videoplayback?id%3D4b1ae1d10430175c%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1331055347%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D8411F0845A1479B93AA6CBB2B21684F48B09FDEB.234F56812FD476EA39AA306E1DDF8D521AE8B693%26key%3Dck1&amp;amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3D4b1ae1d10430175c%26offsetms%3D5000%26itag%3Dw160%26sigh%3D9k2Suvl8JgDYKv8GzNq95AvzXuA&amp;amp;autoplay=0&amp;amp;ps=blogger"&gt;&lt;embed src="http://www.youtube.com/get_player" type="application/x-shockwave-flash"width="320" height="266" bgcolor="#FFFFFF"flashvars="flvurl=http://v23.nonxt1.googlevideo.com/videoplayback?id%3D4b1ae1d10430175c%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1331055347%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D8411F0845A1479B93AA6CBB2B21684F48B09FDEB.234F56812FD476EA39AA306E1DDF8D521AE8B693%26key%3Dck1&amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3D4b1ae1d10430175c%26offsetms%3D5000%26itag%3Dw160%26sigh%3D9k2Suvl8JgDYKv8GzNq95AvzXuA&amp;autoplay=0&amp;ps=blogger"allowFullScreen="true" /&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Timo Holopainen's Qt/OpenGL motion blur effects:&lt;br /&gt;&lt;br /&gt;&lt;object width="320" height="266" class="BLOG_video_class" id="BLOG_video-ae71adfd2fb24e67" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"&gt;&lt;param name="movie" value="http://www.youtube.com/get_player"&gt;&lt;param name="bgcolor" value="#FFFFFF"&gt;&lt;param name="allowfullscreen" value="true"&gt;&lt;param name="flashvars" value="flvurl=http://v1.nonxt1.googlevideo.com/videoplayback?id%3Dae71adfd2fb24e67%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1331055347%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D3D1DE2ECB4B50E47264563215F4CE571BD2270A4.1648BCDBC47044BE309C9F5E72CB47E59DA37514%26key%3Dck1&amp;amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3Dae71adfd2fb24e67%26offsetms%3D5000%26itag%3Dw160%26sigh%3DPTgfBo0jvO1shApXGipgbiYik1U&amp;amp;autoplay=0&amp;amp;ps=blogger"&gt;&lt;embed src="http://www.youtube.com/get_player" type="application/x-shockwave-flash"width="320" height="266" bgcolor="#FFFFFF"flashvars="flvurl=http://v1.nonxt1.googlevideo.com/videoplayback?id%3Dae71adfd2fb24e67%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1331055347%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D3D1DE2ECB4B50E47264563215F4CE571BD2270A4.1648BCDBC47044BE309C9F5E72CB47E59DA37514%26key%3Dck1&amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3Dae71adfd2fb24e67%26offsetms%3D5000%26itag%3Dw160%26sigh%3DPTgfBo0jvO1shApXGipgbiYik1U&amp;autoplay=0&amp;ps=blogger"allowFullScreen="true" /&gt;&lt;/object&gt;&lt;br /&gt;&lt;object width="320" height="266" class="BLOG_video_class" id="BLOG_video-61924f63dab941b9" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"&gt;&lt;param name="movie" value="http://www.youtube.com/get_player"&gt;&lt;param name="bgcolor" value="#FFFFFF"&gt;&lt;param name="allowfullscreen" value="true"&gt;&lt;param name="flashvars" value="flvurl=http://v1.nonxt6.googlevideo.com/videoplayback?id%3D61924f63dab941b9%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1331055347%26sparams%3Did,itag,ip,ipbits,expire%26signature%3DEF41A271C63DB2665D3D6A9A74C8DF9922E8DBA.2F1BFFF53111A9F8FD481A8EE0C78B442B7BA1CF%26key%3Dck1&amp;amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3D61924f63dab941b9%26offsetms%3D5000%26itag%3Dw160%26sigh%3DAm0DJrguiez4FrUJ4V_EVm2o-CM&amp;amp;autoplay=0&amp;amp;ps=blogger"&gt;&lt;embed src="http://www.youtube.com/get_player" type="application/x-shockwave-flash"width="320" height="266" bgcolor="#FFFFFF"flashvars="flvurl=http://v1.nonxt6.googlevideo.com/videoplayback?id%3D61924f63dab941b9%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1331055347%26sparams%3Did,itag,ip,ipbits,expire%26signature%3DEF41A271C63DB2665D3D6A9A74C8DF9922E8DBA.2F1BFFF53111A9F8FD481A8EE0C78B442B7BA1CF%26key%3Dck1&amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3D61924f63dab941b9%26offsetms%3D5000%26itag%3Dw160%26sigh%3DAm0DJrguiez4FrUJ4V_EVm2o-CM&amp;autoplay=0&amp;ps=blogger"allowFullScreen="true" /&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4540553777968119457-6872669522130953298?l=secretlinuxmobile.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://secretlinuxmobile.blogspot.com/feeds/6872669522130953298/comments/default' title='Lähetä kommentteja'/><link rel='replies' type='text/html' href='http://secretlinuxmobile.blogspot.com/2009/09/qt-tests.html#comment-form' title='0 kommenttia'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4540553777968119457/posts/default/6872669522130953298'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4540553777968119457/posts/default/6872669522130953298'/><link rel='alternate' type='text/html' href='http://secretlinuxmobile.blogspot.com/2009/09/qt-tests.html' title='Qt tests'/><author><name>Michael Laine</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4540553777968119457.post-708257709459087208</id><published>2009-09-11T03:37:00.000-07:00</published><updated>2009-09-11T03:43:56.222-07:00</updated><title type='text'>Back from the holidays</title><content type='html'>Ok, the last part of my summer holidays is now over, and its back to work for me. This week has been full of meetings, most notably our UI-design people!&lt;br /&gt;&lt;br /&gt;Currently we don't have the UI-design yet, but we will have a draft ready in about a week! Right now, the project has been split into two teams/projects: the so-called "core" team, and the "gui" team, of which the graphical designers are a part.&lt;br /&gt;&lt;br /&gt;The CORE team is (obviously) very much involved in implementing the below architecture, with its low-level services and other doodads...&lt;br /&gt;&lt;br /&gt;The GUI team, on the other hand, is brainstorming the design and figuring out how to actually draw the Qt-widgets etc. using HW acceleration and different effects.&lt;br /&gt;&lt;br /&gt;All kinds of demos, protos and other neat graphical stuff abounds, I'll try to post something concrete later on - stay tuned :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4540553777968119457-708257709459087208?l=secretlinuxmobile.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://secretlinuxmobile.blogspot.com/feeds/708257709459087208/comments/default' title='Lähetä kommentteja'/><link rel='replies' type='text/html' href='http://secretlinuxmobile.blogspot.com/2009/09/back-from-holidays.html#comment-form' title='0 kommenttia'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4540553777968119457/posts/default/708257709459087208'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4540553777968119457/posts/default/708257709459087208'/><link rel='alternate' type='text/html' href='http://secretlinuxmobile.blogspot.com/2009/09/back-from-holidays.html' title='Back from the holidays'/><author><name>Michael Laine</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4540553777968119457.post-8551888158491443121</id><published>2009-07-29T08:17:00.000-07:00</published><updated>2009-07-29T08:22:07.684-07:00</updated><title type='text'>Desktop widgets</title><content type='html'>After some holidays, a move to moblin, and some days at work:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_a5u-k5F9UqY/SnBoTMP3Z1I/AAAAAAAAAAc/H4Esb8Z7a3c/s1600-h/Screenshot.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://2.bp.blogspot.com/_a5u-k5F9UqY/SnBoTMP3Z1I/AAAAAAAAAAc/H4Esb8Z7a3c/s400/Screenshot.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5363901835112834898" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The above image says it all... well, maybe not quite :-)&lt;br /&gt;&lt;br /&gt;The architecture is coming along little detail by little detail. Here is one more.&lt;br /&gt;&lt;br /&gt;Previously we've had the "Central", which is responsible for launching other apps, and the other apps themselves are pretty much normal qt-apps.&lt;br /&gt;&lt;br /&gt;So what I've done now, is I've added the possibility for apps to have a "widget presence" on the "Central's" desktop (the weather icon in this case). This allows for at-a-glance information to be sent to the main view by all applications.&lt;br /&gt;&lt;br /&gt;Some kind of priorization/permission system needs yet to be conceived, but as it is, its looking quite nice! I guess the user could be in charge of desktop widgets...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4540553777968119457-8551888158491443121?l=secretlinuxmobile.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://secretlinuxmobile.blogspot.com/feeds/8551888158491443121/comments/default' title='Lähetä kommentteja'/><link rel='replies' type='text/html' href='http://secretlinuxmobile.blogspot.com/2009/07/desktop-widgets.html#comment-form' title='0 kommenttia'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4540553777968119457/posts/default/8551888158491443121'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4540553777968119457/posts/default/8551888158491443121'/><link rel='alternate' type='text/html' href='http://secretlinuxmobile.blogspot.com/2009/07/desktop-widgets.html' title='Desktop widgets'/><author><name>Michael Laine</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_a5u-k5F9UqY/SnBoTMP3Z1I/AAAAAAAAAAc/H4Esb8Z7a3c/s72-c/Screenshot.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4540553777968119457.post-3292434748197498999</id><published>2009-06-25T23:17:00.001-07:00</published><updated>2009-09-16T02:38:24.357-07:00</updated><title type='text'></title><content type='html'>Long time no post. We had a frantic sprint planning session last week, and the result was that we ended up dumping PokyLinux and moved to moblin!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4540553777968119457-3292434748197498999?l=secretlinuxmobile.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://secretlinuxmobile.blogspot.com/feeds/3292434748197498999/comments/default' title='Lähetä kommentteja'/><link rel='replies' type='text/html' href='http://secretlinuxmobile.blogspot.com/2009/06/long-time-no-post.html#comment-form' title='0 kommenttia'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4540553777968119457/posts/default/3292434748197498999'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4540553777968119457/posts/default/3292434748197498999'/><link rel='alternate' type='text/html' href='http://secretlinuxmobile.blogspot.com/2009/06/long-time-no-post.html' title=''/><author><name>Michael Laine</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4540553777968119457.post-1171190739402917404</id><published>2009-06-15T00:21:00.000-07:00</published><updated>2009-06-15T01:39:01.426-07:00</updated><title type='text'></title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_a5u-k5F9UqY/SjX4L-sZUJI/AAAAAAAAAAM/7_Rs96M2dYc/s1600-h/1_arch.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 218px;" src="http://4.bp.blogspot.com/_a5u-k5F9UqY/SjX4L-sZUJI/AAAAAAAAAAM/7_Rs96M2dYc/s320/1_arch.png" alt="" id="BLOGGER_PHOTO_ID_5347453017263788178" border="0" /&gt;&lt;/a&gt;Voila! There it is. We're five days into our first sprint (the first sprint is much shorter than normally, for several reasons), and we've pretty much met all our requirements already. "Hello World!" has been touted loud and clear on many a qemu-screen, and all is advancing well!&lt;br /&gt;&lt;br /&gt;The above figure illustrates the current architecture draft. In many ways the system needs to be reconsidered, but essentially the architecture is final.&lt;br /&gt;&lt;br /&gt;One interesting feature of the architecture (not shown on the screen) is an application lifecycle model, which is built into the base class of all apps on the platform. This should make work easier for the developer.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4540553777968119457-1171190739402917404?l=secretlinuxmobile.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://secretlinuxmobile.blogspot.com/feeds/1171190739402917404/comments/default' title='Lähetä kommentteja'/><link rel='replies' type='text/html' href='http://secretlinuxmobile.blogspot.com/2009/06/voila-there-it-is.html#comment-form' title='0 kommenttia'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4540553777968119457/posts/default/1171190739402917404'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4540553777968119457/posts/default/1171190739402917404'/><link rel='alternate' type='text/html' href='http://secretlinuxmobile.blogspot.com/2009/06/voila-there-it-is.html' title=''/><author><name>Michael Laine</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_a5u-k5F9UqY/SjX4L-sZUJI/AAAAAAAAAAM/7_Rs96M2dYc/s72-c/1_arch.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4540553777968119457.post-1108882315272502918</id><published>2009-06-05T03:35:00.000-07:00</published><updated>2009-06-05T03:52:31.618-07:00</updated><title type='text'>1st Sprint And the Spirits are High!</title><content type='html'>Hello World!&lt;br /&gt;Those are precisely the words our new mobile linux platform should be able to say after this first sprint. Its not that we haven't done that before, but its just that a new project with new requirements and a whole new bunch of people needs a starting point.&lt;br /&gt;&lt;br /&gt;A little history: we had a project back in 2007 that created a mobile Linux platform with several applications (DVD-H tv app, email, SMS, browser, dialer/GSM, etc.) but somehow the results just evaporated into the air. A lot of good work was done, but it was not really leveraged. We are now set to change that!&lt;br /&gt;&lt;br /&gt;After 6 months, we're going to have a mind-blowing GUI with all the services running that a mobile phone can need. All this will be done on top of a highly portable and modular UI/services platform that will catch the attention of the world.&lt;br /&gt;&lt;br /&gt;My name is Mikael Laine, and I'm the chief architect of this secrect project. I'll be letting you in on how everything advances, with screenshots and links to various projects we use and/or modify to our needs.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4540553777968119457-1108882315272502918?l=secretlinuxmobile.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://secretlinuxmobile.blogspot.com/feeds/1108882315272502918/comments/default' title='Lähetä kommentteja'/><link rel='replies' type='text/html' href='http://secretlinuxmobile.blogspot.com/2009/06/1st-sprint-and-spirits-are-high.html#comment-form' title='0 kommenttia'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4540553777968119457/posts/default/1108882315272502918'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4540553777968119457/posts/default/1108882315272502918'/><link rel='alternate' type='text/html' href='http://secretlinuxmobile.blogspot.com/2009/06/1st-sprint-and-spirits-are-high.html' title='1st Sprint And the Spirits are High!'/><author><name>Michael Laine</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
