Introduction
This page lists a number of possible projects based on reMail's source code and gives pointers on how to implement them.
If you're having trouble with any of this code, feel free to post on the remail-iphone Google Group. I'm happy to add more details to this page if you need more pointers.
Projects
(Note: I'm writing this page on the GBus from Mountain View to San Francisco, and I will get off at the SOMA stop. I will save this page and get off then, and pick up where I left on Monday. - Gabor)
Landscape mode
Difficulty: (3.5/5)
- I think you can get away with just implementing landscape more for SearchEntry, SearchResults, FolderList, MailboxView, and MailView
- Read Apple's reference docs for UIViewController on how to implement autorotation
- SearchEntry and FolderList should be trivial to autorotate
- With SearchResults and SearchEntry you have to make sure that the MailItemCells correctly adjust for more width
- MailView is a bit trickier - all the stuff in loadedEmail assumes a display width of 320 pixels, so you need to adjust the code for device orientation and reload
Password / Lock Screen
Difficulty: (3/5)
Before I explain this, I should point out that while adding a lock screen to reMail might be a good idea, you should always, always have a PIN lock on your phone. Yes, adding a lock screen to reMail will protect you from a thief reading your mail. But if you don't have a PIN code, reMail will be the least of your worries since a thief can impersonate you, read your notes, and steal other personal info. PIN code your phone!
How to do this:
- Create a new xib and ViewController for the configuration screen.
- Create a new xib and ViewController for the screen where you enter and change your PIN.
- Add some accessors to AppSettings so you can read / write your PIN.
- In ReMailAppDelegate.application:didFinishLaunching:withOptions, call your PIN check screen if a PIN code is set. You could do this by calling UIViewController.presentModalViewController: - that might be the easiest option.
Add more account types
Difficulty: (1/5)
This is about adding more preconfigured account types for Mobile Me, GMX, etc.
- Add a new button to AccountTypeSelect that calls up a FlexiConfig view with the right parameters (server, port, etc.). The button can be pretty plain or have the provider's logo - just make sure you have the right to use that logo.
- In SettingsList, consider changing the logo based on account type
- Test, Test, Test
Autocomplete previous searches, not just names
Difficulty: (2/5)
- The SearchEntry view controller currently autocompletes by calling [SearchRunner autocomplete:]
- In SearchRunner.autocomplete, we query the Contacts db's search_contact_name fts3 table. You should also query the past_query table.
- Add some metadata about whether you're returning a past query of person name.
- In SearchEntry, make sure you trigger the right kind of search - goFTSearch and goPersonSearch lead to different types of queries
Pre-sync headers of all emails, then sync contents
Difficulty: (5/5)
- I would start by gaining a deep understaning of ImapFolderWorker
- Then introduce a pre-sync phase where you sync all headers
- That pre-sync phase would be triggered from ImapSync the first time you encounter a folder
Download all attachments by default
Difficulty: (2/5)
- Add a PSToggleSwitch to Settings.bundle - this will show up in iPhone > Settings > reMail
- Add some function in AppSettings to reflect that setting
- Understand ImapFolderWorker's fetchFrom: function
- Read AttachmentDownloader for how to download attachments and where to store them
- Test test test
Re-scan folders and delete messages that have been deleted on the server
Difficulty: (4/5)
- Add a new sync phase in ImapSync that scans all the headers
- Generate hashes and diff them agains the uid_hashes generated by EmailProcessor for duplicate detection
Localize into more languages
Difficulty: (1/5) - but this is a lot of work
Currently, reMail is localized into German (well) and French (badly). You could help by translating into more languages.
- Go through all the xib's
- Create a new Localizable.strings
In search results, see which folder an email is in.
Difficulty: (1/5)
- This is pretty simple to add in MailView's loadedEmail: method
Push for the mail?
Am working on landscape mode. I'm not too far away from completing it, actually.
I'm also planning to look at notifications.