├── SwissSMS_Prefix.pch
├── English.lproj
├── Localizable.strings
├── InfoPlist.strings
├── MainMenu.nib
│ └── keyedobjects.nib
└── Preferences.nib
│ └── keyedobjects.nib
├── Frameworks
└── Sparkle.framework
│ ├── Versions
│ ├── Current
│ └── A
│ │ ├── Resources
│ │ ├── fr_CA.lproj
│ │ ├── fr.lproj
│ │ │ ├── fr.lproj
│ │ │ ├── Sparkle.strings
│ │ │ ├── SUUpdateAlert.nib
│ │ │ │ ├── keyedobjects.nib
│ │ │ │ ├── info.nib
│ │ │ │ └── classes.nib
│ │ │ ├── SUAutomaticUpdateAlert.nib
│ │ │ │ ├── keyedobjects.nib
│ │ │ │ ├── info.nib
│ │ │ │ └── classes.nib
│ │ │ └── SUUpdatePermissionPrompt.nib
│ │ │ │ ├── keyedobjects.nib
│ │ │ │ ├── info.nib
│ │ │ │ └── classes.nib
│ │ ├── relaunch
│ │ ├── de.lproj
│ │ │ ├── Sparkle.strings
│ │ │ ├── SUUpdateAlert.nib
│ │ │ │ ├── keyedobjects.nib
│ │ │ │ ├── info.nib
│ │ │ │ └── classes.nib
│ │ │ ├── SUAutomaticUpdateAlert.nib
│ │ │ │ ├── keyedobjects.nib
│ │ │ │ ├── info.nib
│ │ │ │ └── classes.nib
│ │ │ └── SUUpdatePermissionPrompt.nib
│ │ │ │ ├── keyedobjects.nib
│ │ │ │ ├── info.nib
│ │ │ │ └── classes.nib
│ │ ├── en.lproj
│ │ │ ├── Sparkle.strings
│ │ │ ├── SUUpdateAlert.nib
│ │ │ │ ├── keyedobjects.nib
│ │ │ │ ├── info.nib
│ │ │ │ └── classes.nib
│ │ │ ├── SUAutomaticUpdateAlert.nib
│ │ │ │ ├── keyedobjects.nib
│ │ │ │ ├── info.nib
│ │ │ │ └── classes.nib
│ │ │ └── SUUpdatePermissionPrompt.nib
│ │ │ │ ├── keyedobjects.nib
│ │ │ │ ├── info.nib
│ │ │ │ └── classes.nib
│ │ ├── es.lproj
│ │ │ ├── Sparkle.strings
│ │ │ ├── SUUpdateAlert.nib
│ │ │ │ ├── keyedobjects.nib
│ │ │ │ ├── info.nib
│ │ │ │ └── classes.nib
│ │ │ ├── SUAutomaticUpdateAlert.nib
│ │ │ │ ├── keyedobjects.nib
│ │ │ │ ├── info.nib
│ │ │ │ └── classes.nib
│ │ │ └── SUUpdatePermissionPrompt.nib
│ │ │ │ ├── keyedobjects.nib
│ │ │ │ ├── info.nib
│ │ │ │ └── classes.nib
│ │ ├── it.lproj
│ │ │ ├── Sparkle.strings
│ │ │ ├── SUUpdateAlert.nib
│ │ │ │ ├── keyedobjects.nib
│ │ │ │ ├── info.nib
│ │ │ │ └── classes.nib
│ │ │ ├── SUAutomaticUpdateAlert.nib
│ │ │ │ ├── keyedobjects.nib
│ │ │ │ ├── info.nib
│ │ │ │ └── classes.nib
│ │ │ └── SUUpdatePermissionPrompt.nib
│ │ │ │ ├── keyedobjects.nib
│ │ │ │ ├── info.nib
│ │ │ │ └── classes.nib
│ │ ├── nl.lproj
│ │ │ ├── Sparkle.strings
│ │ │ ├── SUUpdateAlert.nib
│ │ │ │ ├── keyedobjects.nib
│ │ │ │ ├── info.nib
│ │ │ │ └── classes.nib
│ │ │ ├── SUAutomaticUpdateAlert.nib
│ │ │ │ ├── keyedobjects.nib
│ │ │ │ ├── info.nib
│ │ │ │ └── classes.nib
│ │ │ └── SUUpdatePermissionPrompt.nib
│ │ │ │ ├── keyedobjects.nib
│ │ │ │ ├── info.nib
│ │ │ │ └── classes.nib
│ │ ├── ru.lproj
│ │ │ ├── Sparkle.strings
│ │ │ ├── SUUpdateAlert.nib
│ │ │ │ ├── keyedobjects.nib
│ │ │ │ ├── info.nib
│ │ │ │ └── classes.nib
│ │ │ ├── SUAutomaticUpdateAlert.nib
│ │ │ │ ├── keyedobjects.nib
│ │ │ │ ├── info.nib
│ │ │ │ └── classes.nib
│ │ │ └── SUUpdatePermissionPrompt.nib
│ │ │ │ ├── keyedobjects.nib
│ │ │ │ ├── info.nib
│ │ │ │ └── classes.nib
│ │ ├── sv.lproj
│ │ │ ├── Sparkle.strings
│ │ │ ├── SUUpdateAlert.nib
│ │ │ │ ├── keyedobjects.nib
│ │ │ │ ├── info.nib
│ │ │ │ └── classes.nib
│ │ │ ├── SUAutomaticUpdateAlert.nib
│ │ │ │ ├── keyedobjects.nib
│ │ │ │ ├── info.nib
│ │ │ │ └── classes.nib
│ │ │ └── SUUpdatePermissionPrompt.nib
│ │ │ │ ├── keyedobjects.nib
│ │ │ │ ├── info.nib
│ │ │ │ └── classes.nib
│ │ ├── SUStatus.nib
│ │ │ ├── keyedobjects.nib
│ │ │ ├── info.nib
│ │ │ └── classes.nib
│ │ ├── Info.plist
│ │ └── License.txt
│ │ ├── Sparkle
│ │ └── Headers
│ │ ├── Sparkle.h
│ │ ├── SUAppcast.h
│ │ ├── SUVersionComparisonProtocol.h
│ │ └── SUAppcastItem.h
│ ├── Headers
│ ├── Sparkle
│ └── Resources
├── Resources
├── Flag.png
├── Delete.png
├── Flagged.png
├── Inspect.png
├── general.png
├── network.png
├── person.tiff
├── update.tiff
├── NewMessage.png
├── SwissSMS.icns
├── AddressBook.tiff
├── FlaggedHeader.png
├── SwissSMSLarge.tiff
├── appDefaults.plist
├── SwissSMSDocument.icns
├── SwissSMS Help
│ ├── art
│ │ └── iconhelpcenter.png
│ └── SwissSMS Help.helpindex
└── Credits.html
├── Plugins
├── ETHCH
│ ├── ETH.png
│ ├── ETHCH.h
│ └── Info.plist
├── MjoyINT
│ ├── Mjoy.png
│ ├── MjoyINT.h
│ └── Info.plist
├── YalloCH
│ ├── Yallo.png
│ ├── YalloCH.m
│ ├── YalloCH.h
│ └── Info.plist
├── OrangeCH
│ ├── Orange.png
│ ├── OrangeCH.h
│ └── Info.plist
├── SunriseCH
│ ├── Sunrise.png
│ ├── SunriseCH.h
│ └── Info.plist
├── hispeedCH
│ ├── Hispeed.png
│ ├── HispeedCH.h
│ ├── Info.plist
│ └── HispeedCH.m
├── PostMailCH
│ ├── PostMail.png
│ ├── PostMailCH.h
│ ├── PostMailCH.m
│ └── Info.plist
├── RomandieCH
│ ├── Romandie.png
│ ├── RomandieCH.h
│ ├── Info.plist
│ └── RomandieCH.m
├── CitycableCH
│ ├── Citycable.png
│ ├── CitycableCH.h
│ └── Info.plist
├── NetAppelINT
│ ├── NetAppel.png
│ ├── NetAppelINT.h
│ └── Info.plist
├── CoopMobileCH
│ ├── Coop Mobile.png
│ ├── CoopMobileCH.h
│ └── Info.plist
└── SwisscomXtraZoneCH
│ ├── Swisscom Xtra-Zone.png
│ ├── SwisscomXtraZoneCH.h
│ └── Info.plist
├── German.lproj
├── InfoPlist.strings
├── MainMenu.nib
│ └── keyedobjects.nib
└── Preferences.nib
│ └── keyedobjects.nib
├── PluginTemplate
├── MyServiceCH.png
├── MyServiceCH.h
├── SwissSMSPlugin_Prefix.pch
├── MyServiceCH.m
├── README.txt
└── Info.plist
├── swiss_sms_screenshot_small.png
├── SwissSMS_DataModel.xcdatamodel
├── elements
└── layout
├── French.lproj
├── MainMenu.nib
│ └── keyedobjects.nib
└── Preferences.nib
│ └── keyedobjects.nib
├── MDImporter
├── English.lproj
│ └── InfoPlist.strings
├── schema.xml
├── Info.plist
└── GetMetadataForFile.m
├── Automator action
├── English.lproj
│ ├── InfoPlist.strings
│ └── main.nib
│ │ └── keyedobjects.nib
├── French.lproj
│ ├── InfoPlist.strings
│ └── main.nib
│ │ └── keyedobjects.nib
├── German.lproj
│ ├── InfoPlist.strings
│ └── main.nib
│ │ └── keyedobjects.nib
├── Send SMS_Prefix.pch
├── Send SMS.h
└── Info.plist
├── Address Book plugin
├── English.lproj
│ ├── InfoPlist.strings
│ └── Localizable.strings
├── French.lproj
│ └── Localizable.strings
├── German.lproj
│ └── Localizable.strings
├── SwissSMSABPlugin_Prefix.pch
├── Info.plist
├── SwissSMSABPlugin.h
└── SwissSMSABPlugin.m
├── SSSender.h
├── Scripts
├── signcode.sh
└── svnrevision.sh
├── .gitignore
├── SwissSMSUpdater.h
├── MyPerson.h
├── PhoneNumberFormatTest.h
├── FlagImageTransformer.h
├── NSDictionary+SMSSender.h
├── NSFileManager_SwissSMS.h
├── NSURL+SMSSender.h
├── SwissSMS_AppDelegate+Export.h
├── NSManagedObjectContext+Metadata.h
├── ABPerson_SwissSMS_AIM.h
├── version.plist
├── NSString_SwissSMS.h
├── SSVersionCheck.plist
├── NSWorkspace_SwissSMS.h
├── IMService_TigerCompat.h
├── SSRecipient.h
├── SwissSMS_AppDelegate+Toolbar.h
├── Tests-Info.plist
├── SSSender-Info.plist
├── NSString+SMSSender.h
├── Message.h
├── KeychainAccess.h
├── FlagImageTransformer.m
├── ABPerson_SwissSMS.h
├── NSFileManager_SwissSMS.m
├── SwissSMSUpdater.m
├── SwissSMS_AppDelegate+TokenField.h
├── NSDictionary+SMSSender.m
├── SSRecipient.m
├── NSURL+SMSSender.m
├── MyPerson.m
├── NSString_SwissSMS.m
├── README.md
├── PreferencesController.h
├── NSManagedObjectContext+Metadata.m
├── ABPerson_SwissSMS_AIM.m
├── NSWorkspace_SwissSMS.m
├── AbstractSender.h
├── HTMLForm.h
├── info.plist
├── SwissSMS_AppDelegate+TokenField.m
├── PhoneNumberFormatTest.m
├── KeychainAccess.m
├── SwissSMS_AppDelegate.h
├── _fixXQuery.h
├── ABPerson_SwissSMS.m
├── STHTTPRequest
└── STHTTPRequest.h
└── Message.m
/SwissSMS_Prefix.pch:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/English.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | /**/
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Versions/Current:
--------------------------------------------------------------------------------
1 | A
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Headers:
--------------------------------------------------------------------------------
1 | Versions/Current/Headers
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Sparkle:
--------------------------------------------------------------------------------
1 | Versions/Current/Sparkle
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Resources:
--------------------------------------------------------------------------------
1 | Versions/Current/Resources
--------------------------------------------------------------------------------
/Resources/Flag.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nst/SwissSMS/master/Resources/Flag.png
--------------------------------------------------------------------------------
/Plugins/ETHCH/ETH.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nst/SwissSMS/master/Plugins/ETHCH/ETH.png
--------------------------------------------------------------------------------
/Resources/Delete.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nst/SwissSMS/master/Resources/Delete.png
--------------------------------------------------------------------------------
/Resources/Flagged.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nst/SwissSMS/master/Resources/Flagged.png
--------------------------------------------------------------------------------
/Resources/Inspect.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nst/SwissSMS/master/Resources/Inspect.png
--------------------------------------------------------------------------------
/Resources/general.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nst/SwissSMS/master/Resources/general.png
--------------------------------------------------------------------------------
/Resources/network.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nst/SwissSMS/master/Resources/network.png
--------------------------------------------------------------------------------
/Resources/person.tiff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nst/SwissSMS/master/Resources/person.tiff
--------------------------------------------------------------------------------
/Resources/update.tiff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nst/SwissSMS/master/Resources/update.tiff
--------------------------------------------------------------------------------
/Plugins/MjoyINT/Mjoy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nst/SwissSMS/master/Plugins/MjoyINT/Mjoy.png
--------------------------------------------------------------------------------
/Resources/NewMessage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nst/SwissSMS/master/Resources/NewMessage.png
--------------------------------------------------------------------------------
/Resources/SwissSMS.icns:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nst/SwissSMS/master/Resources/SwissSMS.icns
--------------------------------------------------------------------------------
/Plugins/YalloCH/Yallo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nst/SwissSMS/master/Plugins/YalloCH/Yallo.png
--------------------------------------------------------------------------------
/Plugins/YalloCH/YalloCH.m:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nst/SwissSMS/master/Plugins/YalloCH/YalloCH.m
--------------------------------------------------------------------------------
/Resources/AddressBook.tiff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nst/SwissSMS/master/Resources/AddressBook.tiff
--------------------------------------------------------------------------------
/Plugins/OrangeCH/Orange.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nst/SwissSMS/master/Plugins/OrangeCH/Orange.png
--------------------------------------------------------------------------------
/Plugins/SunriseCH/Sunrise.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nst/SwissSMS/master/Plugins/SunriseCH/Sunrise.png
--------------------------------------------------------------------------------
/Plugins/hispeedCH/Hispeed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nst/SwissSMS/master/Plugins/hispeedCH/Hispeed.png
--------------------------------------------------------------------------------
/Resources/FlaggedHeader.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nst/SwissSMS/master/Resources/FlaggedHeader.png
--------------------------------------------------------------------------------
/Resources/SwissSMSLarge.tiff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nst/SwissSMS/master/Resources/SwissSMSLarge.tiff
--------------------------------------------------------------------------------
/Resources/appDefaults.plist:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nst/SwissSMS/master/Resources/appDefaults.plist
--------------------------------------------------------------------------------
/English.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nst/SwissSMS/master/English.lproj/InfoPlist.strings
--------------------------------------------------------------------------------
/German.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nst/SwissSMS/master/German.lproj/InfoPlist.strings
--------------------------------------------------------------------------------
/PluginTemplate/MyServiceCH.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nst/SwissSMS/master/PluginTemplate/MyServiceCH.png
--------------------------------------------------------------------------------
/Plugins/PostMailCH/PostMail.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nst/SwissSMS/master/Plugins/PostMailCH/PostMail.png
--------------------------------------------------------------------------------
/Plugins/PostMailCH/PostMailCH.h:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nst/SwissSMS/master/Plugins/PostMailCH/PostMailCH.h
--------------------------------------------------------------------------------
/Plugins/PostMailCH/PostMailCH.m:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nst/SwissSMS/master/Plugins/PostMailCH/PostMailCH.m
--------------------------------------------------------------------------------
/Plugins/RomandieCH/Romandie.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nst/SwissSMS/master/Plugins/RomandieCH/Romandie.png
--------------------------------------------------------------------------------
/Resources/SwissSMSDocument.icns:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nst/SwissSMS/master/Resources/SwissSMSDocument.icns
--------------------------------------------------------------------------------
/swiss_sms_screenshot_small.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nst/SwissSMS/master/swiss_sms_screenshot_small.png
--------------------------------------------------------------------------------
/Plugins/CitycableCH/Citycable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nst/SwissSMS/master/Plugins/CitycableCH/Citycable.png
--------------------------------------------------------------------------------
/Plugins/NetAppelINT/NetAppel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nst/SwissSMS/master/Plugins/NetAppelINT/NetAppel.png
--------------------------------------------------------------------------------
/Plugins/CoopMobileCH/Coop Mobile.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nst/SwissSMS/master/Plugins/CoopMobileCH/Coop Mobile.png
--------------------------------------------------------------------------------
/Plugins/CoopMobileCH/CoopMobileCH.h:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nst/SwissSMS/master/Plugins/CoopMobileCH/CoopMobileCH.h
--------------------------------------------------------------------------------
/SwissSMS_DataModel.xcdatamodel/elements:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nst/SwissSMS/master/SwissSMS_DataModel.xcdatamodel/elements
--------------------------------------------------------------------------------
/SwissSMS_DataModel.xcdatamodel/layout:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nst/SwissSMS/master/SwissSMS_DataModel.xcdatamodel/layout
--------------------------------------------------------------------------------
/English.lproj/MainMenu.nib/keyedobjects.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nst/SwissSMS/master/English.lproj/MainMenu.nib/keyedobjects.nib
--------------------------------------------------------------------------------
/French.lproj/MainMenu.nib/keyedobjects.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nst/SwissSMS/master/French.lproj/MainMenu.nib/keyedobjects.nib
--------------------------------------------------------------------------------
/German.lproj/MainMenu.nib/keyedobjects.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nst/SwissSMS/master/German.lproj/MainMenu.nib/keyedobjects.nib
--------------------------------------------------------------------------------
/MDImporter/English.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nst/SwissSMS/master/MDImporter/English.lproj/InfoPlist.strings
--------------------------------------------------------------------------------
/English.lproj/Preferences.nib/keyedobjects.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nst/SwissSMS/master/English.lproj/Preferences.nib/keyedobjects.nib
--------------------------------------------------------------------------------
/French.lproj/Preferences.nib/keyedobjects.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nst/SwissSMS/master/French.lproj/Preferences.nib/keyedobjects.nib
--------------------------------------------------------------------------------
/German.lproj/Preferences.nib/keyedobjects.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nst/SwissSMS/master/German.lproj/Preferences.nib/keyedobjects.nib
--------------------------------------------------------------------------------
/Resources/SwissSMS Help/art/iconhelpcenter.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nst/SwissSMS/master/Resources/SwissSMS Help/art/iconhelpcenter.png
--------------------------------------------------------------------------------
/Automator action/English.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nst/SwissSMS/master/Automator action/English.lproj/InfoPlist.strings
--------------------------------------------------------------------------------
/Automator action/French.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nst/SwissSMS/master/Automator action/French.lproj/InfoPlist.strings
--------------------------------------------------------------------------------
/Automator action/German.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nst/SwissSMS/master/Automator action/German.lproj/InfoPlist.strings
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Versions/A/Resources/fr_CA.lproj:
--------------------------------------------------------------------------------
1 | /Users/andym/Development/Build Products/Release/Sparkle.framework/Resources/fr.lproj
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Versions/A/Sparkle:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nst/SwissSMS/master/Frameworks/Sparkle.framework/Versions/A/Sparkle
--------------------------------------------------------------------------------
/Plugins/SwisscomXtraZoneCH/Swisscom Xtra-Zone.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nst/SwissSMS/master/Plugins/SwisscomXtraZoneCH/Swisscom Xtra-Zone.png
--------------------------------------------------------------------------------
/Resources/SwissSMS Help/SwissSMS Help.helpindex:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nst/SwissSMS/master/Resources/SwissSMS Help/SwissSMS Help.helpindex
--------------------------------------------------------------------------------
/Address Book plugin/English.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nst/SwissSMS/master/Address Book plugin/English.lproj/InfoPlist.strings
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Versions/A/Resources/fr.lproj/fr.lproj:
--------------------------------------------------------------------------------
1 | /Users/andym/Development/Build Products/Release/Sparkle.framework/Resources/fr.lproj
--------------------------------------------------------------------------------
/Address Book plugin/English.lproj/Localizable.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nst/SwissSMS/master/Address Book plugin/English.lproj/Localizable.strings
--------------------------------------------------------------------------------
/Address Book plugin/French.lproj/Localizable.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nst/SwissSMS/master/Address Book plugin/French.lproj/Localizable.strings
--------------------------------------------------------------------------------
/Address Book plugin/German.lproj/Localizable.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nst/SwissSMS/master/Address Book plugin/German.lproj/Localizable.strings
--------------------------------------------------------------------------------
/Automator action/English.lproj/main.nib/keyedobjects.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nst/SwissSMS/master/Automator action/English.lproj/main.nib/keyedobjects.nib
--------------------------------------------------------------------------------
/Automator action/French.lproj/main.nib/keyedobjects.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nst/SwissSMS/master/Automator action/French.lproj/main.nib/keyedobjects.nib
--------------------------------------------------------------------------------
/Automator action/German.lproj/main.nib/keyedobjects.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nst/SwissSMS/master/Automator action/German.lproj/main.nib/keyedobjects.nib
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Versions/A/Resources/relaunch:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nst/SwissSMS/master/Frameworks/Sparkle.framework/Versions/A/Resources/relaunch
--------------------------------------------------------------------------------
/Resources/Credits.html:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/SSSender.h:
--------------------------------------------------------------------------------
1 | #import
2 | #import
3 | #import
4 | //#import
5 |
--------------------------------------------------------------------------------
/Scripts/signcode.sh:
--------------------------------------------------------------------------------
1 |
2 | if [ $ACTION == "build" ] && [ $BUILD_STYLE == "Release" ]; then
3 | codesign -s SwissSMS --force "$BUILT_PRODUCTS_DIR/$FULL_PRODUCT_NAME"
4 | exit $?
5 | fi
6 |
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Versions/A/Resources/de.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nst/SwissSMS/master/Frameworks/Sparkle.framework/Versions/A/Resources/de.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Versions/A/Resources/en.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nst/SwissSMS/master/Frameworks/Sparkle.framework/Versions/A/Resources/en.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Versions/A/Resources/es.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nst/SwissSMS/master/Frameworks/Sparkle.framework/Versions/A/Resources/es.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Versions/A/Resources/fr.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nst/SwissSMS/master/Frameworks/Sparkle.framework/Versions/A/Resources/fr.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Versions/A/Resources/it.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nst/SwissSMS/master/Frameworks/Sparkle.framework/Versions/A/Resources/it.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Versions/A/Resources/nl.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nst/SwissSMS/master/Frameworks/Sparkle.framework/Versions/A/Resources/nl.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Versions/A/Resources/ru.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nst/SwissSMS/master/Frameworks/Sparkle.framework/Versions/A/Resources/ru.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Versions/A/Resources/sv.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nst/SwissSMS/master/Frameworks/Sparkle.framework/Versions/A/Resources/sv.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/PluginTemplate/MyServiceCH.h:
--------------------------------------------------------------------------------
1 | #import
2 | #import
3 | #import
4 |
5 | @interface MyServiceCH : AbstractSender {
6 | }
7 |
8 | @end
9 |
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Versions/A/Resources/SUStatus.nib/keyedobjects.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nst/SwissSMS/master/Frameworks/Sparkle.framework/Versions/A/Resources/SUStatus.nib/keyedobjects.nib
--------------------------------------------------------------------------------
/Automator action/Send SMS_Prefix.pch:
--------------------------------------------------------------------------------
1 | //
2 | // Prefix header for all source files of the 'Send SMS' target in the 'Send SMS' project.
3 | //
4 |
5 | #ifdef __OBJC__
6 | #import
7 | #endif
8 |
--------------------------------------------------------------------------------
/PluginTemplate/SwissSMSPlugin_Prefix.pch:
--------------------------------------------------------------------------------
1 | //
2 | // Prefix header for all source files of the 'SwissSMSPlugin' target in the 'SwissSMSPlugin' project.
3 | //
4 |
5 | #ifdef __OBJC__
6 | #import
7 | #endif
8 |
--------------------------------------------------------------------------------
/Plugins/NetAppelINT/NetAppelINT.h:
--------------------------------------------------------------------------------
1 | #import
2 | #import "AbstractSender.h"
3 |
4 | @interface NetAppelINT : AbstractSender {
5 | NSString *cachedLogin;
6 | NSString *cachedPassword;
7 | }
8 |
9 | @end
10 |
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdateAlert.nib/keyedobjects.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nst/SwissSMS/master/Frameworks/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdateAlert.nib/keyedobjects.nib
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib/keyedobjects.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nst/SwissSMS/master/Frameworks/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib/keyedobjects.nib
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdateAlert.nib/keyedobjects.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nst/SwissSMS/master/Frameworks/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdateAlert.nib/keyedobjects.nib
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdateAlert.nib/keyedobjects.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nst/SwissSMS/master/Frameworks/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdateAlert.nib/keyedobjects.nib
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdateAlert.nib/keyedobjects.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nst/SwissSMS/master/Frameworks/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdateAlert.nib/keyedobjects.nib
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib/keyedobjects.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nst/SwissSMS/master/Frameworks/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib/keyedobjects.nib
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdateAlert.nib/keyedobjects.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nst/SwissSMS/master/Frameworks/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdateAlert.nib/keyedobjects.nib
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdateAlert.nib/keyedobjects.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nst/SwissSMS/master/Frameworks/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdateAlert.nib/keyedobjects.nib
--------------------------------------------------------------------------------
/Plugins/ETHCH/ETHCH.h:
--------------------------------------------------------------------------------
1 | #import
2 | #import "AbstractSender.h"
3 |
4 | @interface ETHCH : AbstractSender {
5 | NSString *cachedLogin;
6 | NSString *cachedPassword;
7 | NSString *session;
8 | }
9 |
10 | @end
11 |
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Versions/A/Resources/de.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nst/SwissSMS/master/Frameworks/Sparkle.framework/Versions/A/Resources/de.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nst/SwissSMS/master/Frameworks/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nst/SwissSMS/master/Frameworks/Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nst/SwissSMS/master/Frameworks/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Versions/A/Resources/es.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nst/SwissSMS/master/Frameworks/Sparkle.framework/Versions/A/Resources/es.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nst/SwissSMS/master/Frameworks/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Versions/A/Resources/fr.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nst/SwissSMS/master/Frameworks/Sparkle.framework/Versions/A/Resources/fr.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nst/SwissSMS/master/Frameworks/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Versions/A/Resources/it.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nst/SwissSMS/master/Frameworks/Sparkle.framework/Versions/A/Resources/it.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nst/SwissSMS/master/Frameworks/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Versions/A/Resources/nl.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nst/SwissSMS/master/Frameworks/Sparkle.framework/Versions/A/Resources/nl.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nst/SwissSMS/master/Frameworks/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Versions/A/Resources/ru.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nst/SwissSMS/master/Frameworks/Sparkle.framework/Versions/A/Resources/ru.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nst/SwissSMS/master/Frameworks/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Versions/A/Resources/sv.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nst/SwissSMS/master/Frameworks/Sparkle.framework/Versions/A/Resources/sv.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nst/SwissSMS/master/Frameworks/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib
--------------------------------------------------------------------------------
/Plugins/CitycableCH/CitycableCH.h:
--------------------------------------------------------------------------------
1 | #import
2 | #import "AbstractSender.h"
3 |
4 | @interface CitycableCH : AbstractSender {
5 | NSString *cachedLogin;
6 | NSString *cachedPassword;
7 | NSString *session;
8 | }
9 |
10 | @end
11 |
--------------------------------------------------------------------------------
/Address Book plugin/SwissSMSABPlugin_Prefix.pch:
--------------------------------------------------------------------------------
1 | //
2 | // Prefix header for all source files of the 'SwissSMSABPlugin' target in the 'SwissSMSABPlugin' project
3 | //
4 |
5 | #ifdef __OBJC__
6 | #import
7 | #import
8 | #endif
9 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Xcode
2 | build/*
3 | *.pbxuser
4 | !default.pbxuser
5 | *.mode1v3
6 | !default.mode1v3
7 | *.mode2v3
8 | !default.mode2v3
9 | *.perspectivev3
10 | !default.perspectivev3
11 | *.xcworkspace
12 | !default.xcworkspace
13 | xcuserdata
14 | profile
15 | *.moved-aside
16 |
--------------------------------------------------------------------------------
/Plugins/MjoyINT/MjoyINT.h:
--------------------------------------------------------------------------------
1 | #import
2 | #import "AbstractSender.h"
3 |
4 | @interface MjoyINT : AbstractSender {
5 | int sentMessages;
6 | NSString *cachedLogin;
7 | NSString *cachedPassword;
8 | NSHTTPCookieAcceptPolicy userCookiePolicy;
9 | NSString *sid;
10 | }
11 |
12 | @end
13 |
--------------------------------------------------------------------------------
/SwissSMSUpdater.h:
--------------------------------------------------------------------------------
1 | //
2 | // SwissSMSUpdater.h
3 | // SwissSMS
4 | //
5 | // Created by Cédric Luthi on 4/6/08.
6 | // Copyright 2008 Cédric Luthi. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 |
12 | @interface SwissSMSUpdater : SUUpdater {
13 |
14 | }
15 |
16 | @end
17 |
--------------------------------------------------------------------------------
/MyPerson.h:
--------------------------------------------------------------------------------
1 | //
2 | // MyPerson.h
3 | // BindingCategory
4 | //
5 | // Created by Nicolas Seriot on 07.05.07.
6 | // Copyright 2007 Nicolas Seriot. All rights reserved.
7 | //
8 |
9 | #import
10 | #import
11 |
12 | @interface ABPerson (SwissSMS) {
13 |
14 | }
15 |
16 | @end
17 |
--------------------------------------------------------------------------------
/Plugins/hispeedCH/HispeedCH.h:
--------------------------------------------------------------------------------
1 | //
2 | // HispeedCH.h
3 | // SwissSMS
4 | //
5 | // Created by Cédric Luthi on 20.10.07.
6 | // Copyright 2007 Cédric Luthi. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "AbstractSender.h"
11 |
12 |
13 | @interface HispeedCH : AbstractSender {
14 |
15 | }
16 |
17 | @end
18 |
--------------------------------------------------------------------------------
/PhoneNumberFormatTest.h:
--------------------------------------------------------------------------------
1 | //
2 | // PhoneNumberFormatTest.h
3 | // SwissSMS
4 | //
5 | // Created by Nicolas Seriot on 18.11.07.
6 | // Copyright 2007 __MyCompanyName__. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 |
12 | @interface PhoneNumberFormatTest : SenTestCase {
13 |
14 | }
15 |
16 | @end
17 |
--------------------------------------------------------------------------------
/FlagImageTransformer.h:
--------------------------------------------------------------------------------
1 | //
2 | // FlagImageTransformer.h
3 | // SwissSMS
4 | //
5 | // Created by Nicolas Seriot on 25.05.07.
6 | // Copyright 2007 Sen:te SA. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 |
12 | @interface FlagImageTransformer : NSValueTransformer {
13 | NSImage *flaggedImage;
14 | }
15 |
16 | @end
17 |
--------------------------------------------------------------------------------
/Plugins/YalloCH/YalloCH.h:
--------------------------------------------------------------------------------
1 | //
2 | // YalloCH.h
3 | // SwissSMS
4 | //
5 | // Created by Andre Anjos, 11.08.2008
6 | // Copyright 2008 Andre Anjos. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "AbstractSender.h"
11 |
12 |
13 | @interface YalloCH : AbstractSender {
14 | int mAvailableSMS;
15 | }
16 |
17 | @end
18 |
--------------------------------------------------------------------------------
/Plugins/RomandieCH/RomandieCH.h:
--------------------------------------------------------------------------------
1 | //
2 | // RomandieCH.h
3 | // SMSRomandie
4 | //
5 | // Created by Nicolas Seriot on 08.11.06.
6 | // Copyright 2006 Nicolas Seriot. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "AbstractSender.h"
11 | #import "HTMLForm.h"
12 |
13 | @interface RomandieCH : AbstractSender {
14 |
15 | }
16 |
17 | @end
18 |
--------------------------------------------------------------------------------
/NSDictionary+SMSSender.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSDictionary+SMSSender.h
3 | // SMSRomandie
4 | //
5 | // Created by Nicolas Seriot on 24.04.07.
6 | // Copyright 2007 Nicolas Seriot. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 |
12 | @interface NSDictionary (SMSSender)
13 |
14 | - (NSData *)formDataWithEncoding:(NSStringEncoding)encoding;
15 |
16 | @end
17 |
--------------------------------------------------------------------------------
/Plugins/SwisscomXtraZoneCH/SwisscomXtraZoneCH.h:
--------------------------------------------------------------------------------
1 | //
2 | // SMSSwisscomSender.h
3 | // SMSSwisscomSender
4 | //
5 | // Created by Nicolas Seriot on 27.05.07.
6 | // Copyright 2007 Nicolas Seriot. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "AbstractSender.h"
11 |
12 |
13 | @interface SwisscomXtraZoneCH : AbstractSender {
14 | }
15 |
16 | @end
17 |
--------------------------------------------------------------------------------
/NSFileManager_SwissSMS.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSFileManager_SwissSMS.h
3 | // SwissSMS
4 | //
5 | // Created by Nicolas Seriot on 25.11.07.
6 | // Copyright 2007 __MyCompanyName__. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 |
12 | @interface NSFileManager (SwissSMS)
13 |
14 | - (BOOL)copyResource:(NSString *)sourcePath toChosenDestination:(NSString *)defaultDir;
15 |
16 | @end
17 |
--------------------------------------------------------------------------------
/NSURL+SMSSender.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSURL+SMSSender.h
3 | // SwissSMS
4 | //
5 | // Created by Nicolas Seriot on 30.03.09.
6 | // Copyright 2009 Sen:te. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 |
12 | @interface NSURL (SMSSender)
13 |
14 | - (NSData *)dataWithUserAgent:(NSString *)userAgent;
15 | - (NSString *)stringWithUserAgent:(NSString *)userAgent;
16 |
17 | @end
18 |
--------------------------------------------------------------------------------
/SwissSMS_AppDelegate+Export.h:
--------------------------------------------------------------------------------
1 | //
2 | // SwissSMS_AppDelegate+Export.h
3 | // SwissSMS
4 | //
5 | // Created by Nicolas Seriot on 15.10.07.
6 | // Copyright 2007 __MyCompanyName__. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "SwissSMS_AppDelegate.h"
11 |
12 | @interface SwissSMS_AppDelegate (Export)
13 |
14 | - (IBAction)exportToBluePhoneElite:sender;
15 | - (IBAction)exportToCSV:sender;
16 |
17 | @end
18 |
--------------------------------------------------------------------------------
/NSManagedObjectContext+Metadata.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSManagedObjectContext+Metadata.h
3 | // SwissSMS
4 | //
5 | // Created by Nicolas Seriot on 20.06.08.
6 | // Copyright 2008 Sen:te. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 |
12 | @interface NSManagedObjectContext (Metadata)
13 |
14 | - (BOOL)saveWithMetadata:(NSError **)error;
15 | - (BOOL)saveWithMetadata:(NSError **)error allItems:(BOOL)allItems;
16 |
17 | @end
18 |
--------------------------------------------------------------------------------
/ABPerson_SwissSMS_AIM.h:
--------------------------------------------------------------------------------
1 | //
2 | // ABPerson_SwissSMS.h
3 | // SwissSMS
4 | //
5 | // Created by Nicolas Seriot on 02.10.07.
6 | // Copyright 2007 Nicolas Seriot. All rights reserved.
7 | //
8 |
9 | #import
10 | #import
11 |
12 | @interface ABPerson (SwissSMS_AIM)
13 |
14 | - (NSNumber *)aimStatus;
15 | - (NSString *)aimScreenName;
16 | - (NSImage *)imageDataForCurrentIMStatus;
17 |
18 | @end
19 |
20 |
21 |
--------------------------------------------------------------------------------
/version.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | BuildVersion
6 | 18
7 | CFBundleVersion
8 | 1.0
9 | ProjectName
10 | NibPBTemplates
11 | SourceVersion
12 | 1200000
13 |
14 |
15 |
--------------------------------------------------------------------------------
/Plugins/SunriseCH/SunriseCH.h:
--------------------------------------------------------------------------------
1 | //
2 | // SMSSunriseSender.h
3 | // SwissSMS
4 | //
5 | // Created by Christian Rueegg on 30.04.07.
6 | // Copyright 2007 Christian Rueegg. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "AbstractSender.h"
11 |
12 |
13 | @interface SunriseCH : AbstractSender {
14 | int mAvailableSMS;
15 | NSString *mCookie;
16 | }
17 |
18 | + (NSString *)cookieFromHTTPResponse:(NSHTTPURLResponse *)response;
19 |
20 | @end
21 |
--------------------------------------------------------------------------------
/Automator action/Send SMS.h:
--------------------------------------------------------------------------------
1 | //
2 | // Send SMS.h
3 | // Send SMS
4 | //
5 | // Created by Administrator on 19.09.07.
6 | // Copyright 2007 Cédric Luthi. All rights reserved.
7 | //
8 |
9 | #import
10 | #import
11 |
12 | @interface Send_SMS : AMBundleAction
13 | {
14 | NSString *swisssms_executable_path;
15 | }
16 |
17 | - (id)runWithInput:(id)input fromAction:(AMAction *)anAction error:(NSDictionary **)errorInfo;
18 |
19 | @end
20 |
--------------------------------------------------------------------------------
/NSString_SwissSMS.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSString_SwissSMS.h
3 | // SwissSMS
4 | //
5 | // Created by Nicolas Seriot on 09.04.07.
6 | // Copyright 2007 Nicolas Seriot. All rights reserved.
7 | //
8 |
9 | #import
10 | #import
11 |
12 |
13 | @interface NSString (SwissSMS)
14 |
15 | + (NSString *) bluePhoneEliteExportFilePath;
16 | + (NSString *) uuid;
17 |
18 | //- (NSString *)removeCharsInSet:(NSCharacterSet *)set;
19 |
20 | @end
21 |
--------------------------------------------------------------------------------
/SSVersionCheck.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | LatestVersion
6 | 1.9.0
7 | PageURL
8 | http://code.google.com/p/swisssms/
9 | DownloadURL
10 | http://swisssms.googlecode.com/files/SwissSMS_1_9_0.app.zip
11 |
12 |
13 |
--------------------------------------------------------------------------------
/NSWorkspace_SwissSMS.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSWorkspace_SwissSMS.h
3 | // SwissSMS
4 | //
5 | // Created by Nicolas Seriot on 03.05.07.
6 | // Copyright 2007 Nicolas Seriot. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 |
12 | @interface NSWorkspace (SwissSMS)
13 |
14 | - (OSStatus) quitApplicationWithBundleID:(NSString*)bundleID;
15 | - (BOOL)appIsRunning:(NSString *)appName;
16 |
17 | - (void)openIMClientForScreenName:(NSString *)screenName message:(NSString *)message;
18 |
19 | @end
20 |
--------------------------------------------------------------------------------
/IMService_TigerCompat.h:
--------------------------------------------------------------------------------
1 | /*
2 | * IMService_TigerCompat.h
3 | * SwissSMS
4 | *
5 | * Created by Cédric Luthi on 22.11.07.
6 | * Copyright 2007 Cédric Luthi. All rights reserved.
7 | *
8 | */
9 |
10 | #import
11 |
12 | // Silence warning: ‘IMService’ may not respond to ‘+imageNameForStatus:’ when compiling on Tiger with MacOSX10.4u SDK
13 | @interface IMService (TigerCompat)
14 |
15 | #if (MAC_OS_X_VERSION_MAX_ALLOWED <= MAC_OS_X_VERSION_10_4)
16 | + (NSString *)imageNameForStatus:(IMPersonStatus)status;
17 | #endif
18 |
19 | @end
20 |
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdateAlert.nib/info.nib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IBFramework Version
6 | 629
7 | IBOldestOS
8 | 5
9 | IBOpenObjects
10 |
11 | IBSystem Version
12 | 9E17
13 | targetFramework
14 | IBCocoaFramework
15 |
16 |
17 |
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib/info.nib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IBFramework Version
6 | 629
7 | IBOldestOS
8 | 5
9 | IBOpenObjects
10 |
11 | IBSystem Version
12 | 9E17
13 | targetFramework
14 | IBCocoaFramework
15 |
16 |
17 |
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Versions/A/Resources/fr.lproj/SUAutomaticUpdateAlert.nib/info.nib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IBFramework Version
6 | 629
7 | IBOldestOS
8 | 5
9 | IBOpenObjects
10 |
11 | IBSystem Version
12 | 9D34
13 | targetFramework
14 | IBCocoaFramework
15 |
16 |
17 |
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdatePermissionPrompt.nib/info.nib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IBFramework Version
6 | 629
7 | IBOldestOS
8 | 5
9 | IBOpenObjects
10 |
11 | IBSystem Version
12 | 9E17
13 | targetFramework
14 | IBCocoaFramework
15 |
16 |
17 |
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdatePermissionPrompt.nib/info.nib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IBFramework Version
6 | 629
7 | IBOldestOS
8 | 5
9 | IBOpenObjects
10 |
11 | IBSystem Version
12 | 9E17
13 | targetFramework
14 | IBCocoaFramework
15 |
16 |
17 |
--------------------------------------------------------------------------------
/Plugins/OrangeCH/OrangeCH.h:
--------------------------------------------------------------------------------
1 | #import
2 | #import "AbstractSender.h"
3 |
4 | @interface OrangeCH : AbstractSender {
5 | NSUInteger nbSentMessages;
6 | NSString *cachedLogin;
7 | NSString *cachedPassword;
8 | NSString *token;
9 | NSHTTPCookieAcceptPolicy userCookiePolicy;
10 |
11 | NSString *sunQueryParamsString;
12 | }
13 |
14 | @property (nonatomic, retain) NSString *cachedLogin;
15 | @property (nonatomic, retain) NSString *cachedPassword;
16 | @property (nonatomic, retain) NSString *token;
17 | @property (nonatomic, retain) NSString *sunQueryParamsString;
18 |
19 | @end
20 |
--------------------------------------------------------------------------------
/SSRecipient.h:
--------------------------------------------------------------------------------
1 | //
2 | // SSRecipient.h
3 | // SwissSMS
4 | //
5 | // Created by Nicolas Seriot on 12.10.07.
6 | // Copyright 2007 __MyCompanyName__. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "AbstractSender.h"
11 |
12 | @protocol SSRecipientProtocol
13 | -(NSData *)imageData;
14 | -(NSString *)phone;
15 | -(NSString *)name;
16 | @end
17 |
18 | @interface SSRecipient : NSObject {
19 | }
20 |
21 | +(id ) findRecipientFromObject:(id)o sender:(AbstractSender *)sender;
22 | +(id ) findRecipientFromObject:(id)o;
23 |
24 | @end
25 |
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Versions/A/Resources/nl.lproj/SUAutomaticUpdateAlert.nib/info.nib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IBFramework Version
6 | 629
7 | IBOldestOS
8 | 5
9 | IBOpenObjects
10 |
11 | 6
12 |
13 | IBSystem Version
14 | 9D34
15 | targetFramework
16 | IBCocoaFramework
17 |
18 |
19 |
--------------------------------------------------------------------------------
/SwissSMS_AppDelegate+Toolbar.h:
--------------------------------------------------------------------------------
1 | //
2 | // SwissSMS_AppDelegate+Toolbar.h
3 | // SwissSMS
4 | //
5 | // Created by Nicolas Seriot on 26.05.07.
6 | // Copyright 2007 Nicolas Seriot. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "SwissSMS_AppDelegate.h"
11 |
12 | @interface SwissSMS_AppDelegate (Toolbar)
13 |
14 | - (NSToolbarItem *)toolbar:(NSToolbar *)toolbar
15 | itemForItemIdentifier:(NSString *)itemIdentifier
16 | willBeInsertedIntoToolbar:(BOOL)flag;
17 | - (NSArray *)toolbarAllowedItemIdentifiers:(NSToolbar*)toolbar;
18 | - (NSArray *)toolbarDefaultItemIdentifiers:(NSToolbar*)toolbar;
19 |
20 | @end
21 |
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Versions/A/Headers/Sparkle.h:
--------------------------------------------------------------------------------
1 | //
2 | // Sparkle.h
3 | // Sparkle
4 | //
5 | // Created by Andy Matuschak on 3/16/06. (Modified by CDHW on 23/12/07)
6 | // Copyright 2006 Andy Matuschak. All rights reserved.
7 | //
8 |
9 | #ifndef SPARKLE_H
10 | #define SPARKLE_H
11 |
12 | // This list should include the shared headers. It doesn't matter if some of them aren't shared (unless
13 | // there are name-space collisions) so we can list all of them to start with:
14 |
15 | #import
16 |
17 | #import
18 | #import
19 | #import
20 |
21 | #endif
22 |
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdatePermissionPrompt.nib/info.nib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IBFramework Version
6 | 670
7 | IBLastKnownRelativeProjectPath
8 | ../Sparkle.xcodeproj
9 | IBOldestOS
10 | 5
11 | IBOpenObjects
12 |
13 | IBSystem Version
14 | 9E17
15 | targetFramework
16 | IBCocoaFramework
17 |
18 |
19 |
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Versions/A/Resources/SUStatus.nib/info.nib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IBFramework Version
6 | 670
7 | IBLastKnownRelativeProjectPath
8 | Sparkle.xcodeproj
9 | IBOldestOS
10 | 5
11 | IBOpenObjects
12 |
13 | 6
14 |
15 | IBSystem Version
16 | 10A96
17 | targetFramework
18 | IBCocoaFramework
19 |
20 |
21 |
--------------------------------------------------------------------------------
/PluginTemplate/MyServiceCH.m:
--------------------------------------------------------------------------------
1 | #import "MyServiceCH.h"
2 |
3 | @implementation MyServiceCH
4 |
5 | - (SecProtocolType)serviceProtocol {
6 | return kSecProtocolTypeHTTPS;
7 | }
8 |
9 | - (NSString *)serviceServerName {
10 | return @"www.myservice.ch";
11 | }
12 |
13 | - (SwissSMSSendingStatus)login:(NSString *)login password:(NSString *)password {
14 | return SS_LOGIN_ERROR;
15 | }
16 |
17 | - (SwissSMSSendingStatus)sendOneMessage:(NSString *)message toNumber:(NSString *)number {
18 | return SS_SENDING_ERROR;
19 | }
20 |
21 | // returns a valid phone number for the service, else return nil
22 | - (NSString *)normalizePhoneNumber:(NSString *)rawString {
23 | return nil;
24 | }
25 |
26 | @end
27 |
--------------------------------------------------------------------------------
/Tests-Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | English
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleIdentifier
10 | ch.seriot.SwissSMS.Tests
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundlePackageType
14 | BNDL
15 | CFBundleSignature
16 | ????
17 | CFBundleVersion
18 | 1.0
19 |
20 |
21 |
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdateAlert.nib/info.nib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IBFramework Version
6 | 667
7 | IBLastKnownRelativeProjectPath
8 | ../Sparkle.xcodeproj
9 | IBOldestOS
10 | 5
11 | IBOpenObjects
12 |
13 | 6
14 |
15 | IBSystem Version
16 | 9D34
17 | targetFramework
18 | IBCocoaFramework
19 |
20 |
21 |
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdateAlert.nib/info.nib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IBFramework Version
6 | 667
7 | IBLastKnownRelativeProjectPath
8 | ../Sparkle.xcodeproj
9 | IBOldestOS
10 | 5
11 | IBOpenObjects
12 |
13 | 6
14 |
15 | IBSystem Version
16 | 9D34
17 | targetFramework
18 | IBCocoaFramework
19 |
20 |
21 |
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdateAlert.nib/info.nib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IBFramework Version
6 | 667
7 | IBLastKnownRelativeProjectPath
8 | ../Sparkle.xcodeproj
9 | IBOldestOS
10 | 5
11 | IBOpenObjects
12 |
13 | 6
14 |
15 | IBSystem Version
16 | 9D34
17 | targetFramework
18 | IBCocoaFramework
19 |
20 |
21 |
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdateAlert.nib/info.nib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IBFramework Version
6 | 670
7 | IBLastKnownRelativeProjectPath
8 | ../Sparkle.xcodeproj
9 | IBOldestOS
10 | 5
11 | IBOpenObjects
12 |
13 | 6
14 |
15 | IBSystem Version
16 | 9E17
17 | targetFramework
18 | IBCocoaFramework
19 |
20 |
21 |
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib/info.nib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IBFramework Version
6 | 670
7 | IBLastKnownRelativeProjectPath
8 | ../Sparkle.xcodeproj
9 | IBOldestOS
10 | 5
11 | IBOpenObjects
12 |
13 | 18
14 |
15 | IBSystem Version
16 | 10A96
17 | targetFramework
18 | IBCocoaFramework
19 |
20 |
21 |
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdateAlert.nib/info.nib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IBDocumentLocation
6 | 69 14 356 240 0 0 1280 778
7 | IBFramework Version
8 | 489.0
9 | IBLastKnownRelativeProjectPath
10 | ../Sparkle.xcodeproj
11 | IBOldestOS
12 | 5
13 | IBSystem Version
14 | 9D34
15 | targetFramework
16 | IBCocoaFramework
17 |
18 |
19 |
--------------------------------------------------------------------------------
/SSSender-Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | English
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleIdentifier
10 | ch.seriot.SwissSMS.SSSender
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundlePackageType
14 | FMWK
15 | CFBundleSignature
16 | ????
17 | CFBundleVersion
18 | 1.0
19 |
20 |
21 |
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Versions/A/Resources/de.lproj/SUAutomaticUpdateAlert.nib/info.nib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IBFramework Version
6 | 667
7 | IBLastKnownRelativeProjectPath
8 | ../Sparkle.xcodeproj
9 | IBOldestOS
10 | 5
11 | IBOpenObjects
12 |
13 | 6
14 |
15 | IBSystem Version
16 | 9D34
17 | targetFramework
18 | IBCocoaFramework
19 |
20 |
21 |
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Versions/A/Resources/es.lproj/SUAutomaticUpdateAlert.nib/info.nib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IBFramework Version
6 | 667
7 | IBLastKnownRelativeProjectPath
8 | ../Sparkle.xcodeproj
9 | IBOldestOS
10 | 5
11 | IBOpenObjects
12 |
13 | 6
14 |
15 | IBSystem Version
16 | 9D34
17 | targetFramework
18 | IBCocoaFramework
19 |
20 |
21 |
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Versions/A/Resources/it.lproj/SUAutomaticUpdateAlert.nib/info.nib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IBFramework Version
6 | 667
7 | IBLastKnownRelativeProjectPath
8 | ../Sparkle.xcodeproj
9 | IBOldestOS
10 | 5
11 | IBOpenObjects
12 |
13 | 6
14 |
15 | IBSystem Version
16 | 9D34
17 | targetFramework
18 | IBCocoaFramework
19 |
20 |
21 |
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Versions/A/Resources/ru.lproj/SUAutomaticUpdateAlert.nib/info.nib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IBFramework Version
6 | 670
7 | IBLastKnownRelativeProjectPath
8 | ../Sparkle.xcodeproj
9 | IBOldestOS
10 | 5
11 | IBOpenObjects
12 |
13 | 6
14 |
15 | IBSystem Version
16 | 9E17
17 | targetFramework
18 | IBCocoaFramework
19 |
20 |
21 |
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Versions/A/Resources/sv.lproj/SUAutomaticUpdateAlert.nib/info.nib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IBFramework Version
6 | 670
7 | IBLastKnownRelativeProjectPath
8 | ../Sparkle.xcodeproj
9 | IBOldestOS
10 | 5
11 | IBOpenObjects
12 |
13 | 6
14 |
15 | IBSystem Version
16 | 10A96
17 | targetFramework
18 | IBCocoaFramework
19 |
20 |
21 |
--------------------------------------------------------------------------------
/NSString+SMSSender.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSString+SMSSender.h
3 | // SMSRomandie
4 | //
5 | // Created by Nicolas Seriot on 24.04.07.
6 | // Copyright 2007 Nicolas Seriot. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 |
12 | @interface NSString (SMSSender)
13 |
14 | - (NSString *) normalizedSwissGSMPhoneNumber ;
15 | //- (NSString *)normalizedFrenchNumber;
16 | - (NSString *)normalizedInternationalNumberWithZero; // 0033791234567
17 | - (NSString *)normalizedInternationalNumberWithPlus; // +33791234567
18 |
19 | - (NSString *)escapeWithEncoding:(NSStringEncoding)encoding;
20 | - (NSString *) stringByRemovingCharactersFromSet:(NSCharacterSet *) set;
21 |
22 | + (NSSet *) swissGSMPrefixes;
23 |
24 | @end
25 |
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdatePermissionPrompt.nib/info.nib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IBFramework Version
6 | 667
7 | IBLastKnownRelativeProjectPath
8 | ../Sparkle.xcodeproj
9 | IBOldestOS
10 | 5
11 | IBOpenObjects
12 |
13 | 6
14 |
15 | IBSystem Version
16 | 9D34
17 | targetFramework
18 | IBCocoaFramework
19 |
20 |
21 |
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib/info.nib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IBFramework Version
6 | 658
7 | IBLastKnownRelativeProjectPath
8 | ../Sparkle.xcodeproj
9 | IBOldestOS
10 | 5
11 | IBOpenObjects
12 |
13 | 6
14 |
15 | IBSystem Version
16 | 9C7010
17 | targetFramework
18 | IBCocoaFramework
19 |
20 |
21 |
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdatePermissionPrompt.nib/info.nib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IBFramework Version
6 | 667
7 | IBLastKnownRelativeProjectPath
8 | ../../Sparkle.xcodeproj
9 | IBOldestOS
10 | 5
11 | IBOpenObjects
12 |
13 | 6
14 |
15 | IBSystem Version
16 | 9D34
17 | targetFramework
18 | IBCocoaFramework
19 |
20 |
21 |
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdatePermissionPrompt.nib/info.nib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IBFramework Version
6 | 667
7 | IBLastKnownRelativeProjectPath
8 | ../Sparkle.xcodeproj
9 | IBOldestOS
10 | 5
11 | IBOpenObjects
12 |
13 | 5
14 |
15 | IBSystem Version
16 | 9D34
17 | targetFramework
18 | IBCocoaFramework
19 |
20 |
21 |
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdatePermissionPrompt.nib/info.nib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IBFramework Version
6 | 670
7 | IBLastKnownRelativeProjectPath
8 | ../Sparkle.xcodeproj
9 | IBOldestOS
10 | 5
11 | IBOpenObjects
12 |
13 | 6
14 |
15 | IBSystem Version
16 | 10A96
17 | targetFramework
18 | IBCocoaFramework
19 |
20 |
21 |
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nib/info.nib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IBFramework Version
6 | 670
7 | IBLastKnownRelativeProjectPath
8 | ../Sparkle.xcodeproj
9 | IBOldestOS
10 | 5
11 | IBOpenObjects
12 |
13 | 6
14 | 41
15 |
16 | IBSystem Version
17 | 10A96
18 | targetFramework
19 | IBCocoaFramework
20 |
21 |
22 |
--------------------------------------------------------------------------------
/Message.h:
--------------------------------------------------------------------------------
1 | //
2 | // Message.h
3 | // SwissSMS
4 | //
5 | // Created by Nicolas Seriot on 07.04.07.
6 | // Copyright 2007 Nicolas Seriot. All rights reserved.
7 | //
8 |
9 | #import
10 | #import
11 |
12 | @interface Message : NSManagedObject
13 | {
14 | }
15 |
16 | +(Message *)messageWithText:(NSString *)text name:(NSString *)name phone:(NSString *)phone context:(NSManagedObjectContext *)context;
17 |
18 | +(NSArray *)allObjectsInContext:(NSManagedObjectContext *)moc;
19 | +(unsigned)messagesCountInContext:(NSManagedObjectContext *)moc;
20 |
21 | -(NSDictionary *)bluePhoneEliteFormatAndRemove:(BOOL)remove;
22 | -(NSString *)csvLine;
23 | -(ABPerson *)guessedPerson;
24 |
25 | -(void)toggleFlag;
26 |
27 | @end
28 |
--------------------------------------------------------------------------------
/KeychainAccess.h:
--------------------------------------------------------------------------------
1 | //
2 | // KeychainAccess.h
3 | // SwissSMS
4 | //
5 | // Created by Nicolas Seriot on 05.11.07.
6 | // Copyright 2007 __MyCompanyName__. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | #include
12 |
13 | @interface KeychainAccess : NSObject {
14 |
15 | }
16 |
17 | + (NSString *)internetHTMLFormPasswordForServer:(NSString *)serverName protocol:(SecProtocolType)protocol keychainItem:(SecKeychainItemRef *)keychainItem notFound:(BOOL *)notFound;
18 | + (NSString *)loginForItem:(SecKeychainItemRef)keychainItem;
19 |
20 | + (void)addInternetHTMLFormPasswordForServer:(NSString *)serverName login:(NSString *)login password:(NSString *)password protocol:(SecProtocolType)protocol;
21 |
22 |
23 | @end
24 |
--------------------------------------------------------------------------------
/FlagImageTransformer.m:
--------------------------------------------------------------------------------
1 | //
2 | // FlagImageTransformer.m
3 | // SwissSMS
4 | //
5 | // Created by Nicolas Seriot on 25.05.07.
6 | // Copyright 2007 Sen:te SA. All rights reserved.
7 | //
8 |
9 | #import "FlagImageTransformer.h"
10 |
11 |
12 | @implementation FlagImageTransformer
13 |
14 | + (Class)transformedValueClass {
15 | return [NSImage class];
16 | }
17 |
18 | + (BOOL)allowsReverseTransformation {
19 | return NO;
20 | }
21 |
22 | -(id)init {
23 | [super init];
24 |
25 | flaggedImage = [NSImage imageNamed:@"Flagged.png"];
26 |
27 | return self;
28 | }
29 |
30 | -(void)dealloc {
31 | [flaggedImage release];
32 | [super dealloc];
33 | }
34 |
35 | - (id)transformedValue:(NSNumber *)value {
36 | return [value boolValue] ? flaggedImage : nil;
37 | }
38 |
39 | @end
40 |
--------------------------------------------------------------------------------
/ABPerson_SwissSMS.h:
--------------------------------------------------------------------------------
1 | //
2 | // ABPerson_SwissSMS.h
3 | // SwissSMS
4 | //
5 | // Created by Nicolas Seriot on 08.04.07.
6 | // Copyright 2007 Nicolas Seriot. All rights reserved.
7 | //
8 |
9 | #import
10 | #import
11 | #import
12 |
13 | @interface ABPerson (SwissSMS)
14 |
15 | + (NSArray *)personsWithMobilePhone;
16 |
17 | - (NSString *)fullname;
18 | - (NSString *)mobilePhoneNumber; // not normalized
19 | - (NSString *)phone; // normalized
20 |
21 | // TODO enable use of groups
22 | + (ABPerson *)personFromFullname:(NSString *)fullName mobilePhone:(NSString *)phone sender:(AbstractSender *)sender;
23 | + (ABPerson *)personFromFullname:(NSString *)fullName mobilePhone:(NSString *)phone;
24 | + (ABPerson *)personFromUniqueId:(NSString *)uid;
25 |
26 | @end
27 |
28 |
29 |
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Versions/A/Headers/SUAppcast.h:
--------------------------------------------------------------------------------
1 | //
2 | // SUAppcast.h
3 | // Sparkle
4 | //
5 | // Created by Andy Matuschak on 3/12/06.
6 | // Copyright 2006 Andy Matuschak. All rights reserved.
7 | //
8 |
9 | #ifndef SUAPPCAST_H
10 | #define SUAPPCAST_H
11 |
12 | @class SUAppcastItem;
13 | @interface SUAppcast : NSObject {
14 | NSArray *items;
15 | NSString *userAgentString;
16 | id delegate;
17 | NSMutableData *incrementalData;
18 | }
19 |
20 | - (void)fetchAppcastFromURL:(NSURL *)url;
21 | - (void)setDelegate:delegate;
22 | - (void)setUserAgentString:(NSString *)userAgentString;
23 |
24 | - (NSArray *)items;
25 |
26 | @end
27 |
28 | @interface NSObject (SUAppcastDelegate)
29 | - (void)appcastDidFinishLoading:(SUAppcast *)appcast;
30 | - (void)appcast:(SUAppcast *)appcast failedToLoadWithError:(NSError *)error;
31 | @end
32 |
33 | #endif
34 |
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Versions/A/Resources/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | Sparkle
9 | CFBundleIdentifier
10 | org.andymatuschak.Sparkle
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | Sparkle
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 1.5 Beta 6
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 313
23 |
24 |
25 |
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Versions/A/Headers/SUVersionComparisonProtocol.h:
--------------------------------------------------------------------------------
1 | //
2 | // SUVersionComparisonProtocol.h
3 | // Sparkle
4 | //
5 | // Created by Andy Matuschak on 12/21/07.
6 | // Copyright 2007 Andy Matuschak. All rights reserved.
7 | //
8 |
9 | #ifndef SUVERSIONCOMPARISONPROTOCOL_H
10 | #define SUVERSIONCOMPARISONPROTOCOL_H
11 |
12 | /*!
13 | @protocol
14 | @abstract Implement this protocol to provide version comparison facilities for Sparkle.
15 | */
16 | @protocol SUVersionComparison
17 |
18 | /*!
19 | @method
20 | @abstract An abstract method to compare two version strings.
21 | @discussion Should return NSOrderedAscending if b > a, NSOrderedDescending if b < a, and NSOrderedSame if they are equivalent.
22 | */
23 | - (NSComparisonResult)compareVersion:(NSString *)versionA toVersion:(NSString *)versionB;
24 |
25 | @end
26 |
27 | #endif
28 |
--------------------------------------------------------------------------------
/NSFileManager_SwissSMS.m:
--------------------------------------------------------------------------------
1 | //
2 | // NSFileManager_SwissSMS.m
3 | // SwissSMS
4 | //
5 | // Created by Nicolas Seriot on 25.11.07.
6 | // Copyright 2007 __MyCompanyName__. All rights reserved.
7 | //
8 |
9 | #import "NSFileManager_SwissSMS.h"
10 |
11 |
12 | @implementation NSFileManager (SwissSMS)
13 |
14 | - (BOOL)copyResource:(NSString *)sourcePath toChosenDestination:(NSString *)defaultDir {
15 | NSFileManager *fm = [NSFileManager defaultManager];
16 |
17 | BOOL isDir;
18 | BOOL fileExists = [fm fileExistsAtPath:defaultDir isDirectory:&isDir];
19 | if(!fileExists) {
20 | [fm createDirectoryAtPath:defaultDir attributes:nil];
21 | }
22 |
23 | NSString *destPath = [defaultDir stringByAppendingPathComponent:[sourcePath lastPathComponent]];
24 |
25 | if ([fm fileExistsAtPath:sourcePath]) {
26 | [fm removeFileAtPath:destPath handler:nil];
27 | return [fm copyPath:sourcePath toPath:destPath handler:nil];
28 | } else {
29 | return NO;
30 | }
31 | }
32 |
33 | @end
34 |
--------------------------------------------------------------------------------
/Address Book plugin/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | English
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleIconFile
10 |
11 | CFBundleIdentifier
12 | ch.seriot.SwissSMS.abplugin.sendsms
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundleName
16 | ${PRODUCT_NAME}
17 | CFBundlePackageType
18 | BNDL
19 | CFBundleSignature
20 | SwSm
21 | CFBundleShortVersionString
22 | ${SHORT_VERSION_STRING}
23 | CFBundleVersion
24 | 0
25 | NSPrincipalClass
26 | SwissSMSABPlugin
27 |
28 |
29 |
--------------------------------------------------------------------------------
/SwissSMSUpdater.m:
--------------------------------------------------------------------------------
1 | //
2 | // SwissSMSUpdater.m
3 | // SwissSMS
4 | //
5 | // Created by Cédric Luthi on 4/6/08.
6 | // Copyright 2008 Cédric Luthi. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "SwissSMSUpdater.h"
11 | #import
12 | //#import
13 |
14 |
15 | @implementation SwissSMSUpdater
16 |
17 | // The Sparkle 1.1 implementation compares the version in the appcast ([updateItem fileVersion])
18 | // to host app "version" (CFBundleVersion). But for SwissSMS CFBundleVersion is the svn revision number.
19 | // We want to compare the appcast version to the dotted version of SwissSMS which lies in CFBundleShortVersionString.
20 | // Original implementation:
21 | // return SUStandardVersionComparison([updateItem fileVersion], SUHostAppVersion()) == NSOrderedAscending;
22 | - (BOOL)newVersionAvailable
23 | {
24 | return NO;//SUStandardVersionComparison([updateItem fileVersion], SUInfoValueForKey(@"CFBundleShortVersionString")) == NSOrderedAscending;
25 | }
26 |
27 | @end
28 |
--------------------------------------------------------------------------------
/SwissSMS_AppDelegate+TokenField.h:
--------------------------------------------------------------------------------
1 | //
2 | // SwissSMS_AppDelegate+TokenField.h
3 | // SwissSMS
4 | //
5 | // Created by Nicolas Seriot on 08.10.07.
6 | // Copyright 2007 __MyCompanyName__. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "SwissSMS_AppDelegate.h"
11 |
12 | @interface SwissSMS_AppDelegate (TokenField)
13 |
14 | - (NSArray *)tokenField:(NSTokenField *)tokenField completionsForSubstring:(NSString *)substring indexOfToken:(int)tokenIndex indexOfSelectedItem:(int *)selectedIndex;
15 | - (NSString *)tokenField:(NSTokenField *)tokenField displayStringForRepresentedObject:(id)representedObject;
16 | //- (BOOL)tokenField:(NSTokenField *)tokenField hasMenuForRepresentedObject:(id)representedObject;
17 | //- (NSMenu *)tokenField:(NSTokenField *)tokenField menuForRepresentedObject:(id)representedObject;
18 | - (id)tokenField:(NSTokenField *)tokenField representedObjectForEditingString:(NSString *)editingString;
19 | - (NSArray *)tokenField:(NSTokenField *)tokenField shouldAddObjects:(NSArray *)tokens atIndex:(unsigned)index;
20 |
21 | @end
22 |
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Versions/A/Resources/License.txt:
--------------------------------------------------------------------------------
1 | Copyright (c) 2006 Andy Matuschak
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
4 |
5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
6 |
7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
--------------------------------------------------------------------------------
/PluginTemplate/README.txt:
--------------------------------------------------------------------------------
1 | SwissSMS plug-in template
2 | -------------------------
3 |
4 | 1. rename classes according to your service, suffix with the country code
5 |
6 | MyServiceCH.h -> BouygesFR.h
7 | MyServiceCH.m -> BouygesFR.m
8 |
9 | 2. edit and rename the service image
10 |
11 | MyServiceCH.png -> BouygesFR.png
12 |
13 | 3. edit Info.plist
14 |
15 | CFBundleIdentifier
16 | fr.free.toto.Bouyges.fr
17 |
18 | NSPrincipalClass
19 | BouygesFR
20 |
21 | SSPAuthor
22 | Jean-Pierre Boulet
23 |
24 | SSPCountryCode
25 | fr
26 |
27 | SSPMaxChars
28 | 150 (change into the right value..)
29 |
30 | SSPName
31 | BouygesFR
32 |
33 | SSPNeedsAuthentication
34 | true
35 |
36 | SSPVersion
37 | 0.1 (increment this value each time you release a new version for your plugin)
38 |
39 | SSPWebSite
40 | http://toto.free.fr/my_plugins_page
41 |
42 | 3. rename Target and product
43 |
44 | Targets > MyServiceCH > rename -> BouygesFR
45 | BouygesFR > Info > ProductName: MyServiceCH -> BouygesFR
46 |
47 | 4. put your plugin in "~/Library/Application Support/SwissSMS/PlugIns/"
48 |
49 |
50 |
51 |
52 |
--------------------------------------------------------------------------------
/NSDictionary+SMSSender.m:
--------------------------------------------------------------------------------
1 | //
2 | // NSDictionary+SMSSender.m
3 | // SMSRomandie
4 | //
5 | // Created by Nicolas Seriot on 24.04.07.
6 | // Copyright 2007 Nicolas Seriot. All rights reserved.
7 | //
8 |
9 | #import "NSDictionary+SMSSender.h"
10 | #import "NSString+SMSSender.h"
11 |
12 | @implementation NSDictionary (SMSSender)
13 |
14 | - (NSData *)formDataWithEncoding:(NSStringEncoding)encoding {
15 | NSArray *allKeys = [self allKeys];
16 | NSMutableArray *keyAndValues = [NSMutableArray arrayWithCapacity:[allKeys count]];
17 |
18 | NSEnumerator *e = [allKeys objectEnumerator];
19 | NSString *dictKey;
20 | while((dictKey = [e nextObject])){
21 |
22 | NSString *encodedKey = [dictKey escapeWithEncoding:encoding];
23 | NSString *encodedValue = [(NSString *)[self objectForKey:dictKey] escapeWithEncoding:encoding];
24 |
25 | NSString *keyAndValue = [NSString stringWithFormat:@"%@=%@", encodedKey, encodedValue];
26 |
27 | [keyAndValues addObject:keyAndValue];
28 | }
29 |
30 | NSString *s = [keyAndValues componentsJoinedByString:@"&"];
31 | return [s dataUsingEncoding:NSASCIIStringEncoding];
32 | }
33 |
34 | @end
35 |
--------------------------------------------------------------------------------
/SSRecipient.m:
--------------------------------------------------------------------------------
1 | //
2 | // SSRecipient.m
3 | // SwissSMS
4 | //
5 | // Created by Nicolas Seriot on 12.10.07.
6 | // Copyright 2007 __MyCompanyName__. All rights reserved.
7 | //
8 |
9 | #import "SSRecipient.h"
10 | #import "ABPerson_SwissSMS.h"
11 | #import "NSString_SwissSMS.h"
12 | #import "AbstractSender.h"
13 |
14 | @implementation SSRecipient
15 |
16 | +(id ) findRecipientFromObject:(id)o sender:(AbstractSender *)sender {
17 | NSObject *p;
18 |
19 | if([o isKindOfClass:[ABPerson class]]) {
20 | return o;
21 | } else if ([o isKindOfClass:[NSString class]]) {
22 | p = [ABPerson personFromUniqueId:o]; if(p) { return p; }
23 | p = [ABPerson personFromFullname:o mobilePhone:o sender:sender]; if(p) { return p; }
24 | p = [sender normalizePhoneNumber:o]; if(p) { return p; }
25 | }
26 |
27 | return nil;
28 | }
29 |
30 | +(id ) findRecipientFromObject:(id)o {
31 | AbstractSender *sender = [[NSApp delegate] valueForKey:@"smsSender"];
32 | return [SSRecipient findRecipientFromObject:o sender:sender];
33 | }
34 |
35 |
36 | @end
37 |
--------------------------------------------------------------------------------
/NSURL+SMSSender.m:
--------------------------------------------------------------------------------
1 | //
2 | // NSURL+SMSSender.m
3 | // SwissSMS
4 | //
5 | // Created by Nicolas Seriot on 30.03.09.
6 | // Copyright 2009 Sen:te. All rights reserved.
7 | //
8 |
9 | #import "NSURL+SMSSender.h"
10 |
11 |
12 | @implementation NSURL (SMSSender)
13 |
14 | - (NSData *)dataWithUserAgent:(NSString *)userAgent {
15 | NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:self cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:15.0];
16 | NSHTTPURLResponse *response;
17 | [request setValue:userAgent forHTTPHeaderField:@"User-Agent"];
18 | NSError *connectionError = nil;
19 | NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&connectionError];
20 | [request release];
21 |
22 | if (connectionError) {
23 | NSLog(@"-- error while retrieving %@: %@", self, [connectionError localizedDescription]);
24 | return nil;
25 | }
26 |
27 | return data;
28 | }
29 |
30 | - (NSString *)stringWithUserAgent:(NSString *)userAgent {
31 | NSData *data = [self dataWithUserAgent:userAgent];
32 | if(!data) return nil;
33 | return [[[NSString alloc] initWithData:data encoding:NSISOLatin1StringEncoding] autorelease];
34 | }
35 |
36 | @end
37 |
--------------------------------------------------------------------------------
/Scripts/svnrevision.sh:
--------------------------------------------------------------------------------
1 | export PATH=/opt/local/bin:/usr/local/bin:/sw/bin/:$PATH
2 |
3 | if [ $ACTION == "build" ]; then
4 | revision=`svnversion`
5 |
6 | if [ $BUILD_STYLE == "Release" ]; then
7 | errorLevel="warning"#"error"
8 | else
9 | errorLevel="warning"
10 | fi
11 |
12 | warned=0
13 |
14 | if echo $revision | grep -q :
15 | then
16 | echo "$errorLevel: mixed revision working copy ($revision)"
17 | warned=1
18 | fi
19 |
20 | if echo $revision | grep -q M && [ $warned -eq 0 ]
21 | then
22 | echo "$errorLevel: modified working copy ($revision)"
23 | warned=1
24 | fi
25 |
26 | if echo $revision | grep -q S && [ $warned -eq 0 ]
27 | then
28 | echo "$errorLevel: switched working copy ($revision)"
29 | warned=1
30 | fi
31 |
32 | if [ $warned -eq 1 ] && [ $errorLevel == "error" ]
33 | then
34 | exit 1
35 | fi
36 |
37 | perl -i -pe "undef $/; s{(CFBundleVersion.*?).*?}{\\1$revision}s" "$CONFIGURATION_BUILD_DIR/$INFOPLIST_PATH"
38 | exitCode=$?
39 |
40 | if [ $exitCode -ne 0 ]; then
41 | echo "error: could not set CFBundleVersion ($exitCode)"
42 | exit $exitCode
43 | fi
44 |
45 | echo $revision > "$DERIVED_FILE_DIR/revision"
46 | fi
47 |
--------------------------------------------------------------------------------
/MyPerson.m:
--------------------------------------------------------------------------------
1 | //
2 | // MyPerson.m
3 | // BindingCategory
4 | //
5 | // Created by Nicolas Seriot on 07.05.07.
6 | // Copyright 2007 Nicolas Seriot. All rights reserved.
7 | //
8 |
9 | #import "MyPerson.h"
10 |
11 |
12 | @implementation ABPerson (SwissSMS)
13 |
14 | // http://www.cocoabuilder.com/archive/message/cocoa/2007/5/6/182892
15 | - (id) valueForKeyPath: (NSString*) keyPath {
16 | NSArray *path = [keyPath componentsSeparatedByString: @"."];
17 | unsigned i, max;
18 | max = [path count];
19 | id value = self;
20 | for ( i = 0; i < max; i++ ) {
21 | value = [value valueForKey: [path objectAtIndex: i]];
22 | }
23 | return value;
24 | }
25 |
26 | //- (void) setImageData:(NSData *)data {
27 | // [super setImageData:data];
28 | //}
29 |
30 | // #warning might break
31 | // http://www.cocoabuilder.com/archive/message/cocoa/2004/5/8/106572
32 | - (void) encodeWithCoder:(NSCoder *) coder {
33 | [coder encodeDataObject:[self vCardRepresentation]];
34 | }
35 |
36 | - (id) initWithCoder:(NSCoder *)decoder; {
37 | self=[self init]; // this call assigns a uniqueId
38 | self=[self initWithVCardRepresentation:[decoder decodeDataObject]];
39 | return self;
40 | }
41 |
42 |
43 | @end
44 |
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdateAlert.nib/classes.nib:
--------------------------------------------------------------------------------
1 | {
2 | IBClasses = (
3 | {
4 | CLASS = FirstResponder;
5 | LANGUAGE = ObjC;
6 | SUPERCLASS = NSObject;
7 | },
8 | {
9 | CLASS = NSApplication;
10 | LANGUAGE = ObjC;
11 | SUPERCLASS = NSResponder;
12 | },
13 | {
14 | CLASS = NSObject;
15 | LANGUAGE = ObjC;
16 | },
17 | {
18 | ACTIONS = {
19 | installUpdate = id;
20 | remindMeLater = id;
21 | skipThisVersion = id;
22 | };
23 | CLASS = SUUpdateAlert;
24 | LANGUAGE = ObjC;
25 | OUTLETS = {
26 | delegate = id;
27 | description = NSTextField;
28 | releaseNotesView = WebView;
29 | };
30 | SUPERCLASS = SUWindowController;
31 | },
32 | {
33 | CLASS = SUWindowController;
34 | LANGUAGE = ObjC;
35 | SUPERCLASS = NSWindowController;
36 | }
37 | );
38 | IBVersion = 1;
39 | }
--------------------------------------------------------------------------------
/MDImporter/schema.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
7 |
8 |
12 |
13 | kMDItemContentCreationDate
14 | kMDItemRecipients
15 | kMDItemTextContent
16 |
17 |
18 |
19 | kMDItemContentCreationDate
20 | kMDItemRecipients
21 | kMDItemTextContent
22 |
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Versions/A/Headers/SUAppcastItem.h:
--------------------------------------------------------------------------------
1 | //
2 | // SUAppcastItem.h
3 | // Sparkle
4 | //
5 | // Created by Andy Matuschak on 3/12/06.
6 | // Copyright 2006 Andy Matuschak. All rights reserved.
7 | //
8 |
9 | #ifndef SUAPPCASTITEM_H
10 | #define SUAPPCASTITEM_H
11 |
12 | @interface SUAppcastItem : NSObject {
13 | NSString *title;
14 | NSDate *date;
15 | NSString *itemDescription;
16 |
17 | NSURL *releaseNotesURL;
18 |
19 | NSString *DSASignature;
20 | NSString *minimumSystemVersion;
21 |
22 | NSURL *fileURL;
23 | NSString *versionString;
24 | NSString *displayVersionString;
25 |
26 | NSDictionary *propertiesDictionary;
27 | }
28 |
29 | // Initializes with data from a dictionary provided by the RSS class.
30 | - initWithDictionary:(NSDictionary *)dict;
31 |
32 | - (NSString *)title;
33 | - (NSString *)versionString;
34 | - (NSString *)displayVersionString;
35 | - (NSDate *)date;
36 | - (NSString *)itemDescription;
37 | - (NSURL *)releaseNotesURL;
38 | - (NSURL *)fileURL;
39 | - (NSString *)DSASignature;
40 | - (NSString *)minimumSystemVersion;
41 |
42 | // Returns the dictionary provided in initWithDictionary; this might be useful later for extensions.
43 | - (NSDictionary *)propertiesDictionary;
44 |
45 | @end
46 |
47 | #endif
48 |
--------------------------------------------------------------------------------
/NSString_SwissSMS.m:
--------------------------------------------------------------------------------
1 | //
2 | // NSString_SwissSMS.m
3 | // SwissSMS
4 | //
5 | // Created by Nicolas Seriot on 09.04.07.
6 | // Copyright 2007 Nicolas Seriot. All rights reserved.
7 | //
8 |
9 | #import "NSString_SwissSMS.h"
10 | #import "AbstractSender.h"
11 |
12 |
13 | @implementation NSString (SwissSMS)
14 |
15 | + (NSString *)bluePhoneEliteExportFilePath {
16 | NSArray *paths = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES);
17 | NSString *basePath = ([paths count] > 0) ? [paths objectAtIndex:0] : NSTemporaryDirectory();
18 | NSArray *pathComponents = [NSArray arrayWithObjects:basePath, @"BluePhoneElite", @"SMS Archive", @"Local", @"contents.plist", nil];
19 |
20 | return [pathComponents componentsJoinedByString:@"/"];
21 | }
22 |
23 | -(NSString *)name {
24 | return self;
25 | }
26 |
27 | -(NSString *)phone {
28 | return [(AbstractSender *)[[NSApp delegate] valueForKey:@"smsSender"] normalizePhoneNumber:self];
29 | }
30 |
31 | -(NSData *)imageData {
32 | return nil;
33 | }
34 |
35 | -(NSData *)imageDataForCurrentIMStatus {
36 | return nil;
37 | }
38 |
39 | + (NSString *) uuid {
40 | CFUUIDRef uuidRef = CFUUIDCreate(nil);
41 | NSString *newUUID = (NSString *)CFUUIDCreateString(nil, uuidRef);
42 | CFRelease(uuidRef);
43 | return [newUUID autorelease];
44 | }
45 |
46 | @end
47 |
--------------------------------------------------------------------------------
/Address Book plugin/SwissSMSABPlugin.h:
--------------------------------------------------------------------------------
1 | //
2 | // SwissSMSABPlugin.h
3 | // SwissSMSABPlugin
4 | //
5 | // Created by Cédric Luthi on 18.11.07.
6 | // Copyright Cédric Luthi 2007. All rights reserved.
7 | //
8 |
9 | #import
10 | //#import "SwissSMSABPlugin.h"
11 |
12 | @interface SwissSMSABPlugin : NSObject
13 | {
14 | }
15 |
16 | // Returns the property this action is for.
17 | - (NSString *)actionProperty;
18 |
19 | // Returns the title for this action. The current person is passed in as person.
20 | // If the actionProperty is a multiValue type, identifier will contain the identifier
21 | // of the item the user rolled over. If the actionProperty is not a multiValue type
22 | // identifier will be nil.
23 | - (NSString *)titleForPerson:(ABPerson *)person identifier:(NSString *)identifier;
24 |
25 | // This method is called when the user selects your action. As above, this method
26 | // is passed information about the data item rolled over.
27 | - (void)performActionForPerson:(ABPerson *)person identifier:(NSString *)identifier;
28 |
29 | // Optional. Your action will always be enabled in the absence of this method. As
30 | // above, this method is passed information about the data item rolled over.
31 | - (BOOL)shouldEnableActionForPerson:(ABPerson *)person identifier:(NSString *)identifier;
32 |
33 | @end
34 |
35 |
--------------------------------------------------------------------------------
/Plugins/RomandieCH/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | English
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleName
10 | ${PRODUCT_NAME}
11 | CFBundleIconFile
12 |
13 | CFBundleIdentifier
14 | ch.seriot.SwissSMS.RomandieCH
15 | CFBundleInfoDictionaryVersion
16 | 6.0
17 | CFBundlePackageType
18 | SSPl
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1.0
23 | NSPrincipalClass
24 | RomandieCH
25 | SSPAPIVersion
26 | 0.1
27 | SSPAuthor
28 | Nicolas Seriot
29 | SSPCountryCode
30 | CH
31 | SSPMaxChars
32 | 153
33 | SSPName
34 | Romandie
35 | SSPNeedsAuthentication
36 |
37 | SSPVersion
38 | 1.0
39 | SSPWebSite
40 | http://www.seriot.ch
41 |
42 |
43 |
--------------------------------------------------------------------------------
/PluginTemplate/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | English
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleIconFile
10 |
11 | CFBundleIdentifier
12 | ch.seriot.SwissSMS.MyServiceCH
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundleName
16 | ${PRODUCT_NAME}
17 | CFBundlePackageType
18 | BNDL
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1.0
23 | NSPrincipalClass
24 | MyServiceCH
25 | SSPAPIVersion
26 | 0.1
27 | SSPAuthor
28 | John Doe
29 | SSPCountryCode
30 | ch
31 | SSPMaxChars
32 | 150
33 | SSPName
34 | MyServiceCH
35 | SSPNeedsAuthentication
36 |
37 | SSPVersion
38 | 0.1
39 | SSPWebSite
40 | http://www.your_website.ch/MyServiceCH_download__page
41 |
42 |
43 |
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Versions/A/Resources/de.lproj/SUAutomaticUpdateAlert.nib/classes.nib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IBClasses
6 |
7 |
8 | CLASS
9 | SUWindowController
10 | LANGUAGE
11 | ObjC
12 | SUPERCLASS
13 | NSWindowController
14 |
15 |
16 | ACTIONS
17 |
18 | doNotInstall
19 | id
20 | installLater
21 | id
22 | installNow
23 | id
24 |
25 | CLASS
26 | SUAutomaticUpdateAlert
27 | LANGUAGE
28 | ObjC
29 | SUPERCLASS
30 | SUWindowController
31 |
32 |
33 | CLASS
34 | FirstResponder
35 | LANGUAGE
36 | ObjC
37 | SUPERCLASS
38 | NSObject
39 |
40 |
41 | CLASS
42 | NSObject
43 | LANGUAGE
44 | ObjC
45 |
46 |
47 | IBVersion
48 | 1
49 |
50 |
51 |
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib/classes.nib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IBClasses
6 |
7 |
8 | CLASS
9 | SUWindowController
10 | LANGUAGE
11 | ObjC
12 | SUPERCLASS
13 | NSWindowController
14 |
15 |
16 | ACTIONS
17 |
18 | doNotInstall
19 | id
20 | installLater
21 | id
22 | installNow
23 | id
24 |
25 | CLASS
26 | SUAutomaticUpdateAlert
27 | LANGUAGE
28 | ObjC
29 | SUPERCLASS
30 | SUWindowController
31 |
32 |
33 | CLASS
34 | FirstResponder
35 | LANGUAGE
36 | ObjC
37 | SUPERCLASS
38 | NSObject
39 |
40 |
41 | CLASS
42 | NSObject
43 | LANGUAGE
44 | ObjC
45 |
46 |
47 | IBVersion
48 | 1
49 |
50 |
51 |
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Versions/A/Resources/es.lproj/SUAutomaticUpdateAlert.nib/classes.nib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IBClasses
6 |
7 |
8 | CLASS
9 | SUWindowController
10 | LANGUAGE
11 | ObjC
12 | SUPERCLASS
13 | NSWindowController
14 |
15 |
16 | ACTIONS
17 |
18 | doNotInstall
19 | id
20 | installLater
21 | id
22 | installNow
23 | id
24 |
25 | CLASS
26 | SUAutomaticUpdateAlert
27 | LANGUAGE
28 | ObjC
29 | SUPERCLASS
30 | SUWindowController
31 |
32 |
33 | CLASS
34 | FirstResponder
35 | LANGUAGE
36 | ObjC
37 | SUPERCLASS
38 | NSObject
39 |
40 |
41 | CLASS
42 | NSObject
43 | LANGUAGE
44 | ObjC
45 |
46 |
47 | IBVersion
48 | 1
49 |
50 |
51 |
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Versions/A/Resources/fr.lproj/SUAutomaticUpdateAlert.nib/classes.nib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IBClasses
6 |
7 |
8 | CLASS
9 | SUWindowController
10 | LANGUAGE
11 | ObjC
12 | SUPERCLASS
13 | NSWindowController
14 |
15 |
16 | ACTIONS
17 |
18 | doNotInstall
19 | id
20 | installLater
21 | id
22 | installNow
23 | id
24 |
25 | CLASS
26 | SUAutomaticUpdateAlert
27 | LANGUAGE
28 | ObjC
29 | SUPERCLASS
30 | SUWindowController
31 |
32 |
33 | CLASS
34 | FirstResponder
35 | LANGUAGE
36 | ObjC
37 | SUPERCLASS
38 | NSObject
39 |
40 |
41 | CLASS
42 | NSObject
43 | LANGUAGE
44 | ObjC
45 |
46 |
47 | IBVersion
48 | 1
49 |
50 |
51 |
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Versions/A/Resources/it.lproj/SUAutomaticUpdateAlert.nib/classes.nib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IBClasses
6 |
7 |
8 | CLASS
9 | SUWindowController
10 | LANGUAGE
11 | ObjC
12 | SUPERCLASS
13 | NSWindowController
14 |
15 |
16 | ACTIONS
17 |
18 | doNotInstall
19 | id
20 | installLater
21 | id
22 | installNow
23 | id
24 |
25 | CLASS
26 | SUAutomaticUpdateAlert
27 | LANGUAGE
28 | ObjC
29 | SUPERCLASS
30 | SUWindowController
31 |
32 |
33 | CLASS
34 | FirstResponder
35 | LANGUAGE
36 | ObjC
37 | SUPERCLASS
38 | NSObject
39 |
40 |
41 | CLASS
42 | NSObject
43 | LANGUAGE
44 | ObjC
45 |
46 |
47 | IBVersion
48 | 1
49 |
50 |
51 |
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Versions/A/Resources/nl.lproj/SUAutomaticUpdateAlert.nib/classes.nib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IBClasses
6 |
7 |
8 | CLASS
9 | SUWindowController
10 | LANGUAGE
11 | ObjC
12 | SUPERCLASS
13 | NSWindowController
14 |
15 |
16 | ACTIONS
17 |
18 | doNotInstall
19 | id
20 | installLater
21 | id
22 | installNow
23 | id
24 |
25 | CLASS
26 | SUAutomaticUpdateAlert
27 | LANGUAGE
28 | ObjC
29 | SUPERCLASS
30 | SUWindowController
31 |
32 |
33 | CLASS
34 | FirstResponder
35 | LANGUAGE
36 | ObjC
37 | SUPERCLASS
38 | NSObject
39 |
40 |
41 | CLASS
42 | NSObject
43 | LANGUAGE
44 | ObjC
45 |
46 |
47 | IBVersion
48 | 1
49 |
50 |
51 |
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Versions/A/Resources/ru.lproj/SUAutomaticUpdateAlert.nib/classes.nib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IBClasses
6 |
7 |
8 | CLASS
9 | SUWindowController
10 | LANGUAGE
11 | ObjC
12 | SUPERCLASS
13 | NSWindowController
14 |
15 |
16 | ACTIONS
17 |
18 | doNotInstall
19 | id
20 | installLater
21 | id
22 | installNow
23 | id
24 |
25 | CLASS
26 | SUAutomaticUpdateAlert
27 | LANGUAGE
28 | ObjC
29 | SUPERCLASS
30 | SUWindowController
31 |
32 |
33 | CLASS
34 | FirstResponder
35 | LANGUAGE
36 | ObjC
37 | SUPERCLASS
38 | NSObject
39 |
40 |
41 | CLASS
42 | NSObject
43 | LANGUAGE
44 | ObjC
45 |
46 |
47 | IBVersion
48 | 1
49 |
50 |
51 |
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Versions/A/Resources/sv.lproj/SUAutomaticUpdateAlert.nib/classes.nib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IBClasses
6 |
7 |
8 | CLASS
9 | SUWindowController
10 | LANGUAGE
11 | ObjC
12 | SUPERCLASS
13 | NSWindowController
14 |
15 |
16 | ACTIONS
17 |
18 | doNotInstall
19 | id
20 | installLater
21 | id
22 | installNow
23 | id
24 |
25 | CLASS
26 | SUAutomaticUpdateAlert
27 | LANGUAGE
28 | ObjC
29 | SUPERCLASS
30 | SUWindowController
31 |
32 |
33 | CLASS
34 | FirstResponder
35 | LANGUAGE
36 | ObjC
37 | SUPERCLASS
38 | NSObject
39 |
40 |
41 | CLASS
42 | NSObject
43 | LANGUAGE
44 | ObjC
45 |
46 |
47 | IBVersion
48 | 1
49 |
50 |
51 |
--------------------------------------------------------------------------------
/Plugins/ETHCH/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | English
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleIconFile
10 |
11 | CFBundleIdentifier
12 | ch.belfrage.SwissSMS.ETHCH
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundleName
16 | ${PRODUCT_NAME}
17 | CFBundlePackageType
18 | SSPl
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1.0
23 | NSPrincipalClass
24 | ETHCH
25 | SSPAPIVersion
26 | 0.1
27 | SSPAuthor
28 | Michael Belfrage
29 | SSPCountryCode
30 | CH
31 | SSPKProtocol
32 | https
33 | SSPKServer
34 | www.ethz.ch
35 | SSPMaxChars
36 | 159
37 | SSPName
38 | ETH
39 | SSPNeedsAuthentication
40 |
41 | SSPSignupPage
42 | http://www.ethz.ch
43 | SSPVersion
44 | 0.1
45 |
46 |
47 |
--------------------------------------------------------------------------------
/Plugins/MjoyINT/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | English
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleIconFile
10 |
11 | CFBundleIdentifier
12 | ch.seriot.SwissSMS.MjoyINT
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundleName
16 | ${PRODUCT_NAME}
17 | CFBundlePackageType
18 | SSPl
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1.0
23 | NSPrincipalClass
24 | MjoyINT
25 | SSPAPIVersion
26 | 0.1
27 | SSPAuthor
28 | Nicolas Seriot
29 | SSPCountryCode
30 | CH
31 | SSPMaxChars
32 | 133
33 | SSPName
34 | Mjoy
35 | SSPNeedsAuthentication
36 |
37 | SSPVersion
38 | 0.1
39 | SSPWebSite
40 | http://www.seriot.ch
41 | SSPKProtocol
42 | http
43 | SSPKServer
44 | http://mjoy.com
45 | SSPSignupPage
46 | http://mjoy.com
47 |
48 |
49 |
--------------------------------------------------------------------------------
/Plugins/SunriseCH/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | English
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleIconFile
10 |
11 | CFBundleIdentifier
12 | ch.seriot.SwissSMS.SunriseCH
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundleName
16 | ${PRODUCT_NAME}
17 | CFBundlePackageType
18 | SSPl
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1.0
23 | NSPrincipalClass
24 | SunriseCH
25 | SSPAPIVersion
26 | 1.3
27 | SSPAuthor
28 | Christian Rüegg
29 | SSPCountryCode
30 | CH
31 | SSPMaxChars
32 | 160
33 | SSPName
34 | Sunrise
35 | SSPNeedsAuthentication
36 |
37 | SSPVersion
38 | 1.3
39 | SSPWebSite
40 |
41 | SSPKProtocol
42 |
43 | SSPKServer
44 | mip.sunrise.ch
45 | SSPSignupPage
46 | http://mip.sunrise.ch
47 |
48 |
49 |
--------------------------------------------------------------------------------
/MDImporter/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | English
7 | CFBundleDocumentTypes
8 |
9 |
10 | CFBundleTypeRole
11 | MDImporter
12 | LSItemContentTypes
13 |
14 | ch.seriot.swisssms
15 |
16 |
17 |
18 | CFBundleExecutable
19 | ${EXECUTABLE_NAME}
20 | CFBundleIconFile
21 |
22 | CFBundleIdentifier
23 | ch.seriot.SwissSMS.MDImporter
24 | CFBundleInfoDictionaryVersion
25 | 6.0
26 | CFBundleName
27 | ${PRODUCT_NAME}
28 | CFBundleVersion
29 | 1.0
30 | CFPlugInDynamicRegisterFunction
31 |
32 | CFPlugInDynamicRegistration
33 | NO
34 | CFPlugInFactories
35 |
36 | 3873C3BD-93D3-4B1C-8F8E-17ACBB5A8861
37 | MetadataImporterPluginFactory
38 |
39 | CFPlugInTypes
40 |
41 | 8B08C4BF-415B-11D8-B3F9-0003936726FC
42 |
43 | 3873C3BD-93D3-4B1C-8F8E-17ACBB5A8861
44 |
45 |
46 | CFPlugInUnloadFunction
47 |
48 |
49 |
50 |
--------------------------------------------------------------------------------
/Plugins/YalloCH/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | English
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleIconFile
10 | Yallo.png
11 | CFBundleIdentifier
12 | ch.seriot.SwissSMS.YalloCH
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundleName
16 | ${PRODUCT_NAME}
17 | CFBundlePackageType
18 | SSPl
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1.0
23 | NSPrincipalClass
24 | YalloCH
25 | SSPAPIVersion
26 | 0.2
27 | SSPAuthor
28 | Andre Anjos
29 | SSPCountryCode
30 | CH
31 | SSPMaxChars
32 | 130
33 | SSPName
34 | Yallo
35 | SSPNeedsAuthentication
36 |
37 | SSPVersion
38 | 0.1
39 | SSPWebSite
40 |
41 | SSPKProtocol
42 | https
43 | SSPKServer
44 | www.yallo.ch
45 | SSPSignupPage
46 | https://www.yallo.ch/kp/dyn/web/pub/home/home.do
47 |
48 |
49 |
--------------------------------------------------------------------------------
/Plugins/OrangeCH/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | English
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleIconFile
10 |
11 | CFBundleIdentifier
12 | ch.seriot.SwissSMS.OrangeCH
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundleName
16 | ${PRODUCT_NAME}
17 | CFBundlePackageType
18 | SSPl
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1.0
23 | NSPrincipalClass
24 | OrangeCH
25 | SSPAPIVersion
26 | 0.1
27 | SSPAuthor
28 | Nicolas Seriot
29 | SSPCountryCode
30 | CH
31 | SSPMaxChars
32 | 133
33 | SSPName
34 | Orange
35 | SSPNeedsAuthentication
36 |
37 | SSPVersion
38 | 0.2
39 | SSPWebSite
40 | http://www.seriot.ch
41 | SSPKProtocol
42 | https
43 | SSPKServer
44 | www.orange.ch
45 | SSPSignupPage
46 | https://www.orange.ch/registration
47 |
48 |
49 |
--------------------------------------------------------------------------------
/Plugins/CitycableCH/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | English
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleIconFile
10 |
11 | CFBundleIdentifier
12 | ch.seriot.SwissSMS.CitycableCH
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundleName
16 | ${PRODUCT_NAME}
17 | CFBundlePackageType
18 | SSPl
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1.0
23 | NSPrincipalClass
24 | CitycableCH
25 | SSPAPIVersion
26 | 0.1
27 | SSPAuthor
28 | Nicolas Seriot
29 | SSPCountryCode
30 | CH
31 | SSPKProtocol
32 | https
33 | SSPKServer
34 | www.citycable.ch
35 | SSPMaxChars
36 | 160
37 | SSPName
38 | Citycable
39 | SSPNeedsAuthentication
40 |
41 | SSPSignupPage
42 | http://www.citycable.ch
43 | SSPVersion
44 | 0.1
45 | SSPWebSite
46 | http://www.seriot.ch
47 |
48 |
49 |
--------------------------------------------------------------------------------
/Plugins/CoopMobileCH/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | English
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleIconFile
10 |
11 | CFBundleIdentifier
12 | ch.seriot.SwissSMS.CoopMobileCH
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundleName
16 | ${PRODUCT_NAME}
17 | CFBundlePackageType
18 | SSPl
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1.1
23 | NSPrincipalClass
24 | CoopMobileCH
25 | SSPAPIVersion
26 | 0.1
27 | SSPAuthor
28 | Cédric Luthi
29 | SSPCountryCode
30 | CH
31 | SSPMaxChars
32 | 112
33 | SSPName
34 | Coop Mobile
35 | SSPNeedsAuthentication
36 |
37 | SSPVersion
38 | 1.1
39 | SSPWebSite
40 |
41 | SSPKProtocol
42 |
43 | SSPKServer
44 | www.coop.ch
45 | SSPSignupPage
46 | http://www.coop.ch/coopmobile/generate_code.cfm
47 |
48 |
49 |
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Versions/A/Resources/SUStatus.nib/classes.nib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IBClasses
6 |
7 |
8 | CLASS
9 | SUWindowController
10 | LANGUAGE
11 | ObjC
12 | SUPERCLASS
13 | NSWindowController
14 |
15 |
16 | CLASS
17 | NSApplication
18 | LANGUAGE
19 | ObjC
20 | SUPERCLASS
21 | NSResponder
22 |
23 |
24 | CLASS
25 | FirstResponder
26 | LANGUAGE
27 | ObjC
28 | SUPERCLASS
29 | NSObject
30 |
31 |
32 | CLASS
33 | NSObject
34 | LANGUAGE
35 | ObjC
36 |
37 |
38 | CLASS
39 | SUStatusController
40 | LANGUAGE
41 | ObjC
42 | OUTLETS
43 |
44 | actionButton
45 | NSButton
46 | progressBar
47 | NSProgressIndicator
48 |
49 | SUPERCLASS
50 | SUWindowController
51 |
52 |
53 | IBVersion
54 | 1
55 |
56 |
57 |
--------------------------------------------------------------------------------
/Plugins/PostMailCH/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | English
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleIconFile
10 |
11 | CFBundleIdentifier
12 | ch.seriot.SwissSMS.PostMailCH
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundleName
16 | ${PRODUCT_NAME}
17 | CFBundlePackageType
18 | SSPl
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1.0
23 | NSPrincipalClass
24 | PostMailCH
25 | SSPAPIVersion
26 | 0.1
27 | SSPAuthor
28 | Cédric Luthi
29 | SSPCountryCode
30 | CH
31 | SSPMaxChars
32 | 530
33 | SSPName
34 | PostMail
35 | SSPNeedsAuthentication
36 |
37 | SSPVersion
38 | 0.1
39 | SSPWebSite
40 |
41 | SSPKProtocol
42 | https
43 | SSPKServer
44 | www.postmail.ch
45 | SSPSignupPage
46 | https://login.postmail.ch/postbox/RegistrationNewCustomer.do
47 |
48 |
49 |
--------------------------------------------------------------------------------
/Plugins/hispeedCH/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | English
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleIconFile
10 |
11 | CFBundleIdentifier
12 | ch.seriot.SwissSMS.HispeedCH
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundleName
16 | ${PRODUCT_NAME}
17 | CFBundlePackageType
18 | SSPl
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1.1
23 | NSPrincipalClass
24 | HispeedCH
25 | SSPAPIVersion
26 | 0.1
27 | SSPAuthor
28 | Cédric Luthi
29 | SSPCountryCode
30 | CH
31 | SSPKProtocol
32 | https
33 | SSPKServer
34 | your.hispeed.ch
35 | SSPMaxChars
36 | 160
37 | SSPName
38 | Hispeed
39 | SSPNeedsAuthentication
40 |
41 | SSPVersion
42 | 1.1
43 | SSPWebSite
44 | http://code.google.com/p/swisssms/
45 | SSPSignupPage
46 | https://registration.hispeed.ch
47 |
48 |
49 |
--------------------------------------------------------------------------------
/Plugins/NetAppelINT/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | English
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleIconFile
10 |
11 | CFBundleIdentifier
12 | ch.seriot.SwissSMS.NetAppelINT
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundleName
16 | ${PRODUCT_NAME}
17 | CFBundlePackageType
18 | SSPl
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1.0
23 | NSPrincipalClass
24 | NetAppelINT
25 | SSPAPIVersion
26 | 0.1
27 | SSPAuthor
28 | Nicolas Seriot
29 | SSPCountryCode
30 | INT
31 | SSPMaxChars
32 | 160
33 | SSPName
34 | NetAppel
35 | SSPNeedsAuthentication
36 |
37 | SSPVersion
38 | 0.1
39 | SSPWebSite
40 | http://www.seriot.ch
41 | SSPKProtocol
42 | https
43 | SSPKServer
44 | myaccount.netappel.fr
45 | SSPSignupPage
46 | http://www.netappel.fr/fr/websignup.php
47 |
48 |
49 |
--------------------------------------------------------------------------------
/Plugins/SwisscomXtraZoneCH/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | English
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleIconFile
10 |
11 | CFBundleIdentifier
12 | ch.seriot.SwissSMS.SwisscomXtraZoneCH
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundleName
16 | ${PRODUCT_NAME}
17 | CFBundlePackageType
18 | SSPl
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1.0
23 | NSPrincipalClass
24 | SwisscomXtraZoneCH
25 | SSPAPIVersion
26 | 0.1
27 | SSPAuthor
28 | Nicolas Seriot
29 | SSPCountryCode
30 | CH
31 | SSPMaxChars
32 | 458
33 | SSPName
34 | Swisscom Xtra-Zone
35 | SSPNeedsAuthentication
36 |
37 | SSPVersion
38 | 0.1
39 | SSPWebSite
40 |
41 | SSPKProtocol
42 | https
43 | SSPKServer
44 | www.swisscom-mobile.ch
45 | SSPSignupPage
46 | https://www.swisscom-mobile.ch/selfreg/login-en.jsp
47 |
48 |
49 |
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdatePermissionPrompt.nib/classes.nib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IBClasses
6 |
7 |
8 | CLASS
9 | SUWindowController
10 | LANGUAGE
11 | ObjC
12 | SUPERCLASS
13 | NSWindowController
14 |
15 |
16 | ACTIONS
17 |
18 | finishPrompt
19 | id
20 | toggleMoreInfo
21 | id
22 |
23 | CLASS
24 | SUUpdatePermissionPrompt
25 | LANGUAGE
26 | ObjC
27 | OUTLETS
28 |
29 | delegate
30 | id
31 | descriptionTextField
32 | NSTextField
33 | moreInfoButton
34 | NSButton
35 | moreInfoView
36 | NSView
37 |
38 | SUPERCLASS
39 | SUWindowController
40 |
41 |
42 | CLASS
43 | FirstResponder
44 | LANGUAGE
45 | ObjC
46 | SUPERCLASS
47 | NSObject
48 |
49 |
50 | CLASS
51 | NSObject
52 | LANGUAGE
53 | ObjC
54 |
55 |
56 | IBVersion
57 | 1
58 |
59 |
60 |
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nib/classes.nib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IBClasses
6 |
7 |
8 | CLASS
9 | SUWindowController
10 | LANGUAGE
11 | ObjC
12 | SUPERCLASS
13 | NSWindowController
14 |
15 |
16 | ACTIONS
17 |
18 | finishPrompt
19 | id
20 | toggleMoreInfo
21 | id
22 |
23 | CLASS
24 | SUUpdatePermissionPrompt
25 | LANGUAGE
26 | ObjC
27 | OUTLETS
28 |
29 | delegate
30 | id
31 | descriptionTextField
32 | NSTextField
33 | moreInfoButton
34 | NSButton
35 | moreInfoView
36 | NSView
37 |
38 | SUPERCLASS
39 | SUWindowController
40 |
41 |
42 | CLASS
43 | FirstResponder
44 | LANGUAGE
45 | ObjC
46 | SUPERCLASS
47 | NSObject
48 |
49 |
50 | CLASS
51 | NSObject
52 | LANGUAGE
53 | ObjC
54 |
55 |
56 | IBVersion
57 | 1
58 |
59 |
60 |
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdatePermissionPrompt.nib/classes.nib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IBClasses
6 |
7 |
8 | CLASS
9 | SUWindowController
10 | LANGUAGE
11 | ObjC
12 | SUPERCLASS
13 | NSWindowController
14 |
15 |
16 | ACTIONS
17 |
18 | finishPrompt
19 | id
20 | toggleMoreInfo
21 | id
22 |
23 | CLASS
24 | SUUpdatePermissionPrompt
25 | LANGUAGE
26 | ObjC
27 | OUTLETS
28 |
29 | delegate
30 | id
31 | descriptionTextField
32 | NSTextField
33 | moreInfoButton
34 | NSButton
35 | moreInfoView
36 | NSView
37 |
38 | SUPERCLASS
39 | SUWindowController
40 |
41 |
42 | CLASS
43 | FirstResponder
44 | LANGUAGE
45 | ObjC
46 | SUPERCLASS
47 | NSObject
48 |
49 |
50 | CLASS
51 | NSObject
52 | LANGUAGE
53 | ObjC
54 |
55 |
56 | IBVersion
57 | 1
58 |
59 |
60 |
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdatePermissionPrompt.nib/classes.nib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IBClasses
6 |
7 |
8 | CLASS
9 | SUWindowController
10 | LANGUAGE
11 | ObjC
12 | SUPERCLASS
13 | NSWindowController
14 |
15 |
16 | ACTIONS
17 |
18 | finishPrompt
19 | id
20 | toggleMoreInfo
21 | id
22 |
23 | CLASS
24 | SUUpdatePermissionPrompt
25 | LANGUAGE
26 | ObjC
27 | OUTLETS
28 |
29 | delegate
30 | id
31 | descriptionTextField
32 | NSTextField
33 | moreInfoButton
34 | NSButton
35 | moreInfoView
36 | NSView
37 |
38 | SUPERCLASS
39 | SUWindowController
40 |
41 |
42 | CLASS
43 | FirstResponder
44 | LANGUAGE
45 | ObjC
46 | SUPERCLASS
47 | NSObject
48 |
49 |
50 | CLASS
51 | NSObject
52 | LANGUAGE
53 | ObjC
54 |
55 |
56 | IBVersion
57 | 1
58 |
59 |
60 |
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdatePermissionPrompt.nib/classes.nib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IBClasses
6 |
7 |
8 | CLASS
9 | SUWindowController
10 | LANGUAGE
11 | ObjC
12 | SUPERCLASS
13 | NSWindowController
14 |
15 |
16 | ACTIONS
17 |
18 | finishPrompt
19 | id
20 | toggleMoreInfo
21 | id
22 |
23 | CLASS
24 | SUUpdatePermissionPrompt
25 | LANGUAGE
26 | ObjC
27 | OUTLETS
28 |
29 | delegate
30 | id
31 | descriptionTextField
32 | NSTextField
33 | moreInfoButton
34 | NSButton
35 | moreInfoView
36 | NSView
37 |
38 | SUPERCLASS
39 | SUWindowController
40 |
41 |
42 | CLASS
43 | FirstResponder
44 | LANGUAGE
45 | ObjC
46 | SUPERCLASS
47 | NSObject
48 |
49 |
50 | CLASS
51 | NSObject
52 | LANGUAGE
53 | ObjC
54 |
55 |
56 | IBVersion
57 | 1
58 |
59 |
60 |
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdatePermissionPrompt.nib/classes.nib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IBClasses
6 |
7 |
8 | CLASS
9 | SUWindowController
10 | LANGUAGE
11 | ObjC
12 | SUPERCLASS
13 | NSWindowController
14 |
15 |
16 | ACTIONS
17 |
18 | finishPrompt
19 | id
20 | toggleMoreInfo
21 | id
22 |
23 | CLASS
24 | SUUpdatePermissionPrompt
25 | LANGUAGE
26 | ObjC
27 | OUTLETS
28 |
29 | delegate
30 | id
31 | descriptionTextField
32 | NSTextField
33 | moreInfoButton
34 | NSButton
35 | moreInfoView
36 | NSView
37 |
38 | SUPERCLASS
39 | SUWindowController
40 |
41 |
42 | CLASS
43 | FirstResponder
44 | LANGUAGE
45 | ObjC
46 | SUPERCLASS
47 | NSObject
48 |
49 |
50 | CLASS
51 | NSObject
52 | LANGUAGE
53 | ObjC
54 |
55 |
56 | IBVersion
57 | 1
58 |
59 |
60 |
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdatePermissionPrompt.nib/classes.nib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IBClasses
6 |
7 |
8 | CLASS
9 | NSObject
10 | LANGUAGE
11 | ObjC
12 |
13 |
14 | CLASS
15 | SUWindowController
16 | LANGUAGE
17 | ObjC
18 | SUPERCLASS
19 | NSWindowController
20 |
21 |
22 | ACTIONS
23 |
24 | finishPrompt
25 | id
26 | toggleMoreInfo
27 | id
28 |
29 | CLASS
30 | SUUpdatePermissionPrompt
31 | LANGUAGE
32 | ObjC
33 | OUTLETS
34 |
35 | delegate
36 | id
37 | descriptionTextField
38 | NSTextField
39 | moreInfoButton
40 | NSButton
41 | moreInfoView
42 | NSView
43 |
44 | SUPERCLASS
45 | SUWindowController
46 |
47 |
48 | CLASS
49 | FirstResponder
50 | LANGUAGE
51 | ObjC
52 | SUPERCLASS
53 | NSObject
54 |
55 |
56 | IBVersion
57 | 1
58 |
59 |
60 |
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdatePermissionPrompt.nib/classes.nib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IBClasses
6 |
7 |
8 | CLASS
9 | SUWindowController
10 | LANGUAGE
11 | ObjC
12 | SUPERCLASS
13 | NSWindowController
14 |
15 |
16 | ACTIONS
17 |
18 | finishPrompt
19 | id
20 | toggleMoreInfo
21 | id
22 |
23 | CLASS
24 | SUUpdatePermissionPrompt
25 | LANGUAGE
26 | ObjC
27 | OUTLETS
28 |
29 | delegate
30 | id
31 | descriptionTextField
32 | NSTextField
33 | moreInfoButton
34 | NSButton
35 | moreInfoView
36 | NSView
37 |
38 | SUPERCLASS
39 | SUWindowController
40 |
41 |
42 | CLASS
43 | FirstResponder
44 | LANGUAGE
45 | ObjC
46 | SUPERCLASS
47 | NSObject
48 |
49 |
50 | CLASS
51 | NSObject
52 | LANGUAGE
53 | ObjC
54 |
55 |
56 | IBVersion
57 | 1
58 |
59 |
60 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | SwissSMS
2 | ========
3 |
4 | `Starting from https://code.google.com/p/swisssms/ r509.`
5 |
6 | SwissSMS is a **legacy** Mac OS X front-end to SMS operators services.
7 |
8 | It stores your outgoing messages and can export them too.
9 |
10 | If you can code, then you can easily add support for your own operator! See the API and the plugin template.
11 |
12 | SwissSMS is tightly integrated with Mac OS X and features:
13 |
14 | * Address Book integration
15 | * an Address Book plugin
16 | * an Automator Action
17 | * a Spotlight importer
18 | * a command-line mode (think sending sms from your scripts)
19 |
20 | 2009-10-04: version 1.9.12
21 | - fixed ETHZ plugin (Thomas Steinacher)
22 | - fixed Sunrise plugin (Christian Rüegg)
23 | - fixed Citycable plugin
24 | - faster lookup in Address Book
25 |
26 | 2009-09-22: version 1.9.11
27 | - new ETHZ plugin by Michael Belfrage
28 | - fixed Orange plugin
29 | - fixed a potential crash
30 |
31 | 2009-08-20: version 1.9.10
32 | - fixed Hispeed plugin problem that appeared with Mac OS X 10.5.8
33 |
34 | 2009-08-04: version 1.9.9
35 | - fixed the CoopMobile plugin
36 |
37 | 2009-03-30: version 1.9.8
38 | - new mjoy.com plugin (international)
39 | - fixed memory leaks
40 |
41 | 2009-01-17: version 1.9.7
42 | - fixed Orange plugin
43 |
44 | 2008-12-31: version 1.9.6
45 | - fixed Hispeed plugin problem that appeared with Mac OS X 10.5.6
46 |
47 | 2008-12-01: version 1.9.5
48 | - updated Yallo plugin (A. Anjos)
49 |
50 | Nightly build: [http://seriot.ch/temp/SwissSMS.app.zip](http://seriot.ch/temp/SwissSMS.app.zip)
51 |
52 | 
53 |
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdateAlert.nib/classes.nib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IBClasses
6 |
7 |
8 | CLASS
9 | SUWindowController
10 | LANGUAGE
11 | ObjC
12 | SUPERCLASS
13 | NSWindowController
14 |
15 |
16 | CLASS
17 | NSApplication
18 | LANGUAGE
19 | ObjC
20 | SUPERCLASS
21 | NSResponder
22 |
23 |
24 | ACTIONS
25 |
26 | installUpdate
27 | id
28 | remindMeLater
29 | id
30 | skipThisVersion
31 | id
32 |
33 | CLASS
34 | SUUpdateAlert
35 | LANGUAGE
36 | ObjC
37 | OUTLETS
38 |
39 | delegate
40 | id
41 | description
42 | NSTextField
43 | releaseNotesView
44 | WebView
45 |
46 | SUPERCLASS
47 | SUWindowController
48 |
49 |
50 | CLASS
51 | FirstResponder
52 | LANGUAGE
53 | ObjC
54 | SUPERCLASS
55 | NSObject
56 |
57 |
58 | CLASS
59 | NSObject
60 | LANGUAGE
61 | ObjC
62 |
63 |
64 | IBVersion
65 | 1
66 |
67 |
68 |
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib/classes.nib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IBClasses
6 |
7 |
8 | CLASS
9 | SUWindowController
10 | LANGUAGE
11 | ObjC
12 | SUPERCLASS
13 | NSWindowController
14 |
15 |
16 | CLASS
17 | NSApplication
18 | LANGUAGE
19 | ObjC
20 | SUPERCLASS
21 | NSResponder
22 |
23 |
24 | ACTIONS
25 |
26 | installUpdate
27 | id
28 | remindMeLater
29 | id
30 | skipThisVersion
31 | id
32 |
33 | CLASS
34 | SUUpdateAlert
35 | LANGUAGE
36 | ObjC
37 | OUTLETS
38 |
39 | delegate
40 | id
41 | description
42 | NSTextField
43 | releaseNotesView
44 | WebView
45 |
46 | SUPERCLASS
47 | SUWindowController
48 |
49 |
50 | CLASS
51 | FirstResponder
52 | LANGUAGE
53 | ObjC
54 | SUPERCLASS
55 | NSObject
56 |
57 |
58 | CLASS
59 | NSObject
60 | LANGUAGE
61 | ObjC
62 |
63 |
64 | IBVersion
65 | 1
66 |
67 |
68 |
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdateAlert.nib/classes.nib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IBClasses
6 |
7 |
8 | CLASS
9 | SUWindowController
10 | LANGUAGE
11 | ObjC
12 | SUPERCLASS
13 | NSWindowController
14 |
15 |
16 | CLASS
17 | NSApplication
18 | LANGUAGE
19 | ObjC
20 | SUPERCLASS
21 | NSResponder
22 |
23 |
24 | ACTIONS
25 |
26 | installUpdate
27 | id
28 | remindMeLater
29 | id
30 | skipThisVersion
31 | id
32 |
33 | CLASS
34 | SUUpdateAlert
35 | LANGUAGE
36 | ObjC
37 | OUTLETS
38 |
39 | delegate
40 | id
41 | description
42 | NSTextField
43 | releaseNotesView
44 | WebView
45 |
46 | SUPERCLASS
47 | SUWindowController
48 |
49 |
50 | CLASS
51 | FirstResponder
52 | LANGUAGE
53 | ObjC
54 | SUPERCLASS
55 | NSObject
56 |
57 |
58 | CLASS
59 | NSObject
60 | LANGUAGE
61 | ObjC
62 |
63 |
64 | IBVersion
65 | 1
66 |
67 |
68 |
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdateAlert.nib/classes.nib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IBClasses
6 |
7 |
8 | CLASS
9 | SUWindowController
10 | LANGUAGE
11 | ObjC
12 | SUPERCLASS
13 | NSWindowController
14 |
15 |
16 | CLASS
17 | NSApplication
18 | LANGUAGE
19 | ObjC
20 | SUPERCLASS
21 | NSResponder
22 |
23 |
24 | ACTIONS
25 |
26 | installUpdate
27 | id
28 | remindMeLater
29 | id
30 | skipThisVersion
31 | id
32 |
33 | CLASS
34 | SUUpdateAlert
35 | LANGUAGE
36 | ObjC
37 | OUTLETS
38 |
39 | delegate
40 | id
41 | description
42 | NSTextField
43 | releaseNotesView
44 | WebView
45 |
46 | SUPERCLASS
47 | SUWindowController
48 |
49 |
50 | CLASS
51 | FirstResponder
52 | LANGUAGE
53 | ObjC
54 | SUPERCLASS
55 | NSObject
56 |
57 |
58 | CLASS
59 | NSObject
60 | LANGUAGE
61 | ObjC
62 |
63 |
64 | IBVersion
65 | 1
66 |
67 |
68 |
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdateAlert.nib/classes.nib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IBClasses
6 |
7 |
8 | CLASS
9 | SUWindowController
10 | LANGUAGE
11 | ObjC
12 | SUPERCLASS
13 | NSWindowController
14 |
15 |
16 | CLASS
17 | NSApplication
18 | LANGUAGE
19 | ObjC
20 | SUPERCLASS
21 | NSResponder
22 |
23 |
24 | ACTIONS
25 |
26 | installUpdate
27 | id
28 | remindMeLater
29 | id
30 | skipThisVersion
31 | id
32 |
33 | CLASS
34 | SUUpdateAlert
35 | LANGUAGE
36 | ObjC
37 | OUTLETS
38 |
39 | delegate
40 | id
41 | description
42 | NSTextField
43 | releaseNotesView
44 | WebView
45 |
46 | SUPERCLASS
47 | SUWindowController
48 |
49 |
50 | CLASS
51 | FirstResponder
52 | LANGUAGE
53 | ObjC
54 | SUPERCLASS
55 | NSObject
56 |
57 |
58 | CLASS
59 | NSObject
60 | LANGUAGE
61 | ObjC
62 |
63 |
64 | IBVersion
65 | 1
66 |
67 |
68 |
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib/classes.nib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IBClasses
6 |
7 |
8 | CLASS
9 | SUWindowController
10 | LANGUAGE
11 | ObjC
12 | SUPERCLASS
13 | NSWindowController
14 |
15 |
16 | CLASS
17 | NSApplication
18 | LANGUAGE
19 | ObjC
20 | SUPERCLASS
21 | NSResponder
22 |
23 |
24 | ACTIONS
25 |
26 | installUpdate
27 | id
28 | remindMeLater
29 | id
30 | skipThisVersion
31 | id
32 |
33 | CLASS
34 | SUUpdateAlert
35 | LANGUAGE
36 | ObjC
37 | OUTLETS
38 |
39 | delegate
40 | id
41 | description
42 | NSTextField
43 | releaseNotesView
44 | WebView
45 |
46 | SUPERCLASS
47 | SUWindowController
48 |
49 |
50 | CLASS
51 | FirstResponder
52 | LANGUAGE
53 | ObjC
54 | SUPERCLASS
55 | NSObject
56 |
57 |
58 | CLASS
59 | NSObject
60 | LANGUAGE
61 | ObjC
62 |
63 |
64 | IBVersion
65 | 1
66 |
67 |
68 |
--------------------------------------------------------------------------------
/Frameworks/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdateAlert.nib/classes.nib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IBClasses
6 |
7 |
8 | CLASS
9 | SUWindowController
10 | LANGUAGE
11 | ObjC
12 | SUPERCLASS
13 | NSWindowController
14 |
15 |
16 | CLASS
17 | NSApplication
18 | LANGUAGE
19 | ObjC
20 | SUPERCLASS
21 | NSResponder
22 |
23 |
24 | ACTIONS
25 |
26 | installUpdate
27 | id
28 | remindMeLater
29 | id
30 | skipThisVersion
31 | id
32 |
33 | CLASS
34 | SUUpdateAlert
35 | LANGUAGE
36 | ObjC
37 | OUTLETS
38 |
39 | delegate
40 | id
41 | description
42 | NSTextField
43 | releaseNotesView
44 | WebView
45 |
46 | SUPERCLASS
47 | SUWindowController
48 |
49 |
50 | CLASS
51 | FirstResponder
52 | LANGUAGE
53 | ObjC
54 | SUPERCLASS
55 | NSObject
56 |
57 |
58 | CLASS
59 | NSObject
60 | LANGUAGE
61 | ObjC
62 |
63 |
64 | IBVersion
65 | 1
66 |
67 |
68 |
--------------------------------------------------------------------------------
/PreferencesController.h:
--------------------------------------------------------------------------------
1 | //
2 | // PreferencesController.h
3 | // Simple Preferences
4 | //
5 | // Created by John Devor on 12/24/06.
6 | //
7 | // http://www.indiehig.com/wiki/Preference_Windows
8 | /*
9 | Copyright (c)
10 |
11 | Permission is hereby granted, free of charge, to any person obtaining a copy
12 | of this software and associated documentation files (the "Software"), to deal
13 | in the Software without restriction, including without limitation the rights
14 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
15 | copies of the Software, and to permit persons to whom the Software is
16 | furnished to do so, subject to the following conditions:
17 |
18 | The above copyright notice and this permission notice shall be included in
19 | all copies or substantial portions of the Software.
20 |
21 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
24 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
25 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
26 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
27 | THE SOFTWARE.
28 | */
29 |
30 | #import
31 |
32 |
33 | @interface PreferencesController : NSWindowController
34 | {
35 | IBOutlet NSView *generalPreferenceView;
36 | IBOutlet NSView *updatePreferenceView;
37 | IBOutlet NSView *networkPreferenceView;
38 |
39 | IBOutlet NSView *activeContentView;
40 |
41 | NSString *GeneralToolbarItemIdentifier;
42 | NSString *NetworkToolbarItemIdentifier;
43 | NSString *UpdateToolbarItemIdentifier;
44 | }
45 |
46 | + (PreferencesController *)sharedPreferencesController;
47 |
48 | - (void)toggleActivePreferenceView:(id)sender;
49 | - (void)setActiveView:(NSView *)view animate:(BOOL)flag;
50 |
51 | - (IBAction)openKeychainAccessApp:(id)sender;
52 |
53 | @end
54 |
--------------------------------------------------------------------------------
/NSManagedObjectContext+Metadata.m:
--------------------------------------------------------------------------------
1 | //
2 | // NSManagedObjectContext+Metadata.m
3 | // SwissSMS
4 | //
5 | // Created by Nicolas Seriot on 20.06.08.
6 | // Copyright 2008 Sen:te. All rights reserved.
7 | //
8 |
9 | #import "NSManagedObjectContext+Metadata.h"
10 | #import "Message.h"
11 |
12 | @implementation NSManagedObjectContext (Metadata)
13 |
14 | - (BOOL)saveWithMetadata:(NSError **)error allItems:(BOOL)allItems {
15 |
16 | // ensure metadata directory is present, create it if it is not
17 | // TODO: manage errors
18 | NSString *dir = [[NSApp delegate] valueForKey:@"metadataDirectoryPath"];
19 | BOOL isDir;
20 | //NSLog(@"-- %d", [[NSFileManager defaultManager] fileExistsAtPath:dir isDirectory:&isDir]);
21 | if(![[NSFileManager defaultManager] fileExistsAtPath:dir isDirectory:&isDir]) {
22 | NSString *topDir = [dir stringByDeletingLastPathComponent];
23 | //NSLog(@"-- %d", [[NSFileManager defaultManager] fileExistsAtPath:topDir isDirectory:&isDir]);
24 | if(![[NSFileManager defaultManager] fileExistsAtPath:topDir isDirectory:&isDir]) {
25 | BOOL dirCreated = [[NSFileManager defaultManager] createDirectoryAtPath:topDir attributes:nil];
26 | NSLog(@"created %d %@", dirCreated, topDir);
27 | }
28 |
29 | if(![[NSFileManager defaultManager] fileExistsAtPath:dir isDirectory:&isDir]) {
30 | BOOL dirCreated = [[NSFileManager defaultManager] createDirectoryAtPath:dir attributes:nil];
31 | NSLog(@"created %d %@", dirCreated, dir);
32 | }
33 | }
34 | /*
35 | if(allItems) {
36 |
37 | }
38 | */
39 | NSSet *insert = allItems ? [Message allObjectsInContext:self] : [[[self insertedObjects] copy] autorelease];
40 | NSSet *remove = [[[self deletedObjects] copy] autorelease];
41 |
42 | if(![self save:error]) {
43 | NSLog(@"could not save database");
44 | [remove release];
45 | return NO;
46 | }
47 |
48 | [remove makeObjectsPerformSelector:@selector(removeMetadataFile)];
49 | [insert makeObjectsPerformSelector:@selector(writeMetadataFile)];
50 | /*
51 | if(!allItems) {
52 | [insert release];
53 | }
54 | [remove release];
55 | */
56 | return YES;
57 | }
58 |
59 | - (BOOL)saveWithMetadata:(NSError **)error {
60 | return [self saveWithMetadata:error allItems:NO];
61 | }
62 |
63 | @end
64 |
--------------------------------------------------------------------------------
/ABPerson_SwissSMS_AIM.m:
--------------------------------------------------------------------------------
1 | //
2 | // ABPerson_SwissSMS.m
3 | // SwissSMS
4 | //
5 | // Created by Nicolas Seriot on 02.10.07.
6 | // Copyright 2007 Nicolas Seriot. All rights reserved.
7 | //
8 |
9 | #import "ABPerson_SwissSMS_AIM.h"
10 | #import "NSString_SwissSMS.h"
11 | #import "IMService_TigerCompat.h"
12 |
13 | #import
14 | #import
15 |
16 | #ifndef NSAppKitVersionNumber10_4
17 | #define NSAppKitVersionNumber10_4 824
18 | #endif
19 |
20 | @implementation ABPerson (SwissSMS_AIM)
21 |
22 | - (void)dealloc {
23 | [super dealloc];
24 | }
25 |
26 | - (NSString *)aimScreenName {
27 | IMService *aim = [IMService serviceWithName:@"AIM"];
28 | if(aim == nil) {
29 | return nil;
30 | }
31 |
32 | NSArray *screenNames = [aim screenNamesForPerson:self];
33 | NSNumber *status = [NSNumber numberWithInt:0];
34 | NSEnumerator *e = [screenNames objectEnumerator];
35 | NSString *sn;
36 | NSString *screenNameWithBestStatus = nil;
37 | NSNumber *tempStatus;
38 | while((sn = [e nextObject])) {
39 | tempStatus = [[aim infoForScreenName:sn] valueForKey:IMPersonStatusKey];
40 | if(tempStatus != nil && [tempStatus intValue] > [status intValue]) {
41 | status = tempStatus;
42 | screenNameWithBestStatus = sn;
43 | }
44 | }
45 |
46 | return screenNameWithBestStatus ? screenNameWithBestStatus : nil;
47 | }
48 |
49 | - (NSNumber *)aimStatus {
50 | IMService *aim = [IMService serviceWithName:@"AIM"];
51 | if(aim == nil) {
52 | return nil;
53 | }
54 |
55 | NSString *screenName = [self aimScreenName];
56 |
57 | if(screenName == nil) {
58 | return nil;
59 | }
60 |
61 | return [[aim infoForScreenName:screenName] valueForKey:IMPersonStatusKey];
62 | }
63 |
64 | - (NSImage *)imageDataForCurrentIMStatus {
65 | int aimStatus = [[self aimStatus] intValue];
66 |
67 | if(floor(NSAppKitVersionNumber) <= NSAppKitVersionNumber10_4) {
68 | return [[[NSImage alloc] initWithContentsOfURL:[IMService imageURLForStatus:aimStatus]] autorelease]; // 10.4
69 | } else {
70 | return [NSImage imageNamed:[IMService imageNameForStatus:aimStatus]]; // 10.5
71 | }
72 | }
73 |
74 | @end
75 |
--------------------------------------------------------------------------------
/NSWorkspace_SwissSMS.m:
--------------------------------------------------------------------------------
1 | //
2 | // NSWorkspace_SwissSMS.m
3 | // SwissSMS
4 | //
5 | // Created by Nicolas Seriot on 03.05.07.
6 | // Copyright 2007 Nicolas Seriot. All rights reserved.
7 | //
8 |
9 | #import "NSWorkspace_SwissSMS.h"
10 |
11 |
12 | @implementation NSWorkspace (SwissSMS)
13 |
14 | // from http://www.cocoadev.com/index.pl?QuitApplicationUsingAppleEvent
15 | - (OSStatus) quitApplicationWithBundleID:(NSString*)bundleID {
16 | OSStatus result = noErr;
17 | AEAddressDesc target = {};
18 | AEInitializeDesc(&target);
19 |
20 | const char *bundleIDString = [bundleID UTF8String];
21 |
22 | result = AECreateDesc( typeApplicationBundleID, bundleIDString, strlen(bundleIDString), &target );
23 | if ( result == noErr ) {
24 | AppleEvent event = {};
25 | AEInitializeDesc(&event);
26 |
27 | result = AECreateAppleEvent( kCoreEventClass, kAEQuitApplication, &target, kAutoGenerateReturnID, kAnyTransactionID, &event );
28 |
29 | if ( result == noErr ) {
30 | AppleEvent reply = {};
31 | AEInitializeDesc(&reply);
32 | result = AESendMessage( &event, &reply, kAENoReply, 60 );
33 | AEDisposeDesc( &event );
34 | }
35 | AEDisposeDesc( &target );
36 | }
37 | return( result );
38 | }
39 |
40 | - (BOOL)appIsRunning:(NSString *)appName {
41 | return [[[[NSWorkspace sharedWorkspace] runningApplications] valueForKey:@"localizedName"] containsObject:appName];
42 | }
43 |
44 | - (void)openIMClientForScreenName:(NSString *)screenName message:(NSString *)message {
45 | if(screenName == nil || [screenName isEqualToString:@""]) {
46 | return;
47 | }
48 |
49 | NSMutableString *aimFormattedMessage = message ? [[message mutableCopy] autorelease] : [NSMutableString stringWithString:@""];
50 | [aimFormattedMessage replaceOccurrencesOfString:@" "
51 | withString:@"+"
52 | options:(unsigned)NULL
53 | range:NSMakeRange(0, [aimFormattedMessage length])];
54 |
55 | //aim:goim?screenname=abcdef&message=Hi.+Are+you+there?
56 | NSString *urlString = [NSString stringWithFormat:@"aim:goim?screenname=%@&message=%@", screenName, aimFormattedMessage];
57 | NSURL *url = [NSURL URLWithString:urlString];
58 | [[NSWorkspace sharedWorkspace] openURL:url];
59 | }
60 |
61 | @end
62 |
--------------------------------------------------------------------------------
/AbstractSender.h:
--------------------------------------------------------------------------------
1 | #import
2 | #import
3 |
4 | #define API_VERSION 0.1
5 |
6 | @interface AbstractSender : NSObject {
7 | NSData *imageData;
8 | }
9 |
10 | typedef enum {
11 | SS_SENDING_OK = 0,
12 | SS_SENDING_ERROR,
13 | SS_LOGIN_OK,
14 | SS_LOGIN_ERROR,
15 | SS_KEYCHAIN_ERROR,
16 | SS_QUOTA_EXCEEDED,
17 | SS_NO_INTERNET_ERROR,
18 | SS_ADDRESS_BOOK_ERROR,
19 | SS_MESSAGE_ENCODING_ERROR,
20 | SS_SERVICE_UNAVAILABLE_ERROR,
21 | SS_CLI_ERROR,
22 | SS_PLUGIN_INTERNAL_ERROR,
23 | } SwissSMSSendingStatus;
24 |
25 | + (id)sharedSender;
26 |
27 | #pragma mark default implentation, don't redefine this
28 |
29 | - (unsigned)numberOfMessagesForString:(NSString *)s;
30 |
31 | #pragma mark default implentation, can be redefined by subclasses
32 |
33 | // service image
34 | - (NSData *)imageData;
35 |
36 | // service name
37 | - (NSString *)name;
38 |
39 | // max chars allowed
40 | - (int)maxChars;
41 |
42 | // true is plugin needs login and password
43 | - (BOOL)needsLoginAndPassword;
44 |
45 | // return the country code according to wikipedia (TODO), use 'int' for international or undefined
46 | - (NSString *)countryCode;
47 |
48 | // plugin version number, increment from 0.1, use X.X or X.X.X. if not implemented, 0.0 is assumed
49 | - (NSString *)version;
50 |
51 | // author name
52 | - (NSString *)author;
53 |
54 | // the version of the API the plugin is using
55 | - (NSString *)apiVersion;
56 |
57 | #pragma mark mandatory subclass implentation
58 |
59 | // login
60 | - (SwissSMSSendingStatus)login:(NSString *)login password:(NSString *)password;
61 |
62 | // send the message
63 | - (SwissSMSSendingStatus)sendMessage:(NSString *)message toNumber:(NSString *)phoneNumber;
64 |
65 | // returns a valid phone number for the service, else return nil
66 | - (NSString *)normalizePhoneNumber:(NSString *)rawString;
67 |
68 | #pragma mark optional subclass implentation
69 |
70 | // update check
71 | - (NSString *)latestVersionNumber;
72 | - (NSString *)latestVersionURL;
73 | - (NSString *)pluginWebsiteURL;
74 |
75 | // remaining messages allowed
76 | - (int)remainingMessagesAllowed;
77 |
78 | // logout - will be performed on service change or application quiting
79 | - (BOOL)logout;
80 |
81 | #pragma mark keychain storage
82 |
83 | - (SecProtocolType)serviceProtocol;
84 | - (NSString *)serviceServerName;
85 |
86 |
87 | @end
88 |
--------------------------------------------------------------------------------
/HTMLForm.h:
--------------------------------------------------------------------------------
1 | /*!
2 | @header HTMLForm
3 | @abstract Retrieve, fill and submit HTML forms
4 |
5 | @copyright Copyright 2007 Cédric Luthi.
6 | */
7 |
8 | #import
9 |
10 | /*!
11 | @abstract HTMLForm error domain
12 | @discussion See the Error codes
13 | section for all error codes belonging to this domain.
14 | @constant HTMLFormErrorDomain
15 | */
16 | extern NSString * const HTMLFormErrorDomain;
17 |
18 | /*!
19 | @abstract HTMLForm user error domain
20 | @discussion Constants used by NSError to differentiate between "domains" of error codes,
21 | serving as a discriminator for error codes that originate from different subsystems or sources.
22 | @constant HTMLFormUserErrorDomain
23 | */
24 | extern NSString * const HTMLFormUserErrorDomain;
25 |
26 | /*!
27 | @enum Error codes
28 | @abstract Constants used by the HTMLFormErrorDomain.
29 | @discussion Documentation on each constant forthcoming.
30 | */
31 | enum
32 | {
33 | HTMLFormErrorNoSuchNamedForm = -1,
34 | HTMLFormErrorNoSuchUnnamedForm = -2,
35 |
36 | HTMLFormErrorUnexpectedFormReply = -100,
37 | };
38 |
39 | /*!
40 | @class HTMLForm
41 | @abstract The HTMLForm class represents a HTML form, as defined in the HTML 4.01 Specification
42 | */
43 | @interface HTMLForm : NSObject {
44 |
45 | NSURL *fAction;
46 | NSString *fName;
47 | NSString *fMethod;
48 |
49 | NSMutableDictionary *fFields;
50 |
51 | NSXMLDocument *fDocument;
52 |
53 | }
54 |
55 | + (NSString *)userAgent;
56 | + (void)setUserAgent:(NSString *)userAgent;
57 |
58 | + (id)formNamed:(NSString *)formName atURL:(NSURL *)documentURL error:(NSError **)error;
59 | - (id)initWithFormNamed:(NSString *)formName atURL:(NSURL *)documentURL error:(NSError **)error;
60 |
61 | /*!
62 | @method valueForField:
63 | @param fieldName The name of the field
64 | @return The value associated with fieldName, or nil if no value is associated with fieldName.
65 | */
66 | - (NSString *)valueForField:(NSString *)fieldName;
67 |
68 | - (void)setValue:(NSString *)fieldValue forField:(NSString *)fieldName;
69 | - (void)removeField:(NSString *)fieldName;
70 |
71 | - (BOOL)submitExpectingSuccess:(NSString *)successXpath failures:(NSArray *)failuresXpaths error:(NSError **)error;
72 |
73 |
74 | @end
75 |
--------------------------------------------------------------------------------
/info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | English
7 | CFBundleDocumentTypes
8 |
9 |
10 | CFBundleTypeExtensions
11 |
12 | swisssms
13 |
14 | CFBundleTypeIconFile
15 | SwissSMSDocument.icns
16 | CFBundleTypeName
17 | SwissSMS Message
18 | CFBundleTypeRole
19 | Editor
20 | LSItemContentTypes
21 |
22 | ch.seriot.swisssms
23 |
24 | LSTypeIsPackage
25 |
26 | NSPersistentStoreTypeKey
27 | XML
28 |
29 |
30 | CFBundleExecutable
31 | ${EXECUTABLE_NAME}
32 | CFBundleHelpBookFolder
33 | SwissSMS Help
34 | CFBundleHelpBookName
35 | SwissSMS Help
36 | CFBundleIconFile
37 | SwissSMS
38 | CFBundleIdentifier
39 | ch.seriot.SwissSMS
40 | CFBundleInfoDictionaryVersion
41 | 6.0
42 | CFBundleName
43 | ${PRODUCT_NAME}
44 | CFBundlePackageType
45 | APPL
46 | CFBundleShortVersionString
47 | ${SHORT_VERSION_STRING}
48 | CFBundleSignature
49 | SwSm
50 | CFBundleVersion
51 | 0
52 | FeedbackEmail
53 | swisssms@seriot.ch
54 | NSMainNibFile
55 | MainMenu
56 | NSPrincipalClass
57 | NSApplication
58 | SUFeedURL
59 | http://swisssms.googlecode.com/svn/trunk/appcast.xml
60 | UTExportedTypeDeclarations
61 |
62 |
63 | UTTypeConformsTo
64 |
65 | public.data
66 |
67 | UTTypeDescription
68 | SwissSMS Message
69 | UTTypeIdentifier
70 | ch.seriot.swisssms
71 | UTTypeTagSpecification
72 |
73 | public.filename-extension
74 | swisssms
75 |
76 |
77 |
78 |
79 |
80 |
--------------------------------------------------------------------------------
/Address Book plugin/SwissSMSABPlugin.m:
--------------------------------------------------------------------------------
1 | //
2 | // SwissSMSABPlugin.m
3 | // SwissSMSABPlugin
4 | //
5 | // Created by Cédric Luthi on 18.11.07.
6 | // Copyright Cédric Luthi 2007. All rights reserved.
7 | //
8 |
9 | #import "SwissSMSABPlugin.h"
10 | #import "ABPerson_SwissSMS.h"
11 | #import "NSWorkspace_SwissSMS.h"
12 |
13 | @implementation SwissSMSABPlugin
14 |
15 | - (NSString *)actionProperty
16 | {
17 | /* Unfortuantely, kABPhoneMobileLabel does not work as one would expect, i.e. enable
18 | the contextual menu only on the mobile phone number */
19 | return kABPhoneProperty;
20 | }
21 |
22 | - (NSString *)titleForPerson:(ABPerson *)person identifier:(NSString *)identifier
23 | {
24 | return NSLocalizedStringFromTableInBundle(@"Send SMS", nil, [NSBundle bundleForClass:[self class]], "Send SMS Address Book contextual menu");
25 | }
26 |
27 | - (void)addPerson:(ABPerson *)person
28 | {
29 | NSDistributedNotificationCenter *dnc = [NSDistributedNotificationCenter defaultCenter];
30 |
31 | [dnc postNotificationName:@"ch.seriot.SwissSMS.addPersonWithId"
32 | object:[person uniqueId]
33 | userInfo:nil
34 | deliverImmediately:NO];
35 | }
36 |
37 | - (void)performActionForPerson:(ABPerson *)person identifier:(NSString *)identifier
38 | {
39 | if([[NSWorkspace sharedWorkspace] appIsRunning:@"SwissSMS"] == NO) {
40 | // See comment on applicationDidLaunch: below
41 | // [[[NSWorkspace sharedWorkspace] notificationCenter] addObserver:self selector:@selector(applicationDidLaunch:) name:NSWorkspaceDidLaunchApplicationNotification object:person];
42 | // For now we poll every half second
43 | [[NSWorkspace sharedWorkspace] launchApplication:@"SwissSMS"];
44 | while ([[NSWorkspace sharedWorkspace] appIsRunning:@"SwissSMS"] == NO) {
45 | [NSThread sleepUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.5]];
46 | }
47 | }
48 | [self addPerson:person];
49 | }
50 |
51 | /* The right way is to use this callback, but unfortunately, applicationDidLaunch: is not called
52 | I have no idea why and I have no idea how to debug a notification that is not sent (or received)
53 | - (void) applicationDidLaunch:(NSNotification *)notification
54 | {
55 | NSLog(@"applicationDidLaunch: %@", notification);
56 | if ([[notification valueForKey:@"NSApplicationName"] isEqualToString:@"SwissSMS"]) {
57 | [self addPerson:[notification object]];
58 | [[[NSWorkspace sharedWorkspace] notificationCenter] removeObserver:self];
59 | }
60 | }
61 | */
62 |
63 | - (BOOL)shouldEnableActionForPerson:(ABPerson *)person identifier:(NSString *)identifier
64 | {
65 | return [person mobilePhoneNumber] != nil;
66 | }
67 |
68 | @end
69 |
--------------------------------------------------------------------------------
/Automator action/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | AMAccepts
6 |
7 | Container
8 | List
9 | Optional
10 |
11 | Types
12 |
13 | com.apple.addressbook.item-object
14 | com.apple.addressbook.person-object
15 | com.apple.addressbook.group-object
16 |
17 |
18 | AMApplication
19 | SwissSMS
20 | AMCanShowSelectedItemsWhenRun
21 |
22 | AMCanShowWhenRun
23 |
24 | AMCategory
25 | AMCategoryInternet
26 | AMDefaultParameters
27 |
28 | message
29 |
30 |
31 | AMDescription
32 |
33 | AMDNote
34 | The SMS will be sent through the network you have chosen in SwissSMS preferences.
35 | AMDRelatedActions
36 | com.apple.Automator.GetSpecifiedAddressBookItems
37 | AMDSummary
38 | This action sends a sms to the person(s) and/or group(s) passed from the previous action.
39 |
40 | AMIconName
41 | SwissSMS
42 | AMKeywords
43 |
44 | Send
45 | SMS
46 |
47 | AMName
48 | Send SMS
49 | AMProvides
50 |
51 | Container
52 | List
53 | Types
54 |
55 | com.apple.applescript.object
56 |
57 |
58 | AMRequiredResources
59 |
60 | CFBundleDevelopmentRegion
61 | English
62 | CFBundleExecutable
63 | ${EXECUTABLE_NAME}
64 | CFBundleIconFile
65 |
66 | CFBundleIdentifier
67 | ch.seriot.SwissSMS.amaction.sendsms
68 | CFBundleInfoDictionaryVersion
69 | 6.0
70 | CFBundleName
71 | ${PRODUCT_NAME}
72 | CFBundlePackageType
73 | BNDL
74 | CFBundleShortVersionString
75 | ${SHORT_VERSION_STRING}
76 | CFBundleSignature
77 | SwSm
78 | CFBundleVersion
79 | 0
80 | NSPrincipalClass
81 | Send_SMS
82 |
83 |
84 |
--------------------------------------------------------------------------------
/Plugins/RomandieCH/RomandieCH.m:
--------------------------------------------------------------------------------
1 | //
2 | // RomandieCH.m
3 | // SMSRomandie
4 | //
5 | // Created by Nicolas Seriot on 08.11.06.
6 | // Copyright 2006 Nicolas Seriot. All rights reserved.
7 | //
8 |
9 | #import "RomandieCH.h"
10 | #import "NSString+SMSSender.h"
11 |
12 | @implementation RomandieCH
13 |
14 | - (SwissSMSSendingStatus)login:(NSString *)login password:(NSString *)password {
15 | return SS_LOGIN_OK;
16 | }
17 |
18 | - (SwissSMSSendingStatus)sendOneMessage:(NSString *)message toNumber:(NSString *)phoneNumber {
19 | SwissSMSSendingStatus status = SS_SENDING_OK;
20 | NSError *err = nil;
21 |
22 | NSURL *baseURL = [NSURL URLWithString:@"http://www.romandie.com/Mobile/SMS%5Ftel/"];
23 | NSString *dateUrlComponent = [baseURL propertyForKey:@"Location"]; // ../SMS_tel150508/
24 | NSURL *controleURL = [NSURL URLWithString:[NSString stringWithFormat:@"http://www.romandie.com/Mobile/SMS_tel150508/%@controle.asp", dateUrlComponent]];
25 | HTMLForm *form = [[HTMLForm alloc] initWithFormNamed:@"sms_input" atURL:controleURL error:&err];
26 |
27 | if (err) {
28 | if ([[err domain] isEqualToString:NSURLErrorDomain]) {
29 | status = SS_NO_INTERNET_ERROR;
30 | goto abort;
31 | } else {
32 | // No "sms_input" form, assume a redirect to http://www.romandie.com/Mobile/SMS%5Ftel/NotAllow.asp (quota is over)
33 | status = SS_QUOTA_EXCEEDED;
34 | goto abort;
35 | }
36 | }
37 |
38 | NSMutableString *formattedPhoneNumber = [NSMutableString stringWithString:phoneNumber];
39 | [formattedPhoneNumber replaceOccurrencesOfString:@"0" withString:@"+41" options:nil range:NSMakeRange(0, 4)];
40 |
41 | [form setValue:formattedPhoneNumber forField:@"MSISDN"]; // SIGTRAP here
42 | [form setValue:message forField:@"TXT"];
43 |
44 | BOOL success = [form submitExpectingSuccess:[NSString stringWithUTF8String:"//text()[matches(.,'Votre SMS est parti avec succès')]"]
45 | failures:[NSArray arrayWithObject:[NSString stringWithUTF8String:"//text()[matches(.,'Votre message n.a pu être envoyé correctement')]"]] error:&err];
46 |
47 | if (success) {
48 | if (err == nil) {
49 | status = SS_SENDING_OK;
50 | } else {
51 | status = SS_SENDING_ERROR; // Probably wrong phone number
52 | }
53 | } else {
54 | if ([[err domain] isEqualToString:NSURLErrorDomain]) {
55 | status = SS_NO_INTERNET_ERROR;
56 | } else {
57 | status = SS_PLUGIN_INTERNAL_ERROR;
58 | }
59 | }
60 |
61 | abort:
62 | [form release];
63 | return status;
64 | }
65 |
66 | // returns a valid phone number for the service, else return nil
67 | - (NSString *)normalizePhoneNumber:(NSString *)rawString {
68 | if(!rawString) return nil;
69 | return [rawString normalizedSwissGSMPhoneNumber];
70 | }
71 |
72 | - (void)dealloc{
73 | [super dealloc];
74 | }
75 |
76 | @end
77 |
--------------------------------------------------------------------------------
/SwissSMS_AppDelegate+TokenField.m:
--------------------------------------------------------------------------------
1 | //
2 | // SwissSMS_AppDelegate+TokenField.m
3 | // SwissSMS
4 | //
5 | // Created by Nicolas Seriot on 08.10.07.
6 | // Copyright 2007 __MyCompanyName__. All rights reserved.
7 | //
8 |
9 | #import "SwissSMS_AppDelegate+TokenField.h"
10 | #import "ABPerson_SwissSMS.h"
11 | #import "NSString_SwissSMS.h"
12 | #import "SSRecipient.h"
13 |
14 | @implementation SwissSMS_AppDelegate (TokenField)
15 |
16 | - (id)tokenField:(NSTokenField *)tokenField representedObjectForEditingString:(NSString *)editingString {
17 | NSObject *r = [SSRecipient findRecipientFromObject:editingString];
18 | return r ? r : editingString;
19 | }
20 |
21 | - (NSString *)tokenField:(NSTokenField *)tokenField displayStringForRepresentedObject:(id)representedObject {
22 | return [representedObject name];
23 | }
24 |
25 | - (NSArray *)tokenField:(NSTokenField *)tokenField shouldAddObjects:(NSArray *)tokens atIndex:(unsigned)index {
26 | NSPredicate *validPhonesPredicate = [NSPredicate predicateWithFormat: @"phone != NULL"];
27 | return [tokens filteredArrayUsingPredicate:validPhonesPredicate];
28 | }
29 | /*
30 | - (BOOL)tokenField:(NSTokenField *)tokenField hasMenuForRepresentedObject:(id)representedObject {
31 | // TODO handle ABPerson instances with several mobile numbers?
32 | return NO;
33 | }
34 |
35 | - (NSMenu *)tokenField:(NSTokenField *)tokenField menuForRepresentedObject:(id)representedObject {
36 | // TODO handle ABPerson instances with several mobile numbers?
37 | return nil;
38 | }
39 | */
40 | - (NSArray *)tokenField:(NSTokenField *)tokenField completionsForSubstring:(NSString *)substring indexOfToken:(int)tokenIndex indexOfSelectedItem:(int *)selectedIndex {
41 | BOOL showAllContacts = [substring hasPrefix:@"*"] || [substring hasPrefix:@"?"];
42 | if(showAllContacts) {
43 | NSPredicate *peopleWithValidNumber = [NSPredicate predicateWithFormat: @"fullname != NULL"];
44 | NSArray *validNumberPeople = [[abPersonController arrangedObjects] filteredArrayUsingPredicate:peopleWithValidNumber];
45 | return [validNumberPeople valueForKey:@"fullname"];
46 | }
47 |
48 | NSPredicate *peopleWithSameBeginningPredicate = [NSPredicate predicateWithFormat: @"fullname beginswith[c] %@", substring];
49 | NSArray *filteredPeople = [[abPersonController arrangedObjects] filteredArrayUsingPredicate:peopleWithSameBeginningPredicate];
50 | return [filteredPeople valueForKey:@"fullname"];
51 | }
52 | /*
53 | - (void)controlTextDidChange:(NSNotification *)aNotification {
54 | NSObject *o = (recipients && [recipients count] > 0) ? [recipients lastObject] : nil;
55 | if(![o isKindOfClass:[NSString class]]) {
56 | NSObject *recipient = [SSRecipient findRecipientFromObject:(id)o];
57 | [self setValue:recipient forKey:@"firstRecipient"]; // 2 // 3
58 | }
59 | }
60 | */
61 | @end
62 |
--------------------------------------------------------------------------------
/PhoneNumberFormatTest.m:
--------------------------------------------------------------------------------
1 | //
2 | // PhoneNumberFormatTest.m
3 | // SwissSMS
4 | //
5 | // Created by Nicolas Seriot on 18.11.07.
6 | // Copyright 2007 __MyCompanyName__. All rights reserved.
7 | //
8 |
9 | #import "PhoneNumberFormatTest.h"
10 | #import
11 |
12 | @implementation PhoneNumberFormatTest
13 |
14 | - (void) setUp {
15 | }
16 |
17 | - (void) tearDown {
18 | }
19 |
20 | - (void) testnormalizedSwissGSMPhoneNumber {
21 | NSString *n = @"0781234567";
22 | NSString *s;
23 | int i;
24 |
25 | NSArray *good = [NSArray arrayWithObjects:n, @"+41781234567", @"0041781234567", @"078 / 1234567", nil];
26 | for(i = 0; i < [good count]; i++) {
27 | s = [good objectAtIndex:i];
28 | STAssertEqualObjects([s normalizedSwissGSMPhoneNumber], n, @"[NSString +normalizedSwissGSMPhoneNumber] did return %@ instead of %@", [s normalizedSwissGSMPhoneNumber], n);
29 | }
30 |
31 | NSArray *bad = [NSArray arrayWithObjects:@"0001234567", @"078123456", @"07812345678", @"abc", nil];
32 | for(i = 0; i < [bad count]; i++) {
33 | s = [bad objectAtIndex:i];
34 | STAssertNil([s normalizedSwissGSMPhoneNumber], @"[NSString +normalizedSwissGSMPhoneNumber] did return %@ instead of %@", [s normalizedSwissGSMPhoneNumber], nil);
35 | }
36 |
37 | }
38 |
39 | - (void) testNormalizedInternationalNumberWithZero {
40 | NSString *n = @"0033612345678";
41 | NSString *s;
42 | int i;
43 |
44 | NSArray *good = [NSArray arrayWithObjects:n, @"+33612345678", @"0033-6-12345678", nil];
45 | for(i = 0; i < [good count]; i++) {
46 | s = [good objectAtIndex:i];
47 | STAssertEqualObjects([s normalizedInternationalNumberWithZero], n, @"[NSString +normalizedInternationalNumberWithZero] did return %@ instead of %@", [s normalizedInternationalNumberWithZero], n);
48 | }
49 |
50 | NSArray *bad = [NSArray arrayWithObjects:@"9933012345678", @"abc", nil];
51 | for(i = 0; i < [bad count]; i++) {
52 | s = [bad objectAtIndex:i];
53 | STAssertNil([s normalizedInternationalNumberWithZero], @"[NSString +normalizedInternationalNumberWithZero] did return %@ instead of %@", [s normalizedInternationalNumberWithZero], nil);
54 | }
55 |
56 | n = @"0041781234567";
57 |
58 | good = [NSArray arrayWithObjects:n, @"+41781234567", @"0041781234567", @"0041-78-1234567", nil];
59 | for(i = 0; i < [good count]; i++) {
60 | s = [good objectAtIndex:i];
61 | STAssertEqualObjects([s normalizedInternationalNumberWithZero], n, @"[NSString +normalizedInternationalNumberWithZero] did return %@ instead of %@", [s normalizedInternationalNumberWithZero], n);
62 | }
63 | }
64 |
65 | - (void) test {
66 | NSString *source = @"0795804712";
67 | NSString *result = [source normalizedInternationalNumberWithZero];
68 | STAssertEqualObjects(result, @"0041795804712", @"[NSString +normalizedInternationalNumberWithZero] did return %@ instead of %@", result, @"0041795804712");
69 |
70 |
71 | }
72 |
73 | @end
74 |
--------------------------------------------------------------------------------
/KeychainAccess.m:
--------------------------------------------------------------------------------
1 | //
2 | // KeychainAccess.m
3 | // SwissSMS
4 | //
5 | // Created by Nicolas Seriot on 05.11.07.
6 | // Copyright 2007 __MyCompanyName__. All rights reserved.
7 | //
8 |
9 | #import "KeychainAccess.h"
10 |
11 | #include
12 | #include
13 | #include
14 | #include
15 |
16 | @implementation KeychainAccess
17 |
18 | + (NSString *)internetHTMLFormPasswordForServer:(NSString *)serverName protocol:(SecProtocolType)protocol keychainItem:(SecKeychainItemRef *)keychainItem notFound:(BOOL *)notFound {
19 |
20 | UInt32 passwordLength;
21 | void *pswd = nil;
22 |
23 | OSStatus err = SecKeychainFindInternetPassword(NULL, strlen([serverName UTF8String]), [serverName UTF8String], /* securityDomain */ 0, NULL, /* accountName */ 0, NULL,
24 | /* path */ 0, NULL, /* port */ 0, protocol, kSecAuthenticationTypeHTMLForm, &passwordLength, &pswd, keychainItem);
25 |
26 | *notFound = err == errSecItemNotFound;
27 | if (err != noErr) {
28 | // TODO somehow report the error if it's not one of (errSecItemNotFound | userCanceledErr | errSecAuthFailed)
29 | // errSecAuthFailed happens when user clicks the Deny button
30 | return nil;
31 | }
32 |
33 | return [[[NSString alloc] initWithData:[NSData dataWithBytes:pswd length:passwordLength] encoding:NSUTF8StringEncoding] autorelease];
34 | }
35 |
36 | + (NSString *)loginForItem:(SecKeychainItemRef)keychainItem {
37 | NSString *username;
38 |
39 | SecKeychainAttributeList list;
40 | SecKeychainAttribute attr;
41 |
42 | list.count = 1;
43 | list.attr = &attr;
44 |
45 | attr.tag = kSecAccountItemAttr;
46 |
47 | OSStatus err;
48 | err = SecKeychainItemCopyContent(keychainItem, NULL, &list, NULL, NULL);
49 | NSAssert1(err == noErr, @"SecKeychainItemCopyContent -> %lu", err);
50 |
51 | if (attr.data != NULL) {
52 | username = [[[NSString alloc] initWithData:[NSData dataWithBytes:attr.data length:attr.length] encoding:NSUTF8StringEncoding] autorelease];
53 | } else {
54 | NSLog(@"Login not found.");
55 | return nil;
56 | }
57 |
58 | SecKeychainItemFreeContent(&list, NULL);
59 |
60 | return username;
61 | }
62 |
63 | + (void)addInternetHTMLFormPasswordForServer:(NSString *)serverName login:(NSString *)login password:(NSString *)password protocol:(SecProtocolType)protocol {
64 | OSStatus err = SecKeychainAddInternetPassword(NULL, strlen([serverName UTF8String]), [serverName UTF8String], /* securityDomain */ 0, NULL, strlen([login UTF8String]), [login UTF8String],
65 | /* path */ 0, NULL, /*port */ 0, protocol, kSecAuthenticationTypeHTMLForm, strlen([password UTF8String]), [password UTF8String], NULL);
66 |
67 | if (err != noErr) {
68 | // Documentation says "The result code errSecNoDefaultKeychain indicates that no default keychain could be found."
69 | // What would a user without a keychain expect when he chose "Add to keychain" ?
70 | NSLog(@"Unable to set password for %@ (%ld)", serverName, err);
71 | }
72 | }
73 |
74 | @end
75 |
--------------------------------------------------------------------------------
/MDImporter/GetMetadataForFile.m:
--------------------------------------------------------------------------------
1 | #include
2 | #include
3 | #include
4 |
5 | /* -----------------------------------------------------------------------------
6 | Step 1
7 | Set the UTI types the importer supports
8 |
9 | Modify the CFBundleDocumentTypes entry in Info.plist to contain
10 | an array of Uniform Type Identifiers (UTI) for the LSItemContentTypes
11 | that your importer can handle
12 |
13 | ----------------------------------------------------------------------------- */
14 |
15 | /* -----------------------------------------------------------------------------
16 | Step 2
17 | Implement the GetMetadataForFile function
18 |
19 | Implement the GetMetadataForFile function below to scrape the relevant
20 | metadata from your document and return it as a CFDictionary using standard keys
21 | (defined in MDItem.h) whenever possible.
22 | ----------------------------------------------------------------------------- */
23 |
24 | /* -----------------------------------------------------------------------------
25 | Step 3 (optional)
26 | If you have defined new attributes, update the schema.xml file
27 |
28 | Edit the schema.xml file to include the metadata keys that your importer returns.
29 | Add them to the and elements.
30 |
31 | Add any custom types that your importer requires to the element
32 |
33 |
34 |
35 | ----------------------------------------------------------------------------- */
36 |
37 |
38 |
39 | /* -----------------------------------------------------------------------------
40 | Get metadata attributes from file
41 |
42 | This function's job is to extract useful information your file format supports
43 | and return it as a dictionary
44 | ----------------------------------------------------------------------------- */
45 |
46 | Boolean GetMetadataForFile(void* thisInterface,
47 | CFMutableDictionaryRef attributes,
48 | CFStringRef contentTypeUTI,
49 | CFStringRef pathToFile)
50 | {
51 | /* Pull any available metadata from the file at the specified path */
52 | /* Return the attribute keys and attribute values in the dict */
53 | /* Return TRUE if successful, FALSE if there was no data provided */
54 | NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
55 | NSMutableDictionary *d = (NSMutableDictionary *)attributes;
56 | NSDictionary *file = [NSDictionary dictionaryWithContentsOfFile:(NSString *)pathToFile];
57 | //NSLog(@"file: %@", file);
58 | if(!file) goto error;
59 | [d setObject:[NSArray arrayWithObjects:[file objectForKey:@"name"], [file objectForKey:@"phone"], nil] forKey:(NSString *)kMDItemRecipients];
60 | [d setObject:[file objectForKey:@"date"] forKey:(NSString *)kMDItemContentCreationDate];
61 | [d setObject:[file objectForKey:@"text"] forKey:(NSString *)kMDItemTextContent];
62 | NSString *displayName = [NSString stringWithFormat:@"SMS to %@: %@", [file objectForKey:@"name"], [file objectForKey:@"text"]];
63 | [d setObject:displayName forKey:(NSString *)kMDItemDisplayName];
64 | [d setObject:displayName forKey:(NSString *)kMDItemTitle];
65 | [pool release];
66 |
67 | return TRUE;
68 |
69 | error:
70 | NSLog(@"Error: SwissSMS Spotlight importer could not import %@", (NSString *)pathToFile);
71 | [pool release];
72 | return FALSE;
73 | }
74 |
--------------------------------------------------------------------------------
/SwissSMS_AppDelegate.h:
--------------------------------------------------------------------------------
1 | //
2 | // SwissSMS_AppDelegate.h
3 | // SwissSMS
4 | //
5 | // Created by Nicolas Seriot on 07.04.07.
6 | // Copyright Nicolas Seriot 2007 . All rights reserved.
7 | //
8 |
9 |
10 | #import
11 | #import
12 | #import "AbstractSender.h"
13 | #import "Message.h"
14 |
15 | @interface SwissSMS_AppDelegate : NSObject {
16 | IBOutlet NSTokenField *tokenField;
17 | IBOutlet NSWindow *window;
18 | IBOutlet NSWindow *prefsWindow;
19 | IBOutlet NSTextView *messageField;
20 | IBOutlet NSArrayController *messagesController;
21 | IBOutlet NSUserDefaultsController *defaultsController;
22 | IBOutlet NSLevelIndicator *messageSendingLevelIndicator;
23 | IBOutlet NSPanel *messageInspector;
24 | IBOutlet NSView *searchItemView;
25 | IBOutlet NSView *senderItemView;
26 | IBOutlet NSTableView *tableView;
27 | IBOutlet NSButton *sendButton;
28 |
29 | IBOutlet NSPanel *loginPanel;
30 | IBOutlet NSTextField *instructionField;
31 | IBOutlet NSTextField *loginField;
32 | IBOutlet NSTextField *passwordField;
33 | IBOutlet NSButton *rememberCheckbox;
34 | MPSemaphoreID loginSemaphore;
35 | BOOL userCancelledLogin;
36 | BOOL messageSendingLevelIndicatorEnabled;
37 |
38 | NSPersistentStoreCoordinator *persistentStoreCoordinator;
39 | NSManagedObjectModel *managedObjectModel;
40 | NSManagedObjectContext *managedObjectContext;
41 |
42 | AbstractSender *smsSender;
43 | ABPerson *firstRecipient;
44 | NSArray *recipients;
45 |
46 | NSMutableArray *plugins;
47 |
48 | NSToolbar *toolbar;
49 | NSArray *messagesSortDescriptors;
50 | NSNumber *indicatorValue;
51 | double indicatorCriticalValue;
52 | NSString *currentStatus;
53 | NSString *exportStatusBottom;
54 | NSString *messageInfo;
55 | NSString *messageFieldString;
56 |
57 | IBOutlet NSArrayController *abPersonController;
58 | ABAddressBook *sharedAddressBook;
59 | NSPredicate *mobileFilterPredicate;
60 | NSArray *addressBookSortDescriptors;
61 | NSString *comboString;
62 |
63 | BOOL bpeIsRunning;
64 | BOOL exportToBPEIsAllowed;
65 | BOOL isSending;
66 | BOOL messageInspectorNameIsBold;
67 | BOOL isWaking;
68 | }
69 |
70 | - (NSPersistentStoreCoordinator *)persistentStoreCoordinator;
71 | - (NSManagedObjectModel *)managedObjectModel;
72 | - (NSManagedObjectContext *)managedObjectContext;
73 |
74 | - (IBAction)saveAction:sender;
75 | - (IBAction)sendMessage:sender;
76 | - (IBAction)removeSelectedMessages:sender;
77 | - (IBAction)saveAndClosePrefsWindow:sender;
78 | - (IBAction)newMessage:sender;
79 | - (IBAction)openImForCurrentRecipient:sender;
80 | - (IBAction)openImForSelectedMessageGuessedPerson:sender;
81 | - (IBAction)openPreferences:sender;
82 | - (IBAction)toggleFlagOnSelectedMessages:sender;
83 | - (IBAction)sendFeedback:(id)sender;
84 | - (IBAction)openCurrentRecipientInAB:sender;
85 | - (IBAction)endLoginSheet:(id)sender;
86 | - (void)openMessageInspector;
87 | - (AbstractSender *)senderWithClassName:(NSString *)name;
88 |
89 | - (NSString *)metadataDirectoryPath;
90 | - (NSString *)metadataFileExtension;
91 |
92 | - (void)registerAsObserver;
93 | - (SwissSMSSendingStatus)sendMessageInNewThread:(id)sender;
94 |
95 | - (NSDictionary *)keychainLoginAndPasswordForSender:(AbstractSender *)sender;
96 |
97 | - (NSArray *)allMessages;
98 |
99 | - (void)searchForPlugins;
100 | - (void)setServiceOrDefaultServiceIfEmpty;
101 | - (NSArray *)availableServicesNames;
102 |
103 | // toolbar menu actions
104 | - (IBAction)customize:(id)sender;
105 | - (IBAction)showhide:(id)sender;
106 |
107 | @end
108 |
--------------------------------------------------------------------------------
/_fixXQuery.h:
--------------------------------------------------------------------------------
1 | #import
2 |
3 | #import
4 |
5 | #import
6 |
7 | #import
8 | #import
9 |
10 | #if defined(__i386__) || defined(__x86_64__)
11 | typedef uint8_t instr_t;
12 | #elif defined(__ppc__) || defined(__ppc64__)
13 | typedef uint32_t instr_t;
14 | #endif
15 |
16 | typedef instr_t* instr_ptr;
17 |
18 | static BOOL nodesForXPathIsWorking()
19 | {
20 | BOOL isWorking;
21 |
22 | NSAutoreleasePool *pool = [NSAutoreleasePool new];
23 |
24 | NSXMLDocument *doc = [[[NSXMLDocument alloc] initWithXMLString:@"☢" options:0 error:nil] autorelease];
25 | NSArray *nodes = [doc nodesForXPath:@"/utf8[matches(text(), '☢')]" error:nil];
26 |
27 | isWorking = [nodes count] > 0;
28 |
29 | [pool release];
30 |
31 | return isWorking;
32 | }
33 |
34 | static BOOL fixXQuery(BOOL *wasBugged)
35 | {
36 | instr_ptr pcre_compile = NULL;
37 |
38 | BOOL isWorking = nodesForXPathIsWorking();
39 | if (wasBugged) {
40 | *wasBugged = !isWorking;
41 | }
42 |
43 | if (isWorking) {
44 | return YES;
45 | }
46 |
47 | uint32_t i, count = _dyld_image_count();
48 |
49 | for(i = 0; i < count; i++) {
50 | const char* imageName = _dyld_get_image_name(i);
51 | if (strstr(imageName, "XQuery.framework")) {
52 | const struct mach_header *imageHeader = _dyld_get_image_header(i);
53 |
54 | // Find the address of the private symbol pcre_compile
55 | #if defined(__LP64__)
56 | #error 64 bits is not yet supported
57 | #else
58 | struct nlist symlist[] = {{{"_pcre_compile"}, 0, 0, 0, 0}};
59 | if (nlist(imageName, symlist) == 0 && symlist[0].n_value != 0) {
60 | pcre_compile = (instr_ptr)((int)imageHeader + symlist[0].n_value);
61 | }
62 | #endif
63 | break;
64 | }
65 | }
66 |
67 | if (pcre_compile == NULL) {
68 | return NO;
69 | }
70 |
71 | #if defined(__i386__)
72 | // _pcre_compile+35: movl 0x0c(%ebp),%eax -> movl 0x18(%ebp),%eax
73 | // movl %eax,0x04(%esp)
74 | // pass the tableptr argument (arg5, which is null) instead of options (arg2) which is PCRE_UTF8 to pcre_compile2
75 | const instr_t original_instructions[7] = {0x8b, 0x45, 0x0c, 0x89, 0x44, 0x24, 0x04};
76 | const instr_t patched_instructions[7] = {0x8b, 0x45, 0x18, 0x89, 0x44, 0x24, 0x04};
77 | instr_ptr instructions_addr = (unsigned char*)pcre_compile+35;
78 | #elif defined(__ppc__)
79 | // _pcre_compile+0: or r0,r6,r6 -> li r4,0x0
80 | // or r8,r7,r7
81 | // or r6,r5,r5
82 | // or r7,r0,r0 -> or r7,r6,r6
83 | const instr_t original_instructions[4] = {0x7cc03378, 0x7ce83b78, 0x7ca62b78, 0x7c070378};
84 | const instr_t patched_instructions[4] = {0x38800000, 0x7ce83b78, 0x7ca62b78, 0x7cc73378};
85 | instr_ptr instructions_addr = pcre_compile;
86 | #else
87 | const instr_t original_instructions[0] = {};
88 | const instr_t patched_instructions[0] = {};
89 | instr_ptr instructions_addr = NULL;
90 | #endif
91 |
92 | if (memcmp(instructions_addr, original_instructions, sizeof(original_instructions)) == 0) {
93 | // Make it writable in order not to crash in the memcpy (EXC_BAD_ACCESS)
94 | kern_return_t vm_err = vm_protect(mach_task_self(), (vm_address_t)instructions_addr, sizeof(patched_instructions), false, VM_PROT_ALL);
95 | if (vm_err == KERN_SUCCESS) {
96 | memcpy(instructions_addr, patched_instructions, sizeof(patched_instructions));
97 | }
98 | }
99 |
100 | return nodesForXPathIsWorking();
101 | }
--------------------------------------------------------------------------------
/Plugins/hispeedCH/HispeedCH.m:
--------------------------------------------------------------------------------
1 | //
2 | // HispeedCH.m
3 | // SwissSMS
4 | //
5 | // Created by Cédric Luthi on 20.10.07.
6 | // Copyright 2007 Cédric Luthi. All rights reserved.
7 | //
8 |
9 | #import "HispeedCH.h"
10 | #import "NSString+SMSSender.h"
11 | #import "HTMLForm.h"
12 |
13 | @implementation HispeedCH
14 |
15 | - (SwissSMSSendingStatus)login:(NSString *)login password:(NSString *)password
16 | {
17 | NSError *err = nil;
18 |
19 | // We must first accept the "TornadoAuth=test" cookie so that we do not get http basic authentication
20 | NSHTTPCookieStorage *cookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
21 | NSHTTPCookieAcceptPolicy userCookiePolicy = [cookieStorage cookieAcceptPolicy];
22 | [cookieStorage setCookieAcceptPolicy:NSHTTPCookieAcceptPolicyAlways];
23 |
24 | HTMLForm *loginForm = [HTMLForm formNamed:@"anmeldung" atURL:[NSURL URLWithString:@"https://your.hispeed.ch/fr/apps/messenger/"] error:&err];
25 |
26 | if (err) {
27 | [cookieStorage setCookieAcceptPolicy:userCookiePolicy];
28 | if ([[err domain] isEqualToString:NSURLErrorDomain]) {
29 | return SS_NO_INTERNET_ERROR;
30 | } else {
31 | // No "anmeldung" form, assume we are already logged thanks to cookies
32 | return SS_LOGIN_OK;
33 | }
34 | }
35 |
36 | [loginForm setValue:login forField:@"mail"];
37 | [loginForm setValue:password forField:@"password"];
38 |
39 | BOOL success = [loginForm submitExpectingSuccess:@"//iframe[@name='external_application']"
40 | failures:[NSArray arrayWithObject:@"//input[@class='login']"] error:&err];
41 |
42 | [cookieStorage setCookieAcceptPolicy:userCookiePolicy];
43 |
44 | if (success) {
45 | if (err == nil) {
46 | return SS_LOGIN_OK;
47 | } else {
48 | return SS_LOGIN_ERROR;
49 | }
50 | } else {
51 | if ([[err domain] isEqualToString:NSURLErrorDomain]) {
52 | return SS_NO_INTERNET_ERROR;
53 | } else {
54 | return SS_PLUGIN_INTERNAL_ERROR;
55 | }
56 | }
57 | }
58 |
59 | - (SwissSMSSendingStatus)sendOneMessage:(NSString *)message toNumber:(NSString *)phoneNumber
60 | {
61 | NSError *err = nil;
62 |
63 | HTMLForm *smsForm = [HTMLForm formNamed:@"smsBean" atURL:[NSURL URLWithString:@"https://your.hispeed.ch/glue.cgi?http://messenger.hispeed.ch/walrus/app/login.do?language=fr"] error:&err];
64 |
65 | if (err) {
66 | if ([[err domain] isEqualToString:NSURLErrorDomain]) {
67 | return SS_NO_INTERNET_ERROR;
68 | } else {
69 | return SS_PLUGIN_INTERNAL_ERROR;
70 | }
71 | }
72 |
73 | [smsForm setValue:message forField:@"message"];
74 | [smsForm setValue:[NSString stringWithFormat:@"%d", [message length]] forField:@"numCount"];
75 | [smsForm setValue:@"originatorUser" forField:@"originator"];
76 | [smsForm setValue:@"yes" forField:@"recipientChecked"];
77 | [smsForm setValue:phoneNumber forField:@"recipient"];
78 | [smsForm removeField:@"sendDate"];
79 | [smsForm removeField:@"sendTime"];
80 |
81 | BOOL success = [smsForm submitExpectingSuccess:[NSString stringWithUTF8String:"//text()[matches(.,'SMS-Messenger a accepté votre ordre d.envoi')]"]
82 | failures:[NSArray array] error:&err];
83 |
84 | if (success) {
85 | if (err == nil) {
86 | return SS_SENDING_OK;
87 | } else {
88 | return SS_SENDING_ERROR;
89 | }
90 | } else {
91 | if ([[err domain] isEqualToString:NSURLErrorDomain]) {
92 | return SS_NO_INTERNET_ERROR;
93 | } else {
94 | return SS_PLUGIN_INTERNAL_ERROR;
95 | }
96 | }
97 | }
98 |
99 | - (NSString *)normalizePhoneNumber:(NSString *)rawString
100 | {
101 | if(!rawString) return nil;
102 | return [rawString normalizedSwissGSMPhoneNumber];
103 | }
104 |
105 | @end
106 |
--------------------------------------------------------------------------------
/ABPerson_SwissSMS.m:
--------------------------------------------------------------------------------
1 | //
2 | // ABPerson_SwissSMS.m
3 | // SwissSMS
4 | //
5 | // Created by Nicolas Seriot on 08.04.07.
6 | // Copyright 2007 Nicolas Seriot. All rights reserved.
7 | //
8 |
9 | #import "NSString_SwissSMS.h"
10 |
11 | #import
12 | #import "AbstractSender.h"
13 |
14 | @implementation ABPerson (SwissSMS)
15 |
16 | + (NSArray *)personsWithMobilePhone {
17 | ABAddressBook *AB = [ABAddressBook sharedAddressBook];
18 |
19 | ABSearchElement *haveMobilePhone = [ABPerson searchElementForProperty:kABPhoneProperty
20 | label:kABPhoneMobileLabel
21 | key:nil
22 | value:nil
23 | comparison:kABNotEqual];
24 |
25 | NSArray *persons = [AB recordsMatchingSearchElement:haveMobilePhone];
26 |
27 | NSSortDescriptor *sd1 = [[[NSSortDescriptor alloc] initWithKey:@"First" ascending:YES] autorelease];
28 | NSSortDescriptor *sd2 = [[[NSSortDescriptor alloc] initWithKey:@"Last" ascending:YES] autorelease];
29 |
30 | return [persons sortedArrayUsingDescriptors:[NSArray arrayWithObjects:sd1, sd2, nil]];
31 | }
32 |
33 | - (void)dealloc {
34 | [super dealloc];
35 | }
36 |
37 | // TODO remove this and use -name
38 | - (NSString *)fullname {
39 | NSString *first = [self valueForKey:@"First"];
40 | NSString *last = [self valueForKey:@"Last"];
41 |
42 | NSMutableArray *components = [[NSMutableArray alloc] init];
43 |
44 | if(first) {
45 | [components addObject:first];
46 | }
47 |
48 | if(last) {
49 | [components addObject:last];
50 | }
51 |
52 | NSString *result = [components componentsJoinedByString:@" "];
53 | [components release];
54 | return result;
55 | }
56 |
57 | - (NSString *)name {
58 | return [self fullname];
59 | }
60 |
61 | - (NSString *)mobilePhoneNumber {
62 | NSDictionary *d = [self valueForKey:@"Phone"];
63 | NSArray *labels = [d valueForKey:@"labels"];
64 | int mobilePhoneIndex = [labels indexOfObject:kABPhoneMobileLabel];
65 | if(mobilePhoneIndex == NSNotFound) {
66 | return nil;
67 | }
68 | NSArray *values = [d valueForKey:@"values"];
69 | return [values objectAtIndex:mobilePhoneIndex];
70 | }
71 |
72 | - (NSString *) phone {
73 | AbstractSender *smsSender = [[NSApp delegate] valueForKey:@"smsSender"];
74 | NSAssert(smsSender != nil, @"sender is nil :-(");
75 | NSString *mobilePhoneNumber = [self mobilePhoneNumber];
76 | return [smsSender normalizePhoneNumber:mobilePhoneNumber];
77 | }
78 |
79 | - (NSString *) phoneWithSender:(AbstractSender *)sender {
80 | NSString *mobilePhoneNumber = [self mobilePhoneNumber];
81 | return [sender normalizePhoneNumber:mobilePhoneNumber];
82 | }
83 |
84 | + (ABPerson *)personFromFullname:(NSString *)fullName mobilePhone:(NSString *)phone sender:(AbstractSender *)sender {
85 | NSAssert(sender != nil, @"sender is nil :-(");
86 | NSEnumerator *e = [[[ABAddressBook sharedAddressBook] people] objectEnumerator];
87 | ABPerson *p;
88 |
89 | while((p = [e nextObject])) {
90 | if([[p phoneWithSender:sender] isEqualToString:[sender normalizePhoneNumber:phone]] ||
91 | [[[p fullname] lowercaseString] isEqualToString:[fullName lowercaseString]]) {
92 | return p;
93 | }
94 | }
95 | return nil;
96 | }
97 |
98 | + (ABPerson *)personFromFullname:(NSString *)fullName mobilePhone:(NSString *)phone {
99 | AbstractSender *sender = [[NSApp delegate] valueForKey:@"smsSender"];
100 | return [ABPerson personFromFullname:fullName mobilePhone:phone sender:sender];
101 | }
102 |
103 | + (ABPerson *)personFromUniqueId:(NSString *)uid {
104 | ABSearchElement* search = [ABPerson searchElementForProperty:kABUIDProperty label:nil key:nil value:uid comparison:kABEqualCaseInsensitive];
105 | NSArray* matches = [[ABAddressBook sharedAddressBook] recordsMatchingSearchElement:search];
106 | return [matches count] > 0 ? [matches lastObject] : nil;
107 | }
108 |
109 | - (NSString *)description {
110 | return [NSString stringWithFormat:@"ABPerson %@", [self fullname]];
111 | }
112 |
113 | @end
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
--------------------------------------------------------------------------------
/STHTTPRequest/STHTTPRequest.h:
--------------------------------------------------------------------------------
1 | /*
2 | Copyright (c) 2012, Nicolas Seriot
3 | All rights reserved.
4 |
5 | Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
6 |
7 | * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
8 | * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
9 | * Neither the name of the Nicolas Seriot nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
10 |
11 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
12 | */
13 |
14 | #import
15 |
16 | @class STHTTPRequest;
17 |
18 | typedef void (^completionBlock_t)(NSDictionary *headers, NSString *body);
19 | typedef void (^errorBlock_t)(NSError *error);
20 |
21 | @interface STHTTPRequest : NSObject {
22 | completionBlock_t completionBlock;
23 | errorBlock_t errorBlock;
24 | NSStringEncoding postDataEncoding;
25 | NSURLCredential *credential;
26 | NSURLCredential *proxyCredential;
27 | NSDictionary *POSTDictionary;
28 | NSMutableDictionary *requestHeaders;
29 | NSInteger responseStatus;
30 | NSString *responseStringEncodingName;
31 | NSDictionary *responseHeaders;
32 | NSURL *url;
33 | NSMutableData *responseData;
34 | }
35 |
36 | @property (copy) completionBlock_t completionBlock;
37 | @property (copy) errorBlock_t errorBlock;
38 | @property (nonatomic) NSStringEncoding postDataEncoding;
39 | @property (nonatomic, retain) NSURLCredential *credential;
40 | @property (nonatomic, retain) NSURLCredential *proxyCredential;
41 | @property (nonatomic, retain) NSDictionary *POSTDictionary;
42 | @property (nonatomic, retain) NSMutableDictionary *requestHeaders;
43 | @property (nonatomic, readonly) NSInteger responseStatus;
44 | @property (nonatomic, retain, readonly) NSString *responseStringEncodingName;
45 | @property (nonatomic, retain, readonly) NSDictionary *responseHeaders;
46 | @property (nonatomic, retain, readonly) NSURL *url;
47 | @property (nonatomic, retain, readonly) NSMutableData *responseData;
48 |
49 | + (STHTTPRequest *)requestWithURL:(NSURL *)url;
50 | + (STHTTPRequest *)requestWithURLString:(NSString *)urlString;
51 |
52 | - (NSString *)startSynchronousWithError:(NSError **)error;
53 | - (void)startAsynchronous;
54 |
55 | - (NSStringEncoding)responseStringEncoding;
56 |
57 | // Cookies
58 | + (void)addCookieWithName:(NSString *)name value:(NSString *)value url:(NSURL *)url;
59 | - (void)addCookieWithName:(NSString *)name value:(NSString *)value;
60 | - (void)addCookie:(NSHTTPCookie *)cookie;
61 | - (NSArray *)requestCookies;
62 | + (NSArray *)sessionCookies;
63 | + (void)deleteSessionCookies;
64 |
65 | // Credentials
66 | + (NSURLCredential *)sessionAuthenticationCredentialsForURL:(NSURL *)requestURL;
67 | - (void)setUsername:(NSString *)username password:(NSString *)password;
68 | - (void)setProxyUsername:(NSString *)username password:(NSString *)password;
69 | - (NSString *)username;
70 | - (NSString *)password;
71 | + (void)deleteAllCredentials;
72 |
73 | // Headers
74 | - (void)setHeaderWithName:(NSString *)name value:(NSString *)value;
75 | - (void)removeHeaderWithName:(NSString *)name;
76 | - (NSDictionary *)responseHeaders;
77 |
78 | // Session
79 | + (void)clearSession; // delete all credentials and cookies
80 |
81 | @end
82 |
83 | @interface NSError (STHTTPRequest)
84 | - (BOOL)st_isAuthenticationError;
85 | @end
86 |
--------------------------------------------------------------------------------
/Message.m:
--------------------------------------------------------------------------------
1 | //
2 | // Message.m
3 | // SwissSMS
4 | //
5 | // Created by Nicolas Seriot on 07.04.07.
6 | // Copyright 2007 Nicolas Seriot. All rights reserved.
7 | //
8 |
9 | #import "Message.h"
10 | #import "ABPerson_SwissSMS.h"
11 |
12 | @implementation Message
13 |
14 | +(NSArray *)allObjectsInContext:(NSManagedObjectContext *)moc {
15 | NSFetchRequest *fr = [[NSFetchRequest alloc] init];
16 | [fr setEntity:[NSEntityDescription entityForName:@"Message" inManagedObjectContext:moc]];
17 | NSArray *a = [moc executeFetchRequest:fr error:nil];
18 | [fr release];
19 | return a;
20 | }
21 |
22 | +(unsigned)messagesCountInContext:(NSManagedObjectContext *)moc {
23 | return [[self allObjectsInContext:moc] count];
24 | }
25 |
26 | +(Message *)messageWithText:(NSString *)text name:(NSString *)name phone:(NSString *)phone context:(NSManagedObjectContext *)context {
27 | Message *message = [NSEntityDescription insertNewObjectForEntityForName: @"Message" inManagedObjectContext:context];
28 | [message setValue:[NSDate date] forKey:@"date"];
29 | [message setValue:[[name copy] autorelease] forKey:@"name"];
30 | [message setValue:[[phone copy] autorelease] forKey:@"phone"];
31 | [message setValue:[[text copy] autorelease] forKey:@"text"];
32 | return message;
33 | }
34 |
35 | -(NSDictionary *)bluePhoneEliteFormatAndRemove:(BOOL)remove {
36 | NSMutableString *phone = [NSMutableString stringWithString:[self valueForKey:@"phone"]];
37 | [phone replaceOccurrencesOfString:@"07" withString:@"+417" options:(unsigned)NULL range:NSMakeRange(0, 4)];
38 | NSDictionary *d = [NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:phone, [self valueForKey:@"text"], [NSNumber numberWithInt:3], [[self valueForKey:@"date"] description], nil]
39 | forKeys:[NSArray arrayWithObjects:@"Address", @"Message", @"State", @"TimeStamp", nil]];
40 | if(remove) {
41 | [[self managedObjectContext] deleteObject:self];
42 | [[self managedObjectContext] save:nil];
43 | }
44 | return d;
45 | }
46 |
47 | -(NSString *)csvLine {
48 | NSMutableString *noTabText = [[[self valueForKey:@"text"] mutableCopy] autorelease];
49 | [noTabText replaceOccurrencesOfString:@"\t" withString:@" " options:(unsigned)NULL range:NSMakeRange(0,[noTabText length])];
50 |
51 | return [NSString stringWithFormat:@"%@\t%@\t%@\t%@",
52 | [self valueForKey:@"date"],
53 | [self valueForKey:@"phone"],
54 | [self valueForKey:@"name"],
55 | noTabText];
56 | }
57 |
58 | - (ABPerson *)guessedPerson {
59 | NSString *fullname = [self valueForKey:@"name"];
60 | NSString *phone = [self valueForKey:@"phone"];
61 | if(!fullname || !phone) {
62 | return nil;
63 | }
64 | return [ABPerson personFromFullname:fullname mobilePhone:phone];
65 | }
66 |
67 | - (void)toggleFlag {
68 | BOOL state = [[self valueForKey:@"flagged"] boolValue];
69 | [self setValue:[NSNumber numberWithBool:!state] forKey:@"flagged"];
70 | }
71 |
72 | - (NSString *)metadataFilePath {
73 | NSString *messageNumber = [[[[[self objectID] URIRepresentation] path] pathComponents] lastObject];
74 | NSString *dir = [[NSApp delegate] valueForKey:@"metadataDirectoryPath"];
75 | NSString *ext = [[NSApp delegate] valueForKey:@"metadataFileExtension"];
76 | return [[dir stringByAppendingPathComponent:messageNumber] stringByAppendingPathExtension:ext];
77 | }
78 |
79 | - (void)writeMetadataFile {
80 | NSDictionary *d = [NSDictionary dictionaryWithObjectsAndKeys:
81 | [[[self objectID] URIRepresentation] absoluteString], @"objectID",
82 | [self valueForKey:@"text"], @"text",
83 | [self valueForKey:@"date"], @"date",
84 | [self valueForKey:@"name"], @"name",
85 | [self valueForKey:@"phone"], @"phone", nil];
86 |
87 | NSString *path = [self metadataFilePath];
88 |
89 | [d writeToFile:path atomically:YES];
90 | }
91 |
92 |
93 | - (BOOL)removeMetadataFile {
94 | NSString *path = [self metadataFilePath];
95 | // [[NSFileManager defaultManager] removeFileAtPath:path handler:nil];
96 | NSError *error = nil;
97 | BOOL success = [[NSFileManager defaultManager] removeItemAtPath:path error:&error];
98 | if(success == NO) {
99 | NSLog(@"-- %@", [error localizedDescription]);
100 | }
101 | return success;
102 | }
103 |
104 |
105 |
106 | @end
107 |
--------------------------------------------------------------------------------