Author: jerome
Date: 2008-08-26 13:24:39 +0200 (Tue, 26 Aug 2008)
New Revision: 1594

Added:
   
software_suite_v2/software/control_center/trunk/control_center/sources/com/tuxdroid/cc/Utils/Compressor.java
   
software_suite_v2/software/control_center/trunk/control_center/sources/com/tuxdroid/cc/images/attitunes/alert-attitune.png
   
software_suite_v2/software/control_center/trunk/control_center/sources/com/tuxdroid/cc/images/attitunes/message-attitune.png
   
software_suite_v2/software/control_center/trunk/control_center/sources/com/tuxdroid/cc/images/attitunes/other-attitune.png
   
software_suite_v2/software/control_center/trunk/control_center/sources/com/tuxdroid/cc/images/attitunes/system-attitune.png
Removed:
   
software_suite_v2/software/control_center/trunk/control_center/sources/com/tuxdroid/cc/images/Object/WebBrowser/
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/Object/PseudoFileBrowser/FileBrowser.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/Object/WebBrowser/webBrowser.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/TgfGenerator.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/images/attitunes/education-attitune.png
   
software_suite_v2/software/control_center/trunk/control_center/sources/com/tuxdroid/cc/images/attitunes/fun-attitune.png
   
software_suite_v2/software/control_center/trunk/control_center/sources/com/tuxdroid/cc/images/attitunes/kids-attitune.png
   
software_suite_v2/software/control_center/trunk/control_center/sources/com/tuxdroid/cc/images/attitunes/music-attitune.png
Log:
* Updated icon categories.
* Added categories + default.
* Fixed webbrowser urls.

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 11:06:36 UTC (rev 1593)
+++ 
software_suite_v2/software/control_center/trunk/control_center/sources/com/tuxdroid/cc/CcInterface.java
     2008-08-26 11:24:39 UTC (rev 1594)
@@ -406,11 +406,10 @@
        public void onRadioConnected(String value, Double delay){
                setOnlineStatus(true);
                tray.setIcon(this.tray_online);
-               if(this.interfaceMenusLang.areLocutorsInitialized()){
-                       this.interfaceMenusLang.setTux(tux);
-                       this.initializeLocutors();
-                       this.interfaceMenusLang.setLocutorsInitialized(true);
-               }
+               this.interfaceMenusLang.setTux(tux);
+               this.initializeLocutors();
+               this.interfaceMenusLang.setLocutorsInitialized(true);
+               jFrame.pack();
        }
        
        /**
@@ -826,9 +825,9 @@
                                }
                        });
                        
-                       if(this.interfaceMenusLang.haveLocutor()){
-                               popupFileMenu.add(pitch);
-                       }
+                       
+                       popupFileMenu.add(pitch);
+                       
                        popupFileMenu.addSeparator();
                        //Add exit menu item that allow to exit application.
                        exit = new JMenuItem(language.getMenuFileExit());
@@ -960,15 +959,15 @@
        
        
        public void initializeLocutors(){
-               if(this.interfaceMenusLang.haveLocutor()){
-                       //Set speaker selection menu.
-                       JMenu speaker = new 
JMenu(language.getMenuViewSpeaker());
-                       
-                       for(JMenuItem items : 
this.interfaceMenusLang.getTuxLocutorsMenus()){
-                               speaker.add(items);
-                       }
-                       popupFileMenu.add(speaker);
+               
+               //Set speaker selection menu.
+               JMenu speaker = new JMenu(language.getMenuViewSpeaker());
+               
+               for(JMenuItem items : 
this.interfaceMenusLang.getTuxLocutorsMenus()){
+                       speaker.add(items);
                }
+               popupFileMenu.add(speaker);
+               
        }
 
        /**
@@ -1435,7 +1434,7 @@
        }
        
        
-       
+       //FIXME 
        public void showAttituneLatestProperties(){
                if(view == CcInterface.VIEW_LIST){
                        if(file_browser.getAttitunesViewSelectedIndex() != -1){ 
@@ -2021,7 +2020,6 @@
                        TuxDegradeePanelWithInset panel = 
(TuxDegradeePanelWithInset)arg0.getNewValue();
                        this.maskAllTabs();
                        this.jTabbedPane.addTab(language.getPanelSummary(), 
panel);
-                       this.savedProperties.put("attitune", new 
JPanel[]{panel});
                        
                        if(this.view == CcInterface.VIEW_LIST){
                                this.savedProperties.put("attitune", new 
JPanel[]{panel});
@@ -2182,7 +2180,7 @@
                                                //Getting simple schedul 
settings values and register into settings file.
                                                String type = 
panel.getSchedulType();
                                                Object[] config = new Object[6];
-                                               if(type.equals("every")){
+                                               if(type.equals("every") || 
(type.equals("disable"))){
                                                        int everyValue = 
panel.getEveryValue();
                                                        config[0] = type;
                                                        config[1] = "00";
@@ -2194,7 +2192,8 @@
                                                        
                                                        try {
                                                                
settings.registerAlertConfiguration(config, 
alertPlaylist.getSelectedAlertIndex());
-                                                               new 
TaskDefiner(true, everyValue, uid.toString(), dispatcher);
+                                                               
if(!type.equals("disable"))
+                                                                       new 
TaskDefiner(true, everyValue, uid.toString(), dispatcher);
                                                        } catch (Exception e) 
{e.printStackTrace();}
                                                }
                                                else if(type.equals("fixed")){
@@ -2226,7 +2225,7 @@
                                                test.setIcon(icon);
                                        }
                                        
-                                       public void 
mouseClicked(java.awt.event.MouseEvent event){
+                                       public void 
mousePressed(java.awt.event.MouseEvent event){
                        
                                                if(tux.dongle.getConnected() && 
flagPlay){
                                                        flagPlay = !flagPlay;
@@ -2253,7 +2252,7 @@
                                jFrame.repaint();
                                jFrame.pack();
                        }
-                       else if(kind.equalsIgnoreCase("gadget")){
+                       else if(kind.equalsIgnoreCase("gadget")){ //FIXME 
                                this.maskAllTabs();
                                //Time config panel.
                                final SimpleAlertSettings alertSimpleSetting = 
new SimpleAlertSettings(language);
@@ -2312,7 +2311,7 @@
                                                //Getting simple schedul 
settings values and register into settings file.
                                                String type = 
alertSimpleSetting.getSchedulType();
                                                Object[] config = new Object[6];
-                                               if(type.equals("every")){
+                                               if(type.equals("every") || 
type.equals("disable")){
                                                        int everyValue = 
alertSimpleSetting.getEveryValue();
                                                        config[0] = type;
                                                        config[1] = "00";
@@ -2324,7 +2323,7 @@
                                                        }
                                                        else 
if(gadgetPanel.getType() == 2){
                                                                config[3] = 
"gadget";
-                                                               config[4] = 
alertPlaylist.getPath();
+                                                               config[4] = 
alertPlaylist.getPath(); 
                                                        }
                                                        else 
if(gadgetPanel.getType() == 1){
                                                                config[3] = 
"tts";
@@ -2335,9 +2334,11 @@
                                                        config[5] = uid;
                                                        
                                                        try {
+                                                               
                                                                
settings.registerAlertConfiguration(config, 
alertPlaylist.getSelectedAlertIndex());
                                                                
settings.registerGadgetParameter(uid.toString(), parameters.getValues(), gdg);
-                                                               new 
TaskDefiner(true, everyValue, uid.toString(), dispatcher);
+                                                               
if(!type.equals("disable")) //then start scheduler task.
+                                                                       new 
TaskDefiner(true, everyValue, uid.toString(), dispatcher);
                                                        } catch (Exception e) 
{e.printStackTrace();}
                                                        
                                                }
@@ -2380,18 +2381,18 @@
                                                        
.getResource("images/buttons/btn-test-down.png"));
                                        boolean Flag = true;
                                        
-                                       public void 
mouseClicked(java.awt.event.MouseEvent event){
+                                       public void 
mousePressed(java.awt.event.MouseEvent event){
                                                int type = 
gadgetPanel.getType();
                                                if(type != -1){
                                                        
                                                        switch(type){
                                                        
                                                        case 0 : //Attitune 
alarm type.
-                                                               
                                                                if(Flag && 
tux.radio.getConnected()){
                                                                        Flag = 
!Flag;
                                                                        
test.setIcon(iconPressed);
                                                                        
file_browser.playAttituneFromPath(gadgetPanel.getAttitune());
+                                                                       
test.setIcon(icon);
                                                                }
                                                                else if(!Flag){
                                                                        Flag = 
!Flag;
@@ -2408,22 +2409,12 @@
                                                                break;
                                                                
                                                        case 1 : //tts alarm 
type.
-                                                               if(Flag && 
tux.radio.getConnected()){
+                                                               
                                                                        Flag = 
!Flag;
                                                                        String 
tts = gadgetPanel.getTTSMessage();
                                                                        
tux.tts.speak(tts);
-                                                               }
-                                                               else if(!Flag){
-                                                                       Flag = 
!Flag;
-                                                                       
tux.tts.stop();
-                                                               }
-                                                               else{
-                                                                       String 
paneTitle = language.messages.getMessageBoxTitle();
-                                                                       String 
message = language.messages.getRadioErrorMessage();
-                                                                       
JOptionPane.showMessageDialog(jContentPane, message, 
-                                                                               
        paneTitle, JOptionPane.ERROR_MESSAGE);
-                                                               }
-                                                               break;
+       
+                                                                       break;
                                                                
                                                        case 2 : //run gadget 
alarm type.
                        

Modified: 
software_suite_v2/software/control_center/trunk/control_center/sources/com/tuxdroid/cc/Object/PseudoFileBrowser/FileBrowser.java
===================================================================
--- 
software_suite_v2/software/control_center/trunk/control_center/sources/com/tuxdroid/cc/Object/PseudoFileBrowser/FileBrowser.java
    2008-08-26 11:06:36 UTC (rev 1593)
+++ 
software_suite_v2/software/control_center/trunk/control_center/sources/com/tuxdroid/cc/Object/PseudoFileBrowser/FileBrowser.java
    2008-08-26 11:24:39 UTC (rev 1594)
@@ -781,7 +781,7 @@
                public ArrayList<Object> getAttitunesList(){
                        ArrayList<Object> liste = new ArrayList<Object>();
                        for(Object[] objet : this.AttitunesDatas){
-                               liste.add(new Object[]{objet[0], objet[4]});
+                               liste.add(new Object[]{objet[0], objet[5]});
                        }
                        
                        return liste;

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 11:06:36 UTC (rev 1593)
+++ 
software_suite_v2/software/control_center/trunk/control_center/sources/com/tuxdroid/cc/Object/View/TuxAttitunesListView.java
        2008-08-26 11:24:39 UTC (rev 1594)
@@ -138,7 +138,7 @@
                        DefaultTableModel model = new AttitunesModel(values, 
headers);
                        FiltreTriModel sorter = new FiltreTriModel(model);
                        this.sorter = sorter;
-                       jTable = new JTable(model);
+                       jTable = new JTable(sorter);
                        sorter.addEcouteur(jTable);
                        
                        try {
@@ -368,8 +368,17 @@
                else if(values[index][1].toString().equalsIgnoreCase("music")){
                        return 
CcInterface.class.getResource("images/attitunes/music-attitune.png");
                }
+               else if(values[index][1].toString().equalsIgnoreCase("alert")){
+                       return 
CcInterface.class.getResource("images/attitunes/alert-attitune.png");
+               }
+               else if(values[index][1].toString().equalsIgnoreCase("system")){
+                       return 
CcInterface.class.getResource("images/attitunes/system-attitune.png");
+               }
+               else 
if(values[index][1].toString().equalsIgnoreCase("message")){
+                       return 
CcInterface.class.getResource("images/attitunes/message-attitune.png");
+               }
                
-               return getClass().getResource("images/att.png");
+               return 
CcInterface.class.getResource("images/attitunes/other-attitune.png");
        }
        
        public Object[] getDatasAtSelectedIndex(){

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 11:06:36 UTC (rev 1593)
+++ 
software_suite_v2/software/control_center/trunk/control_center/sources/com/tuxdroid/cc/Object/View/TuxAttitunesThumbnailView.java
   2008-08-26 11:24:39 UTC (rev 1594)
@@ -93,8 +93,17 @@
                else 
if(modele.values[index][1].toString().equalsIgnoreCase("music")){
                        return 
CcInterface.class.getResource("images/attitunes/music-attitune.png");
                }
+               else 
if(modele.values[index][1].toString().equalsIgnoreCase("alert")){
+                       return 
CcInterface.class.getResource("images/attitunes/alert-attitune.png");
+               }
+               else 
if(modele.values[index][1].toString().equalsIgnoreCase("system")){
+                       return 
CcInterface.class.getResource("images/attitunes/system-attitune.png");
+               }
+               else 
if(modele.values[index][1].toString().equalsIgnoreCase("message")){
+                       return 
CcInterface.class.getResource("images/attitunes/message-attitune.png");
+               }
                
-               return getClass().getResource("images/att.png");
+               return 
CcInterface.class.getResource("images/attitunes/other-attitune.png");
        }
        
        

Modified: 
software_suite_v2/software/control_center/trunk/control_center/sources/com/tuxdroid/cc/Object/WebBrowser/webBrowser.java
===================================================================
--- 
software_suite_v2/software/control_center/trunk/control_center/sources/com/tuxdroid/cc/Object/WebBrowser/webBrowser.java
    2008-08-26 11:06:36 UTC (rev 1593)
+++ 
software_suite_v2/software/control_center/trunk/control_center/sources/com/tuxdroid/cc/Object/WebBrowser/webBrowser.java
    2008-08-26 11:24:39 UTC (rev 1594)
@@ -77,12 +77,14 @@
        
        
        public void setGadgetsUrl(){
-               this.browser.GoTo(new 
String("http://www.tuxisalive.com/downloads";));
+               this.browser.GoTo(new 
String("http://www.livewithapenguin.com/Gadgets.htm";));
        }
        
        
        public void setAttitunesUrl(){
-               this.browser.GoTo(new 
String("http://www.tuxisalive.com/downloads/attitunes";));
+               //"http://www.tuxisalive.com/downloads/attitunes";
+               //"http://www.livewithapenguin.com/Attitunes.htm";
+               this.browser.GoTo(new 
String("http://livewithapenguin.com/attitunes/Attitunes.htm";));
        }
        
 }

Added: 
software_suite_v2/software/control_center/trunk/control_center/sources/com/tuxdroid/cc/Utils/Compressor.java
===================================================================
--- 
software_suite_v2/software/control_center/trunk/control_center/sources/com/tuxdroid/cc/Utils/Compressor.java
                                (rev 0)
+++ 
software_suite_v2/software/control_center/trunk/control_center/sources/com/tuxdroid/cc/Utils/Compressor.java
        2008-08-26 11:24:39 UTC (rev 1594)
@@ -0,0 +1,183 @@
+package com.tuxdroid.cc.Utils;
+
+import java.io.*;
+import java.util.zip.*;
+
+public class Compressor
+{
+       private static ZipOutputStream zos;
+
+       private static String goodSepSlash = "";
+       private static String badSepSlash = "";
+       
+       public Compressor() {
+               if (File.separator == "/")
+               {
+                       goodSepSlash = "/";
+                       badSepSlash = "\\";
+               }
+               else
+               {
+                       goodSepSlash = "\\";
+                       badSepSlash = "/";
+               }
+       }
+       
+       /**
+        * 
+        * @param sourcePath
+        * @return
+        */
+       public static boolean compressAttitune(String attFilePath, String 
sourcePath)
+       {
+               File file = new File(sourcePath);
+               
+               try
+               {
+                       zos = new ZipOutputStream(new FileOutputStream(new 
File(attFilePath)));
+                       recurseFiles(file, sourcePath);
+                       zos.close();
+               }
+               catch (Exception e)
+               {
+                       e.printStackTrace();
+                       return false;
+               }
+               return true;
+       }
+
+       /**
+        * 
+        * @param attFilePath
+        * @param tmpAttDir
+        * @return
+        */
+       public static boolean uncompressAttitune(String attFilePath, String 
destinationPath)
+       {
+               FileOutputStream fos = null;
+               BufferedOutputStream dest = null;
+               FileInputStream fis;
+               ZipInputStream zis;
+               ZipEntry entry;
+               int count;
+               byte data[] = new byte[8192];
+               
+               try
+               {
+                       fis = new FileInputStream(attFilePath);
+                       zis = new ZipInputStream(new BufferedInputStream(fis));
+                       
+               while ((entry = zis.getNextEntry()) != null)
+               {
+                       if (!entry.isDirectory())
+                       {
+                               if (!prepareFileDirectories(destinationPath, 
entry.getName()))
+                               {
+                                       return false;
+                               }
+                               String destFileName = destinationPath + 
File.separator + entry.getName();
+                               System.out.println(destFileName);
+                               try
+                               {
+                                       fos = new 
FileOutputStream(destFileName);
+                               }
+                               catch (Exception e)
+                               {
+                                       return false;
+                               }
+                       dest = new BufferedOutputStream(fos, 8192);
+                       while((count = zis.read(data, 0, 8192)) != -1)
+                       {
+                         dest.write(data, 0, count);
+                       }
+                       dest.flush();
+                       dest.close();
+                       }
+               }
+               zis.close();
+               }
+               catch (Exception e)
+               {
+                       e.printStackTrace();
+                       return false;
+               }
+               
+               return true;
+       }
+
+       /*
+        *
+        */
+       private static void recurseFiles(File file, String basePath) 
+               throws IOException, FileNotFoundException
+       {
+               String filePath;
+               
+               if (file.isDirectory())
+               {
+               String[] fileNames = file.list();
+               if (fileNames != null)
+               {
+                   for (int i=0; i<fileNames.length; i++)
+                   {
+                      recurseFiles(new File(file, fileNames[i]), basePath);
+                   }
+               }
+               }
+           else
+           {
+               byte[] buf = new byte[1024];
+               int len;
+
+               filePath = file.toString().substring(0, basePath.length()+1);
+               System.out.println(file.toString());
+               ZipEntry zipEntry = new 
ZipEntry(file.toString().replace(filePath, ""));
+               
+               FileInputStream fin = new FileInputStream(file);
+               BufferedInputStream in = new BufferedInputStream(fin);
+               zos.putNextEntry(zipEntry);
+               
+               while ((len = in.read(buf)) >= 0)
+               {
+                       zos.write(buf, 0, len);
+               }
+               
+               in.close();
+               zos.closeEntry();
+           }
+       }
+       
+       /*
+        * 
+        */
+       private static boolean prepareFileDirectories(String destination, 
String entryName)
+       {
+               String outputFileName = destination + entryName;
+               try
+               {
+                       new File(outputFileName.substring(0, 
outputFileName.lastIndexOf("/"))).mkdirs();
+               }
+               catch (Exception e)
+               {
+                       return false;
+               }
+               return true;
+       }
+       
+       /**
+        * 
+        * @param path
+        * @return
+        */
+       public static String regularizePath(String path)
+       {
+               String result = path;
+               
+               result = result.replace("\\\\", "&&&&");
+               result = result.replace("//", "&&&&");
+               result = result.replace(badSepSlash, "&&&&");
+               result = result.replace("&&&&", goodSepSlash);
+               
+               return result;
+       }
+}

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 11:06:36 UTC (rev 1593)
+++ 
software_suite_v2/software/control_center/trunk/control_center/sources/com/tuxdroid/cc/Utils/GadgetAlertPanel.java
  2008-08-26 11:24:39 UTC (rev 1594)
@@ -168,7 +168,8 @@
                return this.TTSMessage.getText();
        }
        
-       public String getAttitune(){
+       public String getAttitune(){
+               
                int index = this.AttituneSelection.getSelectedIndex();
                if(index != -1){
                        Object[] re = (Object[]) this.values.get(index);

Modified: 
software_suite_v2/software/control_center/trunk/control_center/sources/com/tuxdroid/cc/Utils/TgfGenerator.java
===================================================================
--- 
software_suite_v2/software/control_center/trunk/control_center/sources/com/tuxdroid/cc/Utils/TgfGenerator.java
      2008-08-26 11:06:36 UTC (rev 1593)
+++ 
software_suite_v2/software/control_center/trunk/control_center/sources/com/tuxdroid/cc/Utils/TgfGenerator.java
      2008-08-26 11:24:39 UTC (rev 1594)
@@ -25,6 +25,7 @@
 import java.io.File;
 import java.io.IOException;
 
+import javax.print.attribute.standard.Compression;
 import javax.xml.parsers.DocumentBuilder;
 import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.transform.OutputKeys;
@@ -53,6 +54,7 @@
        private File temporaryFile;
        private File file;
        private File gadgetXML;
+       private File finalFile;
        
        //parameters.
        private GadgetInstanceParameters parameters;
@@ -81,12 +83,12 @@
        
        public File createTempDirectory(){
                File f = new File(System.getProperty("user.home"));
-               File generator = new File(f.getAbsolutePath() + File.separator 
+ "TgfGenerator");
-               File temp = new File(generator.getAbsolutePath() + 
File.separator + this.name);
+               File generator = new File(f.getPath() + File.separator + 
"TgfGenerator");
+               File temp = new File(generator.getPath()+ File.separator + 
(this.name).replace(" ", "_"));
                temp.mkdirs();
                try {
                        FileUtils.copyDirectory(new File(this.path), temp);
-                       gadgetXML = new File(temp.getAbsolutePath() + 
File.separator + "gadgets.xml");
+                       gadgetXML = new File(temp.getPath() + File.separator + 
"gadgets.xml");
                } catch (IOException e) {
                        e.printStackTrace();
                }
@@ -132,17 +134,24 @@
        }
        
        public void packageGadget(){
-               File test = new File(this.file.getAbsolutePath());
-               ZIP zip = new ZIP(test, new 
File((this.temporaryFile.getAbsolutePath() + ".tgf").replace(" ", "-")));
-               try {
-                       zip.compress(5);
-               } catch (Exception e) {
-                       e.printStackTrace();
-               }
+               String from = this.file.getPath();
+               String to = (this.temporaryFile.getPath() + 
".tgf").replace("(","_").replace(")", "_");
+
+
+               new Compressor();
+               Compressor.compressAttitune(to, from);
        }
        
        public void export(){
-               
+               File f = new File(System.getProperty("user.home"));
+               f =  new File(f.getAbsolutePath() + File.separator + 
"MyTuxGadgets" 
+                               + File.separator + 
(this.temporaryFile.getName() 
+                               + ".tgf").replace(" ", "-"));
+               /*try {
+                       FileUtils.copy(this.finalFile, f);
+               } catch (IOException e) {
+                       e.printStackTrace();
+               }*/
        }
        
        private void registerChanges(Document document){

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 11:06:36 UTC (rev 1593)
+++ 
software_suite_v2/software/control_center/trunk/control_center/sources/com/tuxdroid/cc/Utils/TuxLanguagesMenu.java
  2008-08-26 11:24:39 UTC (rev 1594)
@@ -25,6 +25,7 @@
 import java.io.File;
 import java.net.URISyntaxException;
 import java.net.URL;
+import java.util.Hashtable;
 import java.util.Vector;
 
 import javax.swing.ImageIcon;
@@ -39,7 +40,6 @@
        private TuxAPI tux;
        private Settings settings;
        private Languages language;
-       
        private File[] languages;
        
        //Menus
@@ -53,16 +53,37 @@
        static final URL icon = 
com.tuxdroid.cc.CcInterface.class.getResource("images/arrow_lang.png");
        private boolean initialized = false;
        
+       private Hashtable<String, Hashtable<String, String>> locutors = new 
Hashtable<String, Hashtable<String, String>>();
+       private String currentLocutor;
+       
        //constructor.
        public TuxLanguagesMenu(TuxAPI tux, Settings settings, Languages 
language){
+               //Prepare Hashtable;
                this.tux = tux;
                this.settings = settings;
                this.language = language;
+               this.prepareLocutors();
                this.getAvailablesLang();
                this.getInterfaceMenu();
                this.getLocutorsMenus();
        }
        
+       protected void prepareLocutors(){
+               Hashtable<String, String> en = new Hashtable<String, String>();
+               Hashtable<String, String> fr = new Hashtable<String, String>();
+               Hashtable<String, String> nl = new Hashtable<String, String>();
+               en.put("male", "Ryan");
+               en.put("female", "Heather");
+               fr.put("male", "Bruno");
+               fr.put("female", "Julie");
+               nl.put("male", "Sofie");
+               nl.put("female", "Sofie");
+               
+               locutors.put("en", en);
+               locutors.put("fr", fr);
+               locutors.put("nl", nl);
+       }
+       
        /** Gets languages **/
        private void getAvailablesLang(){
                
@@ -90,11 +111,10 @@
        /** get availables languages menus. **/
        private boolean getLocutorsMenus(){
                if(tux.tts.getVoices().size() <= 0) return false;
-
-               String currentSpeaker = settings.getSpeaker();
+               
                for(String menuName : tux.tts.getVoices()){
                        JMenuItem menu = new JMenuItem(menuName);
-                       if(menuName.equalsIgnoreCase(currentSpeaker)){
+                       if(menuName.equalsIgnoreCase(settings.getSpeaker())){
                                //the set the 'slected' icon.
                                menu.setIcon(new 
ImageIcon(TuxLanguagesMenu.icon));
                        }
@@ -102,8 +122,8 @@
                                public void 
mousePressed(java.awt.event.MouseEvent event){
                                        removeMenuIcons(locutorsMenus);
                                        ((JMenuItem) 
event.getComponent()).setIcon(new ImageIcon(TuxLanguagesMenu.icon));
-                                       
settings.saveSpeaker(((JMenuItem)event.getComponent()).getText());
                                        
tux.tts.setLocutor(((JMenuItem)event.getComponent()).getText());
+                                       currentLocutor = 
((JMenuItem)event.getComponent()).getText();
                                }
                        });
                        this.locutorsMenus.add(menu);
@@ -131,9 +151,27 @@
                                        //Register new language.
                                        String lang = 
((JMenuItem)event.getComponent()).getText();
                                        String country = lang.toUpperCase();
-                                       if(lang.equalsIgnoreCase("en")) country 
= "US";
+                                       if(lang.equalsIgnoreCase("en")){
+                                               country = "US";
+                                               
if(!isValidLocutor(currentLocutor, lang))
+                                                       
settings.saveSpeaker(locutors.get("en").get("male"));
+                                               else 
+                                                       
settings.saveSpeaker(currentLocutor);
+                                       }
+                                       else if(lang.equalsIgnoreCase("fr")){
+                                               
if(!isValidLocutor(currentLocutor, lang))
+                                                       
settings.saveSpeaker(locutors.get("fr").get("male"));
+                                               else 
+                                                       
settings.saveSpeaker(currentLocutor);
+                                       }
+                                       else if(lang.equalsIgnoreCase("nl")){
+                                               
if(!isValidLocutor(currentLocutor, lang))
+                                                       
settings.saveSpeaker(locutors.get("nl").get("male"));
+                                               else 
+                                                       
settings.saveSpeaker(currentLocutor);
+                                       }
                                        settings.saveLocale(lang, country);
-                                       settings.saveSpeaker("Ryan");
+                                       
                                        String msg = 
language.messages.getChangedLangageMessage();
                                        String titleBox = 
language.messages.getMessageBoxTitle();
                                        JOptionPane.showMessageDialog(null, 
msg, titleBox, 
@@ -147,6 +185,35 @@
        }
        
        
+       private boolean isValidLocutor(String locutor, String language){
+               String male;
+               String female;
+               if(language.equalsIgnoreCase("en")){
+                       male = locutors.get("en").get("male");
+                       female = locutors.get("en").get("female");
+                       
+               }
+               else if(language.equalsIgnoreCase("fr")){
+                       male = locutors.get("fr").get("male");
+                       female = locutors.get("fr").get("female");
+               }
+               else if(language.equalsIgnoreCase("nl")){
+                       male = locutors.get("nl").get("male");
+                       female = locutors.get("nl").get("female");
+               }
+               else{
+                       male = locutors.get("en").get("male");
+                       female = locutors.get("en").get("female");
+               }
+               
+               if(!(locutor.equalsIgnoreCase(male)) || 
(locutor.equalsIgnoreCase(female))){
+                       return false;
+               }
+               
+               return true;
+       }
+       
+       
        private void removeMenuIcons(Vector<JMenuItem> items){
                for(JMenuItem item : items) item.setIcon(null);
        }
@@ -161,10 +228,6 @@
                return this.interfaceLanguages.size() > 0;
        }
        
-       public boolean haveLocutor(){
-               return tux.tts.getVoices().size() > 0;
-       }
-       
        public Vector<JMenuItem> getInterfaceLanguagesMenus(){
                return this.interfaceLangMenus;
        }

Added: 
software_suite_v2/software/control_center/trunk/control_center/sources/com/tuxdroid/cc/images/attitunes/alert-attitune.png
===================================================================
(Binary files differ)


Property changes on: 
software_suite_v2/software/control_center/trunk/control_center/sources/com/tuxdroid/cc/images/attitunes/alert-attitune.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Modified: 
software_suite_v2/software/control_center/trunk/control_center/sources/com/tuxdroid/cc/images/attitunes/education-attitune.png
===================================================================
(Binary files differ)

Modified: 
software_suite_v2/software/control_center/trunk/control_center/sources/com/tuxdroid/cc/images/attitunes/fun-attitune.png
===================================================================
(Binary files differ)

Modified: 
software_suite_v2/software/control_center/trunk/control_center/sources/com/tuxdroid/cc/images/attitunes/kids-attitune.png
===================================================================
(Binary files differ)

Added: 
software_suite_v2/software/control_center/trunk/control_center/sources/com/tuxdroid/cc/images/attitunes/message-attitune.png
===================================================================
(Binary files differ)


Property changes on: 
software_suite_v2/software/control_center/trunk/control_center/sources/com/tuxdroid/cc/images/attitunes/message-attitune.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Modified: 
software_suite_v2/software/control_center/trunk/control_center/sources/com/tuxdroid/cc/images/attitunes/music-attitune.png
===================================================================
(Binary files differ)

Added: 
software_suite_v2/software/control_center/trunk/control_center/sources/com/tuxdroid/cc/images/attitunes/other-attitune.png
===================================================================
(Binary files differ)


Property changes on: 
software_suite_v2/software/control_center/trunk/control_center/sources/com/tuxdroid/cc/images/attitunes/other-attitune.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: 
software_suite_v2/software/control_center/trunk/control_center/sources/com/tuxdroid/cc/images/attitunes/system-attitune.png
===================================================================
(Binary files differ)


Property changes on: 
software_suite_v2/software/control_center/trunk/control_center/sources/com/tuxdroid/cc/images/attitunes/system-attitune.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream


-------------------------------------------------------------------------
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