Ignore:
Timestamp:
Jan 21, 2008, 7:17:34 PM (17 years ago)
Author:
fnevgeny
Branch:
default
Phase:
public
Message:

Implemented preferences + saving/restoring them via cookies.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • source/class/pf/Application.js

    r48 r52  
    562562    var entity = e.getUserData("entity");
    563563   
    564     this.gui_entity_units.update(entity.dimension);
     564    this.gui_entity_units.update(entity.dimension,
     565        this.prefs.units[entity.dimension]);
    565566   
    566567    this.updateEntityValue();
     
    14941495            e.addEventListener("changeSelected", function(ev) {
    14951496                    var dimension = this.gui_compare_dim.getSelectedValue();
    1496                     this.gui_compare_units.update(dimension);
     1497                    this.gui_compare_units.update(dimension,
     1498                        this.prefs.units[dimension]);
    14971499                    this.updateFavoritesListView();
    14981500                    this.updateLegendListView();
     
    15021504
    15031505            l = new qx.ui.basic.Label("Units:");
    1504             e = new pf.UnitSelector;
     1506            e = new pf.UnitSelector();
    15051507            e.addEventListener("changeSelected", function(ev) {
    15061508                    this.updateFavoritesListView();
     
    19451947        },
    19461948       
     1949        prefsCB : function(ev)
     1950        {
     1951            this.prefsWindow.open();
     1952        },
     1953       
    19471954        buildMenu : function()
    19481955        {
     
    20102017            btn = new qx.ui.menu.Button("Preferences",
    20112018                "pf/image/preferences.png");
    2012             btn.addEventListener("execute", function (ev) {
    2013                 alert("Not implemented yet")}, this);
     2019            btn.addEventListener("execute", this.prefsCB, this);
    20142020            submenu.add(btn);
    20152021
     
    21122118        },
    21132119
     2120        getWindowDimensions : function()
     2121        {
     2122            var dims = new Object;
     2123           
     2124            dims.w = qx.html.Window.getInnerWidth(this.win);
     2125            dims.h = qx.html.Window.getInnerHeight(this.win);
     2126           
     2127            return dims;
     2128        },
     2129
     2130        savePreferences : function()
     2131        {
     2132            if (this.prefs) {
     2133                var prefstr = qx.io.Json.stringify(this.prefs);
     2134                qx.io.local.CookieApi.set("prefs", prefstr);
     2135            }
     2136        },
     2137       
     2138        loadPreferences : function()
     2139        {
     2140            var prefstr = qx.io.local.CookieApi.get("prefs");
     2141            // this.warn(prefstr);
     2142            if (prefstr) {
     2143                this.prefs = qx.io.Json.parseQx(prefstr);
     2144            }
     2145           
     2146            if (!this.prefs) {
     2147                this.prefs = new Object;
     2148            }
     2149           
     2150            if (!this.prefs.units) {
     2151                this.prefs.units = new Object;
     2152            }
     2153        },
     2154       
     2155
     2156        createPrefsDialog : function()
     2157        {
     2158            var w;
     2159            // "Preferences..." dialog
     2160            w = new qx.ui.window.Window("Preferences",
     2161                "pf/image/preferences.png");
     2162            w.setSpace(200, "auto", 100, "auto");
     2163            w.setModal(true);
     2164            w.setShowMinimize(false);
     2165            w.setShowMaximize(false);
     2166
     2167            var vbl = new qx.ui.layout.VerticalBoxLayout("vertical");
     2168            vbl.setStretchChildrenOrthogonalAxis(false);
     2169            w.add(vbl);
     2170           
     2171            var fr1, fr2, rc, l, e;
     2172           
     2173            fr1 = new qx.ui.groupbox.GroupBox("Default units");
     2174            fr1.setDimension("auto", "auto");
     2175            vbl.add(fr1);
     2176           
     2177            rc = new qx.ui.layout.HorizontalBoxLayout;
     2178            rc.setWidth("100%");
     2179            rc.setHeight("auto");
     2180            rc.setSpacing(10);
     2181            fr1.add(rc);
     2182
     2183            l = new qx.ui.basic.Label("Dimension:");
     2184            e = new pf.ui.ComboBox;
     2185            e.add(new qx.ui.form.ListItem("Frequency", null, "frequency"));
     2186            e.add(new qx.ui.form.ListItem("Length", null, "length"));
     2187            e.add(new qx.ui.form.ListItem("Velocity", null, "velocity"));
     2188            e.add(new qx.ui.form.ListItem("Energy", null, "energy"));
     2189            e.add(new qx.ui.form.ListItem("Electric field", null, "efield"));
     2190            e.addEventListener("changeSelected", function(ev) {
     2191                    var dimension = ev.getTarget().getSelectedValue();
     2192                    this.gui_prefs_units.update(dimension,
     2193                        this.prefs.units[dimension]);
     2194                }, this);
     2195            rc.add(l, e);
     2196            this.gui_prefs_dim = e;
     2197
     2198            l = new qx.ui.basic.Label("Units:");
     2199            e = new pf.UnitSelector();
     2200            e.addEventListener("changeSelected", function(ev) {
     2201                    var dimension = this.gui_prefs_dim.getSelectedValue();
     2202                    var units = ev.getTarget().getValue();
     2203                    this.prefs.units[dimension] = units;
     2204                }, this);
     2205            rc.add(l, e);
     2206            this.gui_prefs_units = e;
     2207
     2208            fr2 = new qx.ui.groupbox.GroupBox("Interface");
     2209            fr2.setDimension("auto", "auto");
     2210            vbl.add(fr2);
     2211            // A hack...
     2212            fr1.addEventListener("appear", function(ev) {
     2213                    fr2.setWidth(this.getWidthValue());
     2214                });
     2215
     2216            e = new qx.ui.form.CheckBox("Remember window dimensions on exit");
     2217            e.setChecked(this.prefs.rememberWindowSize);
     2218            e.addEventListener("changeChecked", function(ev) {
     2219                this.prefs.rememberWindowSize = ev.getTarget().getChecked();
     2220            }, this);
     2221            fr2.add(e);
     2222
     2223            this.doc.add(w);
     2224            this.prefsWindow = w;
     2225        },
     2226
    21142227        /**
    21152228         * TODOC
     
    21282241
    21292242            this.doc = qx.ui.core.ClientDocument.getInstance();
     2243            this.win = this.doc.getWindowElement();
     2244           
     2245            // Load prefs
     2246            this.loadPreferences();
    21302247           
    21312248            // Defaults
    2132            
    21332249            this.r = new pf.base.Species("r", 1.0,           0, 0,    1.0, null);
    21342250            this.e = new pf.base.Species("e", (1.0/1836.2), -1, 1e16, 1.0, this.r);
     
    21432259           
    21442260            if (this.updatePlasmaParameters() != true) {
    2145                 alert("Error!");
     2261                this.error("Error updating plasma parameters!");
    21462262            }
    21472263           
     
    21882304            // The "Plot" tab
    21892305            this.renderPlotTab();
     2306           
     2307            // "Preferences" dialog
     2308            this.createPrefsDialog();
    21902309
    21912310            // "About..." dialog
    2192             var w = new qx.ui.window.Window("About Plasma Formulary",
     2311            w = new qx.ui.window.Window("About Plasma Formulary",
    21932312                "pf/image/about.png");
    21942313            w.setSpace(200, "auto", 100, "auto");
     
    22102329            this.doc.add(w);
    22112330            this.aboutWindow = w;
     2331           
     2332            if (this.prefs.rememberWindowSize && this.prefs.dims) {
     2333                self.resizeTo(this.prefs.dims.w,this.prefs.dims.h)
     2334            }
     2335
     2336            // Handle resize events
     2337            this.doc.addEventListener("windowresize", function(e) {
     2338                if (this.prefs.rememberWindowSize) {
     2339                    this.prefs.dims = this.getWindowDimensions();
     2340                }
     2341                this.drawCB();
     2342            }, this);
    22122343        },
    22132344   
     
    22252356
    22262357            // Prompt user
    2227             // return "qooxdoo application: Do you really want to close the application?";
    2228         },
    2229 
     2358            // return "Do you really want to close the application?";
     2359        },
    22302360
    22312361       /**
     
    22372367        */
    22382368        terminate : function(e) {
     2369            // Save preferences
     2370            this.savePreferences();
     2371
    22392372            this.base(arguments);
    22402373        }
Note: See TracChangeset for help on using the changeset viewer.