I have written schedule that could be used for a basic Click To Dial Popup Window project. Once the plan below is finished, it should be easy to add many buttons to the popup window; there could be buttons for calling, texting, adding to a phone book, searching email for the phone number, calling with Signal, &c. An ambitious student could modify this proposal to include those things.
A pop-up window for tel: urls
The result of this project is that clicking a tel: link in GNOME can start a pop-up window with these components
- Text display of the phone number to be called
- A "call" button that places a phone call
- Text display of the country in which the phone number is registered
Week 1: Write a dummy "tel:" handler
Write a program that receives a tel: link as argument 1 and prints the telephone number (with "tel:" removed) to standard output. That is, it should be run like this.
$ place-phone-call tel:+36849123456 36849123456
Write documentation on how to run the program from the command-line.
Week 2: Configure the dummy "tel:" handler
Configure the program as the handler for tel: URLs with xdg-mime.
Write documentation on how to configure a program as a handler for tel: URLs, so that other people can repeat my configuration.
Week 3: Make a popup window
Modify the program so that it opens a pop-up window that displays the phone number.
Week 4: The "call" button
Add a "call" button to the pop-up window. When the "call" button is pressed, print "Call [phone_number]." to standard output.
Week 5: Place a phone call
Install and configure pjsua, and use it to place a phone call. Document the configuration file so that others may repeat my work.
Week 6: Learn to use execvp
Write a (very short) program that just launches pjsua with execvp.
Week 7: Place a phone call
Modify the pop-up window program to place calls; when the "call" button is pressed, start pjsua with execvp in order to place the call. Hard-code the program to use pjsua.
Week 8: Country
Use libphonenumber to get the country corresponding to a phone number. Display it in the pop-up window.
Week 9: User configuration
Modify the pop-up window program so that phone calls are placed with a user-configurable command specified by the environment variable "TELEPHONE".
Begin writing a manual page for the pop-up window program, by converting my existing documentation into mdoc format.
Week 10: User configuration
If the "TELEPHONE" environment variable is specified, display the name of the program that will be used to place the call. If the "TELEPHONE" variable is not specified, put a button in the pop-up window that says "Choose application". When you click that button, you get another pop-up window where you can choose the application.
Revise the manual page.
Week 11: Documentation and installation script
Finalize the manual page.
Write a script that installs the pop-up program and the manual page into directories under the PREFIX environment variable. Distribute it to at least three people other than my mentor for testing.
Week 12: Packaging
Write a Debian package of the program. Distribute the Debian package to at least three people other than my mentor for testing.
Extra: Country Flag
If I finish ahead of schedule, I will add a country flag to the pop-up window.
Use libphonenumber to get the country code corresponding to a phone number. Display it in the pop-up window.
Look up the country flag corresponding to the country code, and display that instead of the country name.
