Skip to content

Commit

Permalink
Fixed Category Dialog
Browse files Browse the repository at this point in the history
  • Loading branch information
RealRaven2000 committed Nov 4, 2020
1 parent a0feb37 commit 18697e1
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 46 deletions.
16 changes: 4 additions & 12 deletions chrome/content/quickfolders-util.js
Original file line number Diff line number Diff line change
Expand Up @@ -1601,10 +1601,6 @@ QuickFolders.Util = {
if(!p) return false;
if (p.flags & FLAGS.MSG_FOLDER_FLAG_TRASH)
return false; // empty folder, in trash`1
/*
let rdf = Components.classes['@mozilla.org/rdf/rdf-service;1'].getService(Components.interfaces.nsIRDFService),
folder = rdf.GetResource(msgFolder.URI).QueryInterface(Components.interfaces.nsIMsgFolder);
*/
return true; // msgFolder.parent != null;
}
return false;
Expand Down Expand Up @@ -2290,14 +2286,10 @@ QuickFolders.Util.getOrCreateFolder = async function (aUrl, aFlags) {
if (fls)
folder = fls.getOrCreateFolderForURL(aUrl);
else {
// In theory, we should query our map first to see if we have the folder.
// However, the way you create a new folder anyways presently requires
// hitting up the RDF service in the first place, so there's no point trying
// to force a double-query of the map in this error scenario.
let rdf = Cc["@mozilla.org/rdf/rdf-service;1"].getService(Ci.nsIRDFService);
// Unlike above, we don't want to catch the exception--it will propagate to
// a promise rejection.
folder = rdf.GetResource(aUrl).QueryInterface(Ci.nsIMsgFolder);
// old method, relying on Ci.nsIRDFService
// let rdf = Cc["@mozilla.org/rdf/rdf-service;1"].getService(Ci.nsIRDFService);
// folder = rdf.GetResource(aUrl).QueryInterface(Ci.nsIMsgFolder);
folder = null;
}

logDebug('folder = ' + folder);
Expand Down
45 changes: 14 additions & 31 deletions chrome/content/quickfolders.js
Original file line number Diff line number Diff line change
Expand Up @@ -467,32 +467,12 @@ if (typeof DeferredTask == "undefined")
// wrap function for session store: persist / restore categories
var QuickFolders_PrepareSessionStore = function () {
const util = QuickFolders.Util,
model = QuickFolders.Model,
CI = Components.interfaces;
if (!util) {
return;
}
if (util.Application == "Postbox") {
// we have to wrap persistTabString()
// so append some script in order to restore the categories in Postbox
let tabMail = document.getElementById('tabmail');
if (tabMail && typeof tabMail.QuickFolders_persistTabString == 'undefined') {
tabMail.QuickFolders_persistTabString = tabMail.persistTabString; // backup old function
tabMail.persistTabString = function() {
var tString = tabMail.QuickFolders_persistTabString(),
PostboxSessionRestoreScript = '';

if (util && QuickFolders.Interface) {
PostboxSessionRestoreScript = QuickFolders.Interface.restoreSessionScript();
if (util.isDebug) debugger;
}
return tString + PostboxSessionRestoreScript;
}
}
else window.setTimeout(function () {
QuickFolders_PrepareSessionStore();
}, 5000);
}
else if (typeof mailTabType != "undefined") { // Thunderbird
if (typeof mailTabType != "undefined") { // Thunderbird
if (mailTabType.QuickFolders_SessionStore) return; // avoid multiple modifications.
mailTabType.QuickFolders_SessionStore = true;
// overwrite persist
Expand All @@ -509,13 +489,15 @@ var QuickFolders_PrepareSessionStore = function () {
let orgRestore = mailTabType.modes["folder"].restoreTab; // we might have to use QuickFolders.Util.mailFolderTypeName instead "folder" for SeaMonkey
mailTabType.modes["folder"].restoreTab = function(aTabmail, aPersistedState) {
orgRestore(aTabmail, aPersistedState);
debugger;
let txt;
try {
aPersistedState.QuickFoldersCategory || "(no category)";
} catch(ex) {;}
util.logDebug("restored tabs: " + txt);
let rdf = Components.classes['@mozilla.org/rdf/rdf-service;1'].getService(CI.nsIRDFService),
folder = rdf.GetResource(aPersistedState.folderURI).QueryInterface(CI.nsIMsgFolder);
// let rdf = Components.classes['@mozilla.org/rdf/rdf-service;1'].getService(CI.nsIRDFService),
// folder = rdf.GetResource(aPersistedState.folderURI).QueryInterface(CI.nsIMsgFolder);
let folder = model.getMsgFolderFromUri(aPersistedState.folderURI);
if (folder && aPersistedState.QuickFoldersCategory) {
let tabInfo, theUri;
// Thunderbird only code, so it is fine to use tabInfo here:
Expand Down Expand Up @@ -2122,6 +2104,7 @@ function QuickFolders_MyChangeSelection(tree, newIndex) {
function QuickFolders_MySelectFolder(folderUri, highlightTabFirst) {
const util = QuickFolders.Util,
prefs = QuickFolders.Preferences,
model = QuickFolders.Model,
QI = QuickFolders.Interface,
Ci = Components.interfaces,
Cc = Components.classes;
Expand Down Expand Up @@ -2153,7 +2136,7 @@ function QuickFolders_MySelectFolder(folderUri, highlightTabFirst) {
msgFolder,
isInvalid = false;
try {
msgFolder = QuickFolders.Model.getMsgFolderFromUri(folderUri, true);
msgFolder = model.getMsgFolderFromUri(folderUri, true);
if (prefs.getBoolPref("autoValidateFolders")) {
isInvalid = (!util.doesMailFolderExist(msgFolder));
}
Expand All @@ -2166,7 +2149,7 @@ function QuickFolders_MySelectFolder(folderUri, highlightTabFirst) {
if (isInvalid) {
// invalid folder; suggest to correct this!
util.logDebugOptional("folders.select","detected invalid folder, trying to correct entry table.");
let folderEntry = QuickFolders.Model.getFolderEntry(folderUri);
let folderEntry = model.getFolderEntry(folderUri);
if (!folderEntry) return false;
if (folderEntry.disableValidation) {
; // do nothing. a pending rename invalidated this entry
Expand All @@ -2175,7 +2158,7 @@ function QuickFolders_MySelectFolder(folderUri, highlightTabFirst) {
switch(QI.deleteFolderPrompt(folderEntry, false)) {
case 1: // delete
// save changes right away!
prefs.storeFolderEntries(QuickFolders.Model.selectedFolders);
prefs.storeFolderEntries(model.selectedFolders);
// update the model
QI.updateFolders(true, true);
break;
Expand Down Expand Up @@ -2286,9 +2269,9 @@ function QuickFolders_MySelectFolder(folderUri, highlightTabFirst) {
util.logDebugOptional("folders.select","smart folder detected, switching treeview mode...");
// toggle to smartfolder view and reinitalize folder variable!
theTreeView.mode="smart"; // after changing the view, we need to get a new parent!!
let rdf = Cc['@mozilla.org/rdf/rdf-service;1'].getService(Ci.nsIRDFService),
folderResource = rdf.GetResource(folderUri);
msgFolder = folderResource.QueryInterface(Ci.nsIMsgFolder);
//let rdf = Cc['@mozilla.org/rdf/rdf-service;1'].getService(Ci.nsIRDFService),
// folderResource = rdf.GetResource(folderUri);
msgFolder = model.getMsgFolderFromUri(folderUri); // folderResource.QueryInterface(Ci.nsIMsgFolder);
parentIndex = theTreeView.getIndexOfFolder(msgFolder.parent);
}

Expand Down Expand Up @@ -2420,7 +2403,7 @@ function QuickFolders_MySelectFolder(folderUri, highlightTabFirst) {

// speed up the highlighting... - is this only necessary on MAC ?
if (highlightTabFirst) {
let entry = QuickFolders.Model.getFolderEntry(folderUri);
let entry = model.getFolderEntry(folderUri);
if (entry) {
util.logDebugOptional("folders.select", 'onTabSelected() - highlighting speed hack');
QuickFolders.Interface.onTabSelected();
Expand Down
7 changes: 4 additions & 3 deletions chrome/content/set-folder-category.xhtml
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,10 @@

<!DOCTYPE dialog SYSTEM "chrome://quickfolders/locale/set_folder_category.dtd" >
<dialog title="&qf.dialog.setcategory;"
buttons="accept,cancel"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
onload="QuickFolders.FolderCategory.init(this, window.arguments[1]);"
buttons="accept,cancel"
xmlns:html="http://www.w3.org/1999/xhtml"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
onload="QuickFolders.FolderCategory.init(this, window.arguments[1]);"
>
<!-- ondialogaccept="QuickFolders.FolderCategory.setSelectedCategory();var rv= window.arguments[2]; rv.btnClicked='ok';" borked in Thunderbird 68 -->

Expand Down

0 comments on commit 18697e1

Please sign in to comment.