Changeset 6479cb


Ignore:
Timestamp:
Apr 18, 2008, 12:53:39 PM (14 years ago)
Author:
rene <rene@…>
Branches:
master
Children:
99d4f2
Parents:
8f022f
Message:

enabled tri-state editor for extra Options

Location:
chrome/content/v_identity
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • chrome/content/v_identity/vI_storageExtras.js

    r8f022f r6479cb  
    2121
    2222 * ***** END LICENSE BLOCK ***** */
     23
     24function vI_storageExtras_adapt(sourceId, targetId) {
     25    var checked = document.getElementById(sourceId).getAttribute("checked");
     26    if (targetId) var target = document.getElementById(targetId)
     27    else var target = document.getElementById(sourceId.replace(/_store/,""))
     28    if (checked == "true") target.removeAttribute("disabled")
     29    else target.setAttribute("disabled", "true");
     30}   
    2331
    2432vI_storageExtrasHelper = {
     
    3745        var storageExtras = new vI_storageExtras();
    3846        var hide = (document.getElementById("vI_storageExtras_hideUnusedEditorFields").getAttribute("checked") == "true")
    39         for( var i = 0; i < storageExtras.extras.length; i++ )
     47        for( var i = 0; i < storageExtras.extras.length; i++ ) {
    4048            document.getElementById("vI_" + storageExtras.extras[i].option).setAttribute("hidden",
    4149                hide && !vI_storageExtrasHelper.preferences.getBoolPref(storageExtras.extras[i].option))
     50            document.getElementById("vI_" + storageExtras.extras[i].option + "_store").setAttribute("hidden",
     51                hide && !vI_storageExtrasHelper.preferences.getBoolPref(storageExtras.extras[i].option))
     52        }
     53        // resize the window to the content
     54        window.sizeToContent();
    4255    }
    4356}
     
    6881    loopForRDF : function(callFunction, resource) {
    6982        for( var i = 0; i < this.extras.length; i++ )
    70             this.extras[i].value = callFunction(resource, this.extras[i].field, this.extras[i].value)
     83            // only if pref set and feature(element available) or for dataEditor
     84            if (!gMsgCompose || this.extras[i].active)
     85                this.extras[i].value = callFunction(resource, this.extras[i].field, this.extras[i].value)
    7186    },
    7287    equal : function(storageExtras) {
    73         for( var i = 0; i < this.extras.length; i++ )
    74             if (vI.preferences.getBoolPref(this.extras[i].option) &&
    75                 this.extras[i].value != storageExtras.extras[i].value) return false
     88        for( var i = 0; i < this.extras.length; i++ ) {
     89            if (this.extras[i].active) vI_notificationBar.dump("## vI_storageExtras equal "+ this.extras[i].value + " : " + storageExtras.extras[i].value + "\n");
     90            if (this.extras[i].active &&
     91                (this.extras[i].value != storageExtras.extras[i].value)) {
     92                    vI_notificationBar.dump("## vI_storageExtras not equal\n"); return false
     93            }
     94        }
    7695        return true
    7796    },
     
    7998        var returnVal = "";
    8099        for( var i = 0; i < this.extras.length; i++ )
    81             if (vI.preferences.getBoolPref(this.extras[i].option))
     100            if (this.extras[i].active && this.extras[i].value)
    82101                returnVal += " " + this.extras[i].field + "='" + this.extras[i].value + "'";
    83102        return returnVal
    84103    },
    85104    setValues : function() {
    86         for( var i = 0; i < this.extras.length; i++ )
    87             if (vI.preferences.getBoolPref(this.extras[i].option)) this.extras[i].setValue()
     105        for( var i = 0; i < this.extras.length; i++ ) {
     106            if (this.extras[i].active) this.extras[i].setValue()
     107            vI_notificationBar.dump("## vI_storageExtras setValue "+ this.extras[i].field + "=" + this.extras[i].value + "\n");
     108        }
    88109    },
    89110    readValues : function() {
    90         for( var i = 0; i < this.extras.length; i++ )
    91             if (vI.preferences.getBoolPref(this.extras[i].option)) this.extras[i].readValue()
     111        for( var i = 0; i < this.extras.length; i++ ) {
     112            if (this.extras[i].active) this.extras[i].readValue()
     113            vI_notificationBar.dump("## vI_storageExtras readValue "+ this.extras[i].field + "=" + this.extras[i].value + "\n");
     114        }
    92115    },
    93116    setEditorValues : function() {
     
    95118            this.extras[i].value = window.arguments[0][this.extras[i].field + "Col"]
    96119            this.extras[i].setEditorValue();
     120            vI_notificationBar.dump("## vI_storageExtras setEditorValue "+ this.extras[i].field + "=" + this.extras[i].value + "\n");
    97121        }
    98122    },
    99123    readEditorValues : function() {
    100         for( var i = 0; i < this.extras.length; i++ )
     124        for( var i = 0; i < this.extras.length; i++ ) {
    101125            this.extras[i].readEditorValue();
     126            vI_notificationBar.dump("## vI_storageExtras readValue " + this.extras[i].field + "=" + this.extras[i].value + "\n");
     127        }
    102128    },
    103129    addPrefs : function(pref) {
     
    116142    }
    117143}
    118 function vI_storageExtras_characterEncoding() { }
     144function vI_storageExtras_characterEncoding() {
     145    this.active = vI_storageExtrasHelper.preferences.getBoolPref(this.option)
     146}
    119147vI_storageExtras_characterEncoding.prototype = {
     148    active : null,
    120149    value : null,
    121150    field : "charEnc",
     
    124153    setValue : function() {
    125154        if (!this.value) return;
    126        
    127155        var menuitem = document.getElementById(this.value);
    128156        if (menuitem) menuitem.setAttribute('checked', 'true');
     
    136164        gMsgCompose.compFields.characterSet = this.value;
    137165        SetDocumentCharacterSet(this.value);
    138         vI_notificationBar.dump("## vI_storageExtras_characterEncoding setValue " + this.value + "\n");
    139166    },
    140167    readValue : function() {
     
    144171            if (charsetAlias == "us-ascii") this.value = "ISO-8859-1";   // no menu item for "us-ascii"
    145172        }
    146         vI_notificationBar.dump("## vI_storageExtras_characterEncoding readValue " + this.value + "\n");
    147173    },
    148174    // function to set or read the value from the rdfDataEditor
    149175    setEditorValue : function() {
    150176        CreateMenu('mailedit');
    151         document.getElementById("maileditCharsetMenu").selectedItem = document.getElementById(this.value);
    152         vI_notificationBar.dump("## vI_storageExtras_characterEncoding setEditorValue " + this.value + "\n");
     177        if (this.value != null) {
     178            document.getElementById("maileditCharsetMenu").selectedItem = document.getElementById(this.value);
     179            document.getElementById("vI_" + this.option + "_store").setAttribute("checked", "true");
     180        }
     181        document.getElementById("vI_" + this.option + "_store").doCommand();
    153182    },
    154183    readEditorValue : function() {
    155         this.value = document.getElementById("maileditCharsetMenu").selectedItem.id
    156         vI_notificationBar.dump("## vI_storageExtras_characterEncoding readEditorValue " + this.value + "\n");
    157     }
    158 }
    159 
    160 function vI_storageExtras_msgFormat() { }
     184        if (document.getElementById("vI_" + this.option + "_store").getAttribute("checked") == "true")
     185            this.value = document.getElementById("maileditCharsetMenu").selectedItem.id
     186        else    this.value = null;
     187    }
     188}
     189
     190function vI_storageExtras_msgFormat() {
     191    this.active = vI_storageExtrasHelper.preferences.getBoolPref(this.option)
     192}
    161193vI_storageExtras_msgFormat.prototype = {
     194    active : null,
    162195    value : null,
    163196    field : "msgFormat",
     
    166199    setValue : function() {
    167200        if (!this.value) return;
    168         vI_notificationBar.dump("## vI_storageExtras_msgFormat setValue " + this.value + "\n");
    169201        document.getElementById(this.value).setAttribute("checked","true");
    170202        OutputFormatMenuSelect(document.getElementById(this.value))
     
    177209            case nsIMsgCompSendFormat.Both: this.value = "format_both"; break;
    178210        }
    179         vI_notificationBar.dump("## vI_storageExtras_msgFormat readValue " + this.value + "\n");
    180211    },
    181212    // function to set or read the value from the rdfDataEditor
    182213    setEditorValue : function() {
    183214        //~ document.getElementById(this.value).setAttribute("checked","true");
    184         document.getElementById("outputFormatMenu").selectedItem = document.getElementById(this.value);
    185         vI_notificationBar.dump("## vI_storageExtras_characterEncoding setEditorValue " + this.value + "\n");
     215        if (this.value != null) {
     216            document.getElementById("outputFormatMenu").selectedItem = document.getElementById(this.value);
     217            document.getElementById("vI_" + this.option + "_store").setAttribute("checked", "true");
     218        }
     219        document.getElementById("vI_" + this.option + "_store").doCommand();
     220       
    186221    },
    187222    readEditorValue : function() {
    188         this.value = document.getElementById("outputFormatMenu").selectedItem.id
    189         vI_notificationBar.dump("## vI_storageExtras_characterEncoding readEditorValue " + this.value + "\n");
    190     }
    191 }
    192 
    193 function vI_storageExtras_sMime_messageEncryption() { }
     223        if (document.getElementById("vI_" + this.option + "_store").getAttribute("checked") == "true")
     224            this.value = document.getElementById("outputFormatMenu").selectedItem.id
     225        else    this.value = null;
     226    }
     227}
     228
     229function vI_storageExtras_sMime_messageEncryption() {
     230    this.active = vI_storageExtrasHelper.preferences.getBoolPref(this.option)
     231}
    194232vI_storageExtras_sMime_messageEncryption.prototype = {
     233    active : null,
    195234    value : null,
    196235    field : "sMimeEnc",
     
    198237    // function to set or read the value from/to the MessageCompose Dialog
    199238    setValue : function() {
    200         vI_notificationBar.dump("## vI_storageExtras_sMime_messageEncryption setValue " + this.value + "\n");
    201239        if (this.value == "true") var element = document.getElementById("menu_securityEncryptRequire1")
    202240        else var element = document.getElementById("menu_securityNoEncryption1")
     
    207245        setSecuritySettings(1)
    208246        this.value = (document.getElementById("menu_securityEncryptRequire1").getAttribute("checked") == "true")?"true":"false"
    209         vI_notificationBar.dump("## vI_storageExtras_sMime_messageEncryption readValue " + this.value + "\n");
    210247    },
    211248    // function to set or read the value from the rdfDataEditor
    212249    setEditorValue : function() {
    213         document.getElementById("vI_" + this.option).setAttribute("checked", this.value) },
     250        if (this.value != null) {
     251            document.getElementById("vI_" + this.option).setAttribute("checked", this.value);
     252            document.getElementById("vI_" + this.option + "_store").setAttribute("checked", "true");
     253        }
     254        document.getElementById("vI_" + this.option + "_store").doCommand();
     255    },
    214256    readEditorValue : function() {
    215         var elementValue = document.getElementById("vI_" + this.option).getAttribute("checked");
    216         this.value = (elementValue == "true")?"true":"false"
     257        if (document.getElementById("vI_" + this.option + "_store").getAttribute("checked") == "true") {
     258            var elementValue = document.getElementById("vI_" + this.option).getAttribute("checked");
     259            this.value = (elementValue == "true")?"true":"false"
     260        }
     261        else    this.value = null;
    217262    }
    218263}
     
    224269    this.updateFunction = updateFunction;
    225270    this.updateFunctionParam1 = updateFunctionParam1;
     271    this.active = vI_storageExtrasHelper.preferences.getBoolPref(this.option) &&
     272        document.getElementById(this.composeDialogElementID);
    226273}
    227274vI_storageExtras_checkbox.prototype = {
     275    active : null,
    228276    value : null,
    229277    field : null,
     
    235283    // function to set or read the value from/to the MessageCompose Dialog
    236284    setValue : function() {
    237         if (!this.value) return;
    238285        var element = document.getElementById(this.composeDialogElementID);
    239         var elementValue =  element.getAttribute("checked");
    240         if ((elementValue == "true") != (this.value == "true")) {
    241             vI_notificationBar.dump("## vI_storageExtras_checkbox setValue " + this.composeDialogElementID + "=" +
    242                 this.value + " (was: " + elementValue + ").\n");
     286        if (!this.value || !element) return;
     287        if ((element.getAttribute("checked") == "true") != (this.value == "true")) {
    243288            if (this.value == "true") element.setAttribute("checked","true");
    244289            else element.removeAttribute("checked");
     
    247292    },
    248293    readValue : function() {
     294        var element = document.getElementById(this.composeDialogElementID)
     295        if (!element) return;
    249296        if (this.updateFunction) this.updateFunction(this.updateFunctionParam1);
    250         var elementValue =  document.getElementById(this.composeDialogElementID).getAttribute("checked");
    251         this.value = ((elementValue=="true")?"true":"false")
    252         vI_notificationBar.dump("## vI_storageExtras_checkbox readValue " + this.composeDialogElementID + "=" +
    253             this.value + "\n");
    254 
     297        this.value = ((element.getAttribute("checked") == "true")?"true":"false")
    255298    },
    256299    // function to set or read the value from the rdfDataEditor
    257     setEditorValue : function() {
    258         document.getElementById("vI_" + this.option).setAttribute("checked", this.value) },
     300    setEditorValue : function() {
     301        if (this.value != null) {
     302            document.getElementById("vI_" + this.option).setAttribute("checked", this.value);
     303            document.getElementById("vI_" + this.option + "_store").setAttribute("checked", "true");
     304        }
     305        document.getElementById("vI_" + this.option + "_store").doCommand();
     306    },
    259307    readEditorValue : function() {
    260         var elementValue = document.getElementById("vI_" + this.option).getAttribute("checked");
    261         this.value = (elementValue == "true")?"true":"false"
    262     }
    263 }
     308        if (document.getElementById("vI_" + this.option + "_store").getAttribute("checked") == "true") {
     309            var elementValue = document.getElementById("vI_" + this.option).getAttribute("checked");
     310            this.value = (elementValue == "true")?"true":"false"
     311        }
     312        else    this.value = null;
     313    }
     314}
  • chrome/content/v_identity/vI_storageExtrasDataEditorOverlay.xul

    r8f022f r6479cb  
    5151            persist="checked" />
    5252    </caption>
     53        <label value="&vI_storageExtras.storeValue.label;" />
    5354    <!-- storageExtras_returnReciept -->
     55        <hbox>
     56        <checkbox id="vI_storageExtras_returnReciept_store" oncommand="vI_storageExtras_adapt(this.id, null);" />
    5457        <checkbox id="vI_storageExtras_returnReciept" label="&vI_storageExtrasDataEditorOverlay.reciept.label;"/>
     58        </hbox>
    5559    <!-- storageExtras_characterEncoding -->
     60        <hbox>
     61        <checkbox id="vI_storageExtras_characterEncoding_store"
     62            oncommand="vI_storageExtras_adapt(this.id, 'maileditCharsetMenuLabel');vI_storageExtras_adapt(this.id, 'maileditCharsetMenu');" />
    5663        <hbox id="vI_storageExtras_characterEncoding">
    5764            <vbox><spacer flex="1"/>
    58                 <label value="&charsetMenu.label;" accesskey="&charsetMenu.accesskey;" control="maileditCharsetMenu" />
     65                <label id="maileditCharsetMenuLabel" value="&charsetMenu.label;"
     66                    accesskey="&charsetMenu.accesskey;" control="maileditCharsetMenu" />
    5967            <spacer flex="1"/></vbox>
    6068            <menulist id="maileditCharsetMenu"
     
    7381            </menulist>
    7482        </hbox>
     83        </hbox>
    7584    <!-- storageExtras_messageFormat -->
     85        <hbox>
     86        <checkbox id="vI_storageExtras_messageFormat_store"
     87            oncommand="vI_storageExtras_adapt(this.id, 'outputFormatMenuLabel');vI_storageExtras_adapt(this.id, 'outputFormatMenu');" />
    7688        <hbox id="vI_storageExtras_messageFormat">
    7789            <vbox><spacer flex="1"/>
    78                 <label value="&outputFormatMenu.label;" accesskey="&outputFormatMenu.label;" control="outputFormatMenu" />
     90                <label id="outputFormatMenuLabel" value="&outputFormatMenu.label;"
     91                    accesskey="&outputFormatMenu.label;" control="outputFormatMenu" />
    7992            <spacer flex="1"/></vbox>
    8093            <menulist id="outputFormatMenu">
     
    87100            </menulist>
    88101        </hbox>
     102        </hbox>
    89103    <!-- storageExtras_sMime_messageEncryption -->
     104        <hbox>
     105        <checkbox id="vI_storageExtras_sMime_messageEncryption_store" oncommand="vI_storageExtras_adapt(this.id, null)" />
    90106        <checkbox id="vI_storageExtras_sMime_messageEncryption"
    91107            label="&vI_storageExtrasDataEditorOverlay.sMimeEnc.label;"/>
     108        </hbox>
    92109    <!-- storageExtras_sMime_messageSignature -->
     110        <hbox>
     111        <checkbox id="vI_storageExtras_sMime_messageSignature_store" oncommand="vI_storageExtras_adapt(this.id, null)" />
    93112        <checkbox id="vI_storageExtras_sMime_messageSignature"
    94113            label="&vI_storageExtrasDataEditorOverlay.sMimeSig.label;"/>
     114        </hbox>
    95115    <!-- storageExtras_openPGP_messageEncryption -->
     116        <hbox>
     117        <checkbox id="vI_storageExtras_openPGP_messageEncryption_store" oncommand="vI_storageExtras_adapt(this.id, null)" />
    96118        <checkbox id="vI_storageExtras_openPGP_messageEncryption"
    97119            label="&vI_storageExtrasDataEditorOverlay.PGPEnc.label;"/>
     120        </hbox>
    98121    <!-- storageExtras_openPGP_messageSignature -->
     122        <hbox>
     123        <checkbox id="vI_storageExtras_openPGP_messageSignature_store" oncommand="vI_storageExtras_adapt(this.id, null)" />
    99124        <checkbox id="vI_storageExtras_openPGP_messageSignature"
    100125            label="&vI_storageExtrasDataEditorOverlay.PGPSig.label;"/>
     126        </hbox>
    101127    <!-- storageExtras_openPGP_PGPMIME -->
     128        <hbox>
     129        <checkbox id="vI_storageExtras_openPGP_PGPMIME_store" oncommand="vI_storageExtras_adapt(this.id, null)" />
    102130        <checkbox id="vI_storageExtras_openPGP_PGPMIME"
    103131            label="&vI_storageExtrasDataEditorOverlay.PGPMIME.label;"/>
     132        </hbox>
    104133    </groupbox>
    105134    </vbox>
Note: See TracChangeset for help on using the changeset viewer.