Author: jerome
Date: 2008-08-26 18:00:41 +0200 (Tue, 26 Aug 2008)
New Revision: 1598

Modified:
   
software_suite_v2/software/control_center/trunk/control_center/sources/cc_main.java
   
software_suite_v2/software/control_center/trunk/control_center/sources/com/tuxdroid/cc/CcInterface.java
   
software_suite_v2/software/control_center/trunk/control_center/sources/com/tuxdroid/cc/Object/View/TuxAttitunesListView.java
   
software_suite_v2/software/control_center/trunk/control_center/sources/com/tuxdroid/cc/Object/View/TuxAttitunesThumbnailView.java
   
software_suite_v2/software/control_center/trunk/control_center/sources/com/tuxdroid/cc/Utils/GadgetAlertPanel.java
   
software_suite_v2/software/control_center/trunk/control_center/sources/com/tuxdroid/cc/Utils/GadgetObject.java
   
software_suite_v2/software/control_center/trunk/control_center/sources/com/tuxdroid/cc/Utils/GadgetsFramework.java
   
software_suite_v2/software/control_center/trunk/control_center/sources/com/tuxdroid/cc/Utils/TuxLanguagesMenu.java
   
software_suite_v2/software/control_center/trunk/control_center/sources/com/tuxdroid/cc/Utils/languages/LanguagesSet/languages_en_US.properties
   
software_suite_v2/software/control_center/trunk/control_center/sources/com/tuxdroid/cc/Utils/languages/LanguagesSet/languages_fr_FR.properties
   
software_suite_v2/software/control_center/trunk/control_center/sources/com/tuxdroid/cc/swing/About.java
Log:


Modified: 
software_suite_v2/software/control_center/trunk/control_center/sources/cc_main.java
===================================================================
--- 
software_suite_v2/software/control_center/trunk/control_center/sources/cc_main.java
 2008-08-26 12:41:35 UTC (rev 1597)
+++ 
software_suite_v2/software/control_center/trunk/control_center/sources/cc_main.java
 2008-08-26 16:00:41 UTC (rev 1598)
@@ -21,22 +21,24 @@
  */
 
 import com.tuxdroid.cc.CcInterface;
+import com.tuxisalive.api.TuxAPI;
+import com.tuxisalive.api.TuxAPIConst;
 
 public class cc_main{
        
        public static void main(String[] args){
-               //TuxAPI tux = new TuxAPI("127.0.0.1", 270);
-               //tux.event.handler.register("all", new TestAPI(), 
"onAllEvent");
+               TuxAPI tux = new TuxAPI("127.0.0.1", 270);
+               tux.event.handler.register("all", new TestAPI(), "onAllEvent");
                
-               //tux.server.autoConnect(TuxAPIConst.CLIENT_LEVEL_ROOT, "Test", 
"myPasswd");
-               //boolean tuxb = tux.server.waitConnected(6.0);
-               //tux.server.disconnect();
-           //if(tuxb){
+               tux.server.connect(TuxAPIConst.CLIENT_LEVEL_ROOT, "Test", 
"myPasswd");
+               boolean tuxb = tux.server.getConnected();
+               tux.server.disconnect();
+           if(tuxb){
                        new CcInterface();
-           //}
-               //else{
-               //      System.out.println("Another Control Center in use.");
-               //      System.exit(0);
-               //}
+           }
+               else{
+                       System.out.println("Another Control Center in use.");
+                       System.exit(0);
+               }
        }
 }
\ No newline at end of file

Modified: 
software_suite_v2/software/control_center/trunk/control_center/sources/com/tuxdroid/cc/CcInterface.java
===================================================================
--- 
software_suite_v2/software/control_center/trunk/control_center/sources/com/tuxdroid/cc/CcInterface.java
     2008-08-26 12:41:35 UTC (rev 1597)
+++ 
software_suite_v2/software/control_center/trunk/control_center/sources/com/tuxdroid/cc/CcInterface.java
     2008-08-26 16:00:41 UTC (rev 1598)
@@ -402,13 +402,13 @@
        /**
         * Callback that gets the radio connaction event.
         * @param objects
-        */
+        */
+       //FIXME 
        public void onRadioConnected(String value, Double delay){
                setOnlineStatus(true);
                tray.setIcon(this.tray_online);
                this.interfaceMenusLang.setTux(tux);
                this.initializeLocutors();
-               this.interfaceMenusLang.setLocutorsInitialized(true);
                jFrame.pack();
        }
        
@@ -778,14 +778,14 @@
                        popupFileMenu = new JPopupMenu();
                        
                        //Create sub menus languages.
-                       if(this.interfaceMenusLang.haveLanguages()){
+                       
                                JMenu languages = new 
JMenu(language.getMenuViewLanguage());
                                for(JMenuItem items : 
this.interfaceMenusLang.getInterfaceLanguagesMenus()){
                                        languages.add(items);
                                }
                                popupFileMenu.add(languages);
-                       }
                        
+                       
                        if(!this.interfaceMenusLang.areLocutorsInitialized()){
                                this.initializeLocutors();
                                
this.interfaceMenusLang.setLocutorsInitialized(true);
@@ -794,8 +794,8 @@
                        //Create pitch menu.
                        final int pitchValue = settings.getPitch();
                        final JMenu pitch = new 
JMenu(language.getPitchMenuCaption());
-                       final JMenuItem plus = new 
JMenuItem(language.getPitchCaptionPlus());
-                       final JMenuItem minder = new 
JMenuItem(language.getPitchCaptionMinder());
+                       final JMenuItem plus = new JMenuItem(pitchValue + " " + 
language.getPitchCaptionPlus());
+                       final JMenuItem minder = new JMenuItem(pitchValue + "  
" + language.getPitchCaptionMinder());
                        
                        pitch.add(plus);
                        pitch.add(minder);
@@ -804,8 +804,8 @@
                                public void 
mousePressed(java.awt.event.MouseEvent event){
                                        if(settings.getPitch() < 200){
                                                
settings.setPitch(settings.getPitch() + 10);
-                                               
((JMenuItem)event.getSource()).setText(language.getPitchCaptionPlus());
-                                               
minder.setText(language.getPitchCaptionMinder());
+                                               
((JMenuItem)event.getSource()).setText(settings.getPitch() + " " + 
language.getPitchCaptionPlus());
+                                               
minder.setText(settings.getPitch()+ "  " + language.getPitchCaptionMinder());
                                                                                
                                        
                                                
tux.tts.setPitch(settings.getPitch());
                                        }
@@ -816,9 +816,9 @@
                                public void 
mousePressed(java.awt.event.MouseEvent event){
                                        if(settings.getPitch() > 0){
                                                
settings.setPitch(settings.getPitch() - 10);
-                                               
((JMenuItem)event.getSource()).setText(language.getPitchCaptionMinder());
+                                               
((JMenuItem)event.getSource()).setText(settings.getPitch() + "  " + 
language.getPitchCaptionMinder());
                                                                                
                                        
-                                               
plus.setText(language.getPitchCaptionPlus());
+                                               
plus.setText(settings.getPitch() + " " + language.getPitchCaptionPlus());
                                                                                
                                        
                                                
tux.tts.setPitch(settings.getPitch());
                                        }
@@ -960,12 +960,22 @@
        
        public void initializeLocutors(){
                
-               //Set speaker selection menu.
-               JMenu speaker = new JMenu(language.getMenuViewSpeaker());
+               //Set speaker selection menu. TODO 
+               JMenu speaker = new JMenu();
+               for(Component compo : popupFileMenu.getComponents()){
+                       if(compo instanceof JMenu){
+                               
if(((JMenu)compo).getText().equalsIgnoreCase(language.getMenuViewSpeaker())){
+                                       speaker = (JMenu)compo;
+                                       popupFileMenu.remove(speaker);
+                               }
+                       }
+               }
                
-               for(JMenuItem items : 
this.interfaceMenusLang.getTuxLocutorsMenus()){
+               speaker = new JMenu(language.getMenuViewSpeaker());
+               this.interfaceMenusLang.updateLocutors();
+               for(JMenuItem items : 
this.interfaceMenusLang.getTuxLocutorsMenus())
                        speaker.add(items);
-               }
+               
                popupFileMenu.add(speaker);
                
        }
@@ -1434,7 +1444,6 @@
        }
        
        
-       //FIXME 
        public void showAttituneLatestProperties(){
                if(view == CcInterface.VIEW_LIST){
                        if(file_browser.getAttitunesViewSelectedIndex() != -1){ 
@@ -2290,6 +2299,11 @@
                                
alertSimpleSetting.setFixedMinutes(settings.getMins(uid));
                                
alertSimpleSetting.setEveryValue(settings.getMins(uid));
                                
+                               
+                               
gadgetPanel.setType(settings.getActionType(uid));
+                               
gadgetPanel.setTTSMessage(settings.getAlertActionValue(uid));
+                               
gadgetPanel.setSelectedAttitune(settings.getActionValue(uid));
+                               
                                //Getting gadgetParameters.
                                if(settings.haveConfiguration(uid)){
                                        GadgetInstanceParameters 
registeredParams = settings

Modified: 
software_suite_v2/software/control_center/trunk/control_center/sources/com/tuxdroid/cc/Object/View/TuxAttitunesListView.java
===================================================================
--- 
software_suite_v2/software/control_center/trunk/control_center/sources/com/tuxdroid/cc/Object/View/TuxAttitunesListView.java
        2008-08-26 12:41:35 UTC (rev 1597)
+++ 
software_suite_v2/software/control_center/trunk/control_center/sources/com/tuxdroid/cc/Object/View/TuxAttitunesListView.java
        2008-08-26 16:00:41 UTC (rev 1598)
@@ -271,21 +271,24 @@
                                                        new 
com.tuxisalive.api.SThread(this, "waitEndAttitune"
                                                                        , 
duration).start();
                                                }
-                                               else{
+                                               else{
+                                                       tux.destroy();
                                                        String message = 
language.messages.getRadioErrorMessage();
                                                        
JOptionPane.showMessageDialog(this.jTable, message, 
                                                                        
paneTitle, JOptionPane.ERROR_MESSAGE);
                                                        
changes.firePropertyChange("AttituneError", null, null);
                                                }
                                        }
-                                       else{
+                                       else{
+                                               tux.destroy();
                                                String message = 
language.messages.getDongleErrorMessage();
                                                
JOptionPane.showMessageDialog(this.jTable, message, 
                                                                paneTitle, 
JOptionPane.ERROR_MESSAGE);
                                                
changes.firePropertyChange("AttituneError", null, null);
                                        }
                                }
-                               else{
+                               else{
+                                       tux.destroy();
                                        String message = 
language.messages.getServerErrorMessage();
                                        
JOptionPane.showMessageDialog(this.jTable, message, paneTitle,
                                                        
JOptionPane.ERROR_MESSAGE);
@@ -293,7 +296,8 @@
                                }
                        }
                        
-                       else{
+                       else{
+                               tux.destroy();
                                String message = 
language.messages.getIndexError();
                                JOptionPane.showMessageDialog(this.jTable, 
message, paneTitle,
                                                JOptionPane.ERROR_MESSAGE);

Modified: 
software_suite_v2/software/control_center/trunk/control_center/sources/com/tuxdroid/cc/Object/View/TuxAttitunesThumbnailView.java
===================================================================
--- 
software_suite_v2/software/control_center/trunk/control_center/sources/com/tuxdroid/cc/Object/View/TuxAttitunesThumbnailView.java
   2008-08-26 12:41:35 UTC (rev 1597)
+++ 
software_suite_v2/software/control_center/trunk/control_center/sources/com/tuxdroid/cc/Object/View/TuxAttitunesThumbnailView.java
   2008-08-26 16:00:41 UTC (rev 1598)
@@ -137,7 +137,7 @@
                cont.transferPath = modele.transfertPath;
                for(int i = 0; i != modele.values.length ; i++){
                        String name = String.valueOf(modele.values[i][0]);
-                       cont.addThumb(name,  
getClass().getResource("images/att.png"), cont);
+                       cont.addThumb(name,  this.getIconURL(i), cont);
                }
                this.setViewportView(cont);
        }
@@ -263,21 +263,24 @@
                                        new com.tuxisalive.api.SThread(this, 
"waitEndAttitune"
                                                        
,this.getSelectedAttituneDuration()).start();
                                }
-                               else{
+                               else{
+                                       tux.destroy();
                                        String message = 
language.messages.getRadioErrorMessage();
                                        JOptionPane.showMessageDialog(this, 
message, 
                                                        paneTitle, 
JOptionPane.ERROR_MESSAGE);
                                        
this.firePropertyChange("AttituneError", null, null);
                                }
                        }
-                       else{
+                       else{
+                               tux.destroy();
                                String message = 
language.messages.getDongleErrorMessage();
                                JOptionPane.showMessageDialog(this, message, 
                                                paneTitle, 
JOptionPane.ERROR_MESSAGE);
                                this.firePropertyChange("AttituneError", null, 
null);
                        }
                }
-               else{
+               else{
+                       tux.destroy();
                        String message = 
language.messages.getServerErrorMessage();
                        JOptionPane.showMessageDialog(cont, message, paneTitle,
                                        JOptionPane.ERROR_MESSAGE);

Modified: 
software_suite_v2/software/control_center/trunk/control_center/sources/com/tuxdroid/cc/Utils/GadgetAlertPanel.java
===================================================================
--- 
software_suite_v2/software/control_center/trunk/control_center/sources/com/tuxdroid/cc/Utils/GadgetAlertPanel.java
  2008-08-26 12:41:35 UTC (rev 1597)
+++ 
software_suite_v2/software/control_center/trunk/control_center/sources/com/tuxdroid/cc/Utils/GadgetAlertPanel.java
  2008-08-26 16:00:41 UTC (rev 1598)
@@ -162,8 +162,40 @@
                        return 2;
                }
                return -1;
-       }
+       }
+       
+       
+       public void setType(String type){
+               if(type.equalsIgnoreCase("attitune")){
+                       
this.GroupAlertConfiguration.setSelected(this.AttituneAction.getModel(), true);
+               }
+               else if(type.equalsIgnoreCase("gadget")){
+                       
this.GroupAlertConfiguration.setSelected(this.StartGadget.getModel(), true);
+               }
+               else if(type.equals("tts")){
+                       
this.GroupAlertConfiguration.setSelected(this.TTSAction.getModel(), true);
+               }
+       }
+       
+       public void setTTSMessage(String message){
+               ButtonModel model = this.GroupAlertConfiguration.getSelection();
+               if(model.equals(TTSAction.getModel()))
+                       this.TTSMessage.setText(message);
+       }
+       
+       public void setSelectedAttitune(String path){
+               ButtonModel model = this.GroupAlertConfiguration.getSelection();
+               if(model.equals(AttituneAction.getModel())){
+                       for(int i=0; i < this.values.size(); i++){
+                               Object[] re = (Object[]) this.values.get(i);
+                               if(re[1].toString().equals(path)){
+                                       
this.AttituneSelection.setSelectedIndex(i);
+                               }
+                       }
+               }
+       }
        
+       
        public String getTTSMessage(){
                return this.TTSMessage.getText();
        }

Modified: 
software_suite_v2/software/control_center/trunk/control_center/sources/com/tuxdroid/cc/Utils/GadgetObject.java
===================================================================
--- 
software_suite_v2/software/control_center/trunk/control_center/sources/com/tuxdroid/cc/Utils/GadgetObject.java
      2008-08-26 12:41:35 UTC (rev 1597)
+++ 
software_suite_v2/software/control_center/trunk/control_center/sources/com/tuxdroid/cc/Utils/GadgetObject.java
      2008-08-26 16:00:41 UTC (rev 1598)
@@ -8,6 +8,7 @@
 import java.io.FileInputStream;
 import java.io.InputStream;
 import java.io.InputStreamReader;
+import java.util.Locale;
 import java.util.Vector;
 
 import javax.swing.AbstractAction;
@@ -17,12 +18,15 @@
 import javax.swing.event.TreeModelListener;
 import javax.swing.tree.TreeModel;
 import javax.swing.tree.TreePath;
-
+import net.karmaLab.po.I18n;
+import net.karmaLab.po.I18nFactory;
 import net.karmaLab.tools.Strings;
 
 import com.kysoh.tuxdroid.gadget.framework.container.Gadget;
+import com.kysoh.tuxdroid.gadget.framework.container.GadgetDescription;
 import com.kysoh.tuxdroid.gadget.framework.container.GadgetInstance;
 import com.kysoh.tuxdroid.gadget.framework.container.GadgetListener;
+import com.kysoh.tuxdroid.gadget.framework.container.GadgetParameter;
 import com.kysoh.tuxdroid.gadget.framework.container.GadgetToken;
 import com.kysoh.tuxdroid.gadget.framework.tester.GadgetPropertyEditor;
 
@@ -239,6 +243,7 @@
 
        public GadgetObject(Gadget gadget){
                this.gadget = gadget;
+               
                parameters = new GadgetPropertyEditor();
                parameters.setGadget(this.gadget);
                // Actions

Modified: 
software_suite_v2/software/control_center/trunk/control_center/sources/com/tuxdroid/cc/Utils/GadgetsFramework.java
===================================================================
--- 
software_suite_v2/software/control_center/trunk/control_center/sources/com/tuxdroid/cc/Utils/GadgetsFramework.java
  2008-08-26 12:41:35 UTC (rev 1597)
+++ 
software_suite_v2/software/control_center/trunk/control_center/sources/com/tuxdroid/cc/Utils/GadgetsFramework.java
  2008-08-26 16:00:41 UTC (rev 1598)
@@ -27,8 +27,12 @@
 import java.beans.PropertyChangeListener;
 import java.beans.PropertyChangeSupport;
 import java.io.File;
+import java.util.Locale;
 
 import javax.swing.AbstractAction;
+
+import net.karmaLab.po.I18n;
+import net.karmaLab.po.I18nFactory;
 
 import com.kysoh.tuxdroid.gadget.framework.container.Gadget;
 import com.kysoh.tuxdroid.gadget.framework.container.GadgetInstance;

Modified: 
software_suite_v2/software/control_center/trunk/control_center/sources/com/tuxdroid/cc/Utils/TuxLanguagesMenu.java
===================================================================
--- 
software_suite_v2/software/control_center/trunk/control_center/sources/com/tuxdroid/cc/Utils/TuxLanguagesMenu.java
  2008-08-26 12:41:35 UTC (rev 1597)
+++ 
software_suite_v2/software/control_center/trunk/control_center/sources/com/tuxdroid/cc/Utils/TuxLanguagesMenu.java
  2008-08-26 16:00:41 UTC (rev 1598)
@@ -110,6 +110,7 @@
        
        /** get availables languages menus. **/
        private boolean getLocutorsMenus(){
+               
                if(tux.tts.getVoices().size() <= 0) return false;
                
                for(String menuName : tux.tts.getVoices()){
@@ -124,6 +125,8 @@
                                        ((JMenuItem) 
event.getComponent()).setIcon(new ImageIcon(TuxLanguagesMenu.icon));
                                        
tux.tts.setLocutor(((JMenuItem)event.getComponent()).getText());
                                        currentLocutor = 
((JMenuItem)event.getComponent()).getText();
+                                       if(isValidLocutor(currentLocutor, 
settings.getLanguage()))
+                                               
settings.saveSpeaker(currentLocutor);
                                }
                        });
                        this.locutorsMenus.add(menu);
@@ -131,7 +134,11 @@
                return true;
        }
        
+       public void updateLocutors(){
+               this.getLocutorsMenus();
+       }
        
+       
        public void setTux(TuxAPI tux){
                this.tux = tux;
        }
@@ -206,7 +213,7 @@
                        female = locutors.get("en").get("female");
                }
                
-               if(!(locutor.equalsIgnoreCase(male)) || 
(locutor.equalsIgnoreCase(female))){
+               if(!((locutor.equalsIgnoreCase(male)) || 
(locutor.equalsIgnoreCase(female)))){
                        return false;
                }
                
@@ -223,11 +230,6 @@
                item.setIcon(new ImageIcon(TuxLanguagesMenu.icon));
        }
        
-       /** return true if they have installed languages. **/
-       public boolean haveLanguages(){
-               return this.interfaceLanguages.size() > 0;
-       }
-       
        public Vector<JMenuItem> getInterfaceLanguagesMenus(){
                return this.interfaceLangMenus;
        }

Modified: 
software_suite_v2/software/control_center/trunk/control_center/sources/com/tuxdroid/cc/Utils/languages/LanguagesSet/languages_en_US.properties
===================================================================
--- 
software_suite_v2/software/control_center/trunk/control_center/sources/com/tuxdroid/cc/Utils/languages/LanguagesSet/languages_en_US.properties
      2008-08-26 12:41:35 UTC (rev 1597)
+++ 
software_suite_v2/software/control_center/trunk/control_center/sources/com/tuxdroid/cc/Utils/languages/LanguagesSet/languages_en_US.properties
      2008-08-26 16:00:41 UTC (rev 1598)
@@ -49,12 +49,12 @@
 trayHide=Hide
 trayExit=Exit
 ccVersion=Control Center V0.0.1
-aboutDevelopper=Developper : Conan J�r�me.
+aboutDevelopper=Developper : Conan J�r�me
 [EMAIL PROTECTED]
-aboutContributorsNames =Thierry Nancy, Sebastiaan Vanpoucke.
+aboutContributorsNames =Thierry Nancy, Sebastiaan Vanpoucke
 aboutContributors=Contributors:
-pitchMenuCaptionPlus=Current pitch value + 10
-pitchMenuCaptionMinder=Current pitch value - 10
+pitchMenuCaptionPlus=value + 10
+pitchMenuCaptionMinder=value - 10
 pitchMenuCaption=Pitch
 alertConfTitle=Time
 alertShedulConfTitle=Alert

Modified: 
software_suite_v2/software/control_center/trunk/control_center/sources/com/tuxdroid/cc/Utils/languages/LanguagesSet/languages_fr_FR.properties
===================================================================
--- 
software_suite_v2/software/control_center/trunk/control_center/sources/com/tuxdroid/cc/Utils/languages/LanguagesSet/languages_fr_FR.properties
      2008-08-26 12:41:35 UTC (rev 1597)
+++ 
software_suite_v2/software/control_center/trunk/control_center/sources/com/tuxdroid/cc/Utils/languages/LanguagesSet/languages_fr_FR.properties
      2008-08-26 16:00:41 UTC (rev 1598)
@@ -12,8 +12,8 @@
 menuViewLanguage=Langue du logiciel
 menuViewSpeaker=Choix du locuteur
 menuViewListView=Voir la vue par liste
-menuViewThumbnailView=Voir la vue par thumbnail
-menuViewShowHide=Voir/Cacher les propri�t�s.
+menuViewThumbnailView=Voir la vue par ic�nes
+menuViewShowHide=Voir/Cacher les propri�t�s
 playlistsTitle=Vivre avec Tux
 onlineTitle=En ligne
 libraryTitle=Librairies
@@ -49,12 +49,12 @@
 trayHide=Masquer
 trayExit=Quitter
 ccVersion=Centre de contr�le V0.0.1
-aboutDevelopper=D�veloppeur : Conan J�r�me.
+aboutDevelopper=D�veloppeur : Conan J�r�me
 [EMAIL PROTECTED]
-aboutContributorsNames =Thierry Nancy, Sebastiaan Vanpoucke.
+aboutContributorsNames =Thierry Nancy, Sebastiaan Vanpoucke
 aboutContributors=Contribution:
-pitchMenuCaptionPlus=Ton actuel + 10
-pitchMenuCaptionMinder=Ton actuel - 10
+pitchMenuCaptionPlus=+ 10
+pitchMenuCaptionMinder=- 10
 pitchMenuCaption=Ton
 alertConfTitle=Heure
 alertShedulConfTitle=Alerte

Modified: 
software_suite_v2/software/control_center/trunk/control_center/sources/com/tuxdroid/cc/swing/About.java
===================================================================
--- 
software_suite_v2/software/control_center/trunk/control_center/sources/com/tuxdroid/cc/swing/About.java
     2008-08-26 12:41:35 UTC (rev 1597)
+++ 
software_suite_v2/software/control_center/trunk/control_center/sources/com/tuxdroid/cc/swing/About.java
     2008-08-26 16:00:41 UTC (rev 1598)
@@ -105,7 +105,7 @@
                        //Set image.
                        ImageIcon image = new 
ImageIcon(CcInterface.class.getResource("images/cc.png"));
                        //Developper label.
-                       JLabel developper = new JLabel("  
"+lang.getAboutDevelopperCaption() + " : ");
+                       JLabel developper = new JLabel("  
"+lang.getAboutDevelopperCaption() );
                        JLabel developperMail = new JLabel("    
"+lang.getAboutDevelopperMail()+"      ");
                        developperMail.setForeground(Color.blue);
                        


-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Tux-droid-svn mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/tux-droid-svn

Reply via email to