Closed Bug 227651 Opened 21 years ago Closed 21 years ago

[calendar] [mozilla 1.x] if native calendar app is available, and mozilla calendar is not there, show chrome to launch a native calendar, if specified by a pref

Categories

(SeaMonkey :: UI Design, defect)

defect
Not set
normal

Tracking

(Not tracked)

RESOLVED FIXED
mozilla1.6final

People

(Reporter: sspitzer, Assigned: mscott)

References

Details

Attachments

(3 files, 3 obsolete files)

[calendar] if native calendar app is available, and mozilla calendar not
avaible, show chrome to launch calendar
Target Milestone: --- → mozilla1.6final
the current goal is to make it so people who use the Mozilla 1.x app suite, and
happen to have an existing calendar, like CS&T (that shipped with Netscape 4.x,
for example), or Outlook, or Mozilla Calendar (Sunbird), etc automatically get
the "Window | Calendar" menu item.

some notes:

application/v-calendar:
	ext: vcf

"text/calendar" mime type

.ics file extension

http://www.innerjoin.org/iCalendar/calendar-mime-type.html
HKEY_CLASSES_ROOT\icsfile\shell\open\command

for CS&T:

HKEY_LOCAL_MACHINE\SOFTWARE\Netscape\Calendar value is "4.73 (en)"
HKEY_LOCAL_MACHINE\SOFTWARE\Netscape\Calendar\4.73 (en)\Main\Install Directory
value is "C:\Program Files\Netscape\Communicator\Calendar"
the exe for cs&t cal is "C:\Program
Files\Netscape\Communicator\Calendar\nscal32.exe"

It doesn't look like CS&T calendar registers itsself as the default hander for
the calendar mime types or the .ics file.

one idea, for the first attempt at this bug fix, is to make it a pref to the
calendar .exe, that if set, we'll show the UI and launch.

this might be something we can generalize, if we wanted to show other apps (AIM,
for example, like IE does)

more info coming soon.
Keywords: 4xp
note, cs&t can import .vcs files (among other files)

iCal (.ics) is an updated version of the vCal (.vcs) format. 

a related key:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.vcs\OpenWithList
a = notepad.exe
b = nscal32.exe

I don't see that CS&T registering itsself as the default handler for .vcs or
.ics files, like Outlook does.

HKEY_LOCAL_MACHINE\SOFTWARE\Clients\Calendar\Microsoft Outlook\Protocols\.ics



Attached file for mozilla\extensions\tasks (obsolete) —
there are more changes (to mozilla top level), coming next
Attached patch patch (obsolete) — Splinter Review
todo:

1)

the first line of haveInternalCalendar(), "return false;" is temporary, for my
own testing.

2)

an example of the pref, to launch CS&T:

user_pref("task.calendar.location", "C:\\Program
Files\\Netscape\\Communicator\\Calendar\\nscal32.exe");

3)

<!ENTITY other-cal-cmd.accesskey "l">
<!ENTITY other-cal-cmd.commandkey "8">

should be "r" and "7" to match the existing calendar UI

4)

I need to figure out a better solution than the setTimeout() one for collapsing
(or hiding) the UI when there is a native calendar, or no pref set.

JavaScript error:
chrome://tasks/content/tasksOverlay.js line 61: otherCalTaskBarIcon has no prope
rties
on windows we really should honor apppaths
which are keys that live in:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\App Paths
(HKCU is supposed to override, so check it first)

the easy case for me to describe atm is aim

I should be able to enter "aim.exe" and instead of mozilla storing the current 
path to some random aim.exe, it should just store "aim.exe"

then when it wants to run aim it would check:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\App Paths\aim.exe
which today has a default (@) value of:
"C:\PROGRAM FILES\NETSCAPE\COMMUNICATOR\PROGRAM\AIM\AIM.EXE"
and a path ("Path") of:
"C:\PROGRAM FILES\NETSCAPE\COMMUNICATOR\PROGRAM\AIM"

This matters for various reasons, you can share a profile across multiple 
computers where you might want to use the same program but the program might 
live in different places. It also means that if the user moves or upgrades the 
application we automatically find the correct version instead of either running 
a broken/old version or giving the user an error.

I believe nscal is listed in apppaths, if it isn't and we find it we could 
actually register nscal and then the os should track it for us. I can't check 
from the computer I'm currently borrowing, it isn't installed....

As for matching the existing ui, do we want the user to be able to launch both 
the internal calendar and an external calendar? if not then we should remove 
the ui from calendar and have this new code be able to launch the internal 
calendar.

Note that none of the cc'd people represent the XPFE module. I know that 
mozilla.org / mozilla foundation are changing the way we do business, but...

That said, I'm moving this bug to XPApps so that I can find it, as I see no 
reason for this bug to live in MailNews.
Component: Mail Window Front End → XP Apps: GUI Features
OS: Windows 2000 → All
Product: MailNews → Browser
QA Contact: esther → pawyskoczka
Hardware: PC → All
Comment on attachment 136966 [details]
for mozilla\extensions\tasks

1. ("@mozilla.org/ical-container;1" in Components.classes) should be a good
enough test.

2. Menuitems don't like being collapsed, please use hidden="true" instead.

3. Use a non-capturing load event listener to do startup stuff.
As to timeless' comments, we don't actually have an api to launch an app by name
yet (extension of nsIProcess perhaps?) but it would be nice to have; and
integrating with calendar might be tricky if calendar needs to be backward
compatible (like rginda tries to do with ChatZilla).
oops, I meant to log this bug in Calendar, not mailnews.

XP Apps works as well, too.
neil / timeless, thanks for the comments and suggestions.

> As for matching the existing ui, do we want the user to be able to launch both 
> the internal calendar and an external calendar? if not then we should remove 
> the ui from calendar and have this new code be able to launch the internal 
> calendar.

no, we don't want that.  So the current logic of if we should show this calendar
UI in the Window menu or the taskbar is "if no internal calendar and the pref is
set, we'll show the UI"

the current patch needs some more build changes, since this should be built by
default.  (for example, I'm sure firebird doesn't want it)

> ("@mozilla.org/ical-container;1" in Components.classes) should be a good
> enough test.

good point.  I was doing:
  try
  {
    var iCalLibComponent =
Components.classes["@mozilla.org/ical-container;1"].getService(Components.interfaces.oeIICalContainer);
    return true;
  }
  catch (ex)
  {
    return false;
  }

but that is too heavy-weight.

I'll continue on the patch, hopefully have something today.

> As to timeless' comments, we don't actually have an api to launch an app by 
> name yet (extension of nsIProcess perhaps?) but it would be nice to have;

agreed.  for starters, I'm going to make this file path pref based.  it does
have the limitations that timeless points out.  fixing it to work with just the
exe name can come later.
Status: NEW → ASSIGNED
neil:

> ("@mozilla.org/ical-container;1" in Components.classes)

works great, thanks!

> 2. Menuitems don't like being collapsed, please use hidden="true" instead.

done.

> 3. Use a non-capturing load event listener to do startup stuff.

thanks, works great!
on win32, if the "other" app is already running, and I launch it from the app
suite, it gets brought to the front.

I'm not sure what will happen on linux / mac.
Summary: [calendar] [mozilla 1.x] if native calendar app is available, and mozilla calendar not avaible, show chrome to launch calendar → [calendar] [mozilla 1.x] if native calendar app is available, and mozilla calendar there, show chrome to launch a native calendar, if specified by a pref
after making the changes neil suggested, I checked in mozilla/extensions/tasks,
as NOT PART OF THE BUILD.

I've got an updated patch for the top level, coming next...
Attached patch patch (obsolete) — Splinter Review
I need to see if this is what I want.

I'm hoping I can just do:

"--enable-extensions=default,tasks" or something to get what I want.
Attachment #136966 - Attachment is obsolete: true
Attachment #136967 - Attachment is obsolete: true
Attachment #136993 - Attachment is obsolete: true
modern and classic look good, and if you do:

--enable-extensions=default,tasks

it does what we want.

if you do:

--enable-extensions=all

you'll get tasks

if you build moz calendar, or install moz calendar later (as an xpi), and build
this tasks extension, moz calendar takes preference, even if the pref is set.
One more question... does pressing the shortcut key work when you have both
pieces installed?
> One more question... does pressing the shortcut key work when you have both
> pieces installed?

good question, let me double check that.
Flags: blocking1.6+
>> One more question... does pressing the shortcut key work when you have both
>> pieces installed?
>
> good question, let me double check that.

yes, it works.
lets get reviews done so we can get it in quickly for 1.6 if we think it is ready
Comment on attachment 136995 [details] [diff] [review]
make tasks get built if you do "--enable-extensions=all"

r=leaf
Attachment #136995 - Flags: review?(leaf)
Attachment #136995 - Flags: review+
Attachment #136995 - Flags: approval1.6?
Summary: [calendar] [mozilla 1.x] if native calendar app is available, and mozilla calendar there, show chrome to launch a native calendar, if specified by a pref → [calendar] [mozilla 1.x] if native calendar app is available, and mozilla calendar is not there, show chrome to launch a native calendar, if specified by a pref
fixed.

Checking in configure.in;
/cvsroot/mozilla/configure.in,v  <--  configure.in
new revision: 1.1291; previous revision: 1.1290
done
Checking in allmakefiles.sh;
/cvsroot/mozilla/allmakefiles.sh,v  <--  allmakefiles.sh
new revision: 1.460; previous revision: 1.459
done

the follow up tasks:

1) log a bug on some of the enhancements that timeless suggested
2) write up a doc on how the "tasks" extension works and how to use it, and
extend it
3) turn it into a tbird extension?  (see bug #227652)
Status: ASSIGNED → RESOLVED
Closed: 21 years ago
Resolution: --- → FIXED
Comment on attachment 136995 [details] [diff] [review]
make tasks get built if you do "--enable-extensions=all"

sr/a=sspitzer
Attachment #136995 - Flags: superreview+
Attachment #136995 - Flags: approval1.6?
Attachment #136995 - Flags: approval1.6+
Error: otherCalTaskBarIcon has no properties
Source File: chrome://tasks/content/tasksOverlay.js
Line: 51

Some windows have a window but no component bar...
Status: RESOLVED → REOPENED
Resolution: FIXED → ---
Attachment #137333 - Flags: superreview?(bryner)
Attachment #137333 - Flags: review+
Attachment #137333 - Flags: approval1.6?
Attachment #137333 - Flags: superreview?(bryner) → superreview+
Comment on attachment 137333 [details] [diff] [review]
bulletproofing

a=asa (on behalf of drivers) for checkin to Mozilla 1.6
Attachment #137333 - Flags: approval1.6? → approval1.6+
Fix checked in.
Status: REOPENED → RESOLVED
Closed: 21 years ago21 years ago
Resolution: --- → FIXED
> Some windows have a window but no component bar...

good catch, thanks neil.
cc'ing eric, as he's involved with the calendar xpis.
from http://bugzilla.mozilla.org/show_bug.cgi?id=227651#c22

> 2) write up a doc on how the "tasks" extension works and how to use it, and
extend it

see http://www.mozilla.org/docs/extensions/tasks/index.html
timeless noticed that the tasks stuff gets called for every page load :-(
Attachment #140801 - Flags: review?(timeless)
Comment on attachment 140801 [details] [diff] [review]
Don't use capturing handler

well, that's a start...
Attachment #140801 - Flags: review?(timeless) → review+
Attachment #140801 - Flags: superreview+
Checked in an attachment (id=140801)
Product: Core → Mozilla Application Suite
Component: XP Apps: GUI Features → UI Design
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: