Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

First public release since some people asked for it. Adding README an…

…d Sparkle public key.
  • Loading branch information...
commit a39ca19378ca86225de2e7b7d24fe10ab8df10a5 1 parent 209ff92
Tyler Hall authored
View
29 English.lproj/Credits.rtf
@@ -1,29 +1,10 @@
-{\rtf0\ansi{\fonttbl\f0\fswiss Helvetica;}
+{\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf320
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
-\paperw9840\paperh8400
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
-\f0\b\fs24 \cf0 Engineering:
-\b0 \
- Some people\
+\f0\b\fs24 \cf0 This was literally written in 90 minutes and is most likely built for my needs, not yours. That said, feel free to offer features suggestions.\
\
-
-\b Human Interface Design:
-\b0 \
- Some other people\
-\
-
-\b Testing:
-\b0 \
- Hopefully not nobody\
+Oh, and apologies to Google for infringing on your trademark. I'll come up with a better name soon.\
\
-
-\b Documentation:
-\b0 \
- Whoever\
-\
-
-\b With special thanks to:
-\b0 \
- Mom\
-}
+{\field{\*\fldinst{HYPERLINK "http://github.com/tylerhall/Gmail-SSB"}}{\fldrslt http://github.com/tylerhall/Gmail-SSB}}}
View
88 English.lproj/MainMenu.xib
@@ -12,7 +12,7 @@
</object>
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
<bool key="EncodedWithXMLCoder">YES</bool>
- <integer value="540"/>
+ <integer value="57"/>
</object>
<object class="NSArray" key="IBDocument.PluginDependencies">
<bool key="EncodedWithXMLCoder">YES</bool>
@@ -69,6 +69,14 @@
<reference key="NSOnImage" ref="1033313550"/>
<reference key="NSMixedImage" ref="310636482"/>
</object>
+ <object class="NSMenuItem" id="541495787">
+ <reference key="NSMenu" ref="110575045"/>
+ <string key="NSTitle">Check for Updates...</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="1033313550"/>
+ <reference key="NSMixedImage" ref="310636482"/>
+ </object>
<object class="NSMenuItem" id="304266470">
<reference key="NSMenu" ref="110575045"/>
<bool key="NSIsDisabled">YES</bool>
@@ -1339,6 +1347,9 @@
<object class="NSCustomObject" id="841816722">
<string key="NSClassName">AppDelegate</string>
</object>
+ <object class="NSCustomObject" id="687570629">
+ <string key="NSClassName">SUUpdater</string>
+ </object>
</object>
<object class="IBObjectContainer" key="IBDocument.Objects">
<object class="NSMutableArray" key="connectionRecords">
@@ -2023,6 +2034,14 @@
</object>
<int key="connectionID">551</int>
</object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">checkForUpdates:</string>
+ <reference key="source" ref="687570629"/>
+ <reference key="destination" ref="541495787"/>
+ </object>
+ <int key="connectionID">555</int>
+ </object>
</object>
<object class="IBMutableOrderedSet" key="objectRecords">
<object class="NSArray" key="orderedObjects">
@@ -2363,6 +2382,7 @@
<reference ref="1046388886"/>
<reference ref="1056857174"/>
<reference ref="342932134"/>
+ <reference ref="541495787"/>
</object>
<reference key="parent" ref="694149608"/>
</object>
@@ -3063,6 +3083,17 @@
<reference key="object" ref="148021317"/>
<reference key="parent" ref="579924844"/>
</object>
+ <object class="IBObjectRecord">
+ <int key="objectID">552</int>
+ <reference key="object" ref="541495787"/>
+ <reference key="parent" ref="110575045"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">554</int>
+ <reference key="object" ref="687570629"/>
+ <reference key="parent" ref="0"/>
+ <string key="objectName">Sparkle</string>
+ </object>
</object>
</object>
<object class="NSMutableDictionary" key="flattenedProperties">
@@ -3284,6 +3315,9 @@
<string>548.ImportedFromIB2</string>
<string>550.IBPluginDependency</string>
<string>550.ImportedFromIB2</string>
+ <string>552.IBPluginDependency</string>
+ <string>552.ImportedFromIB2</string>
+ <string>554.IBPluginDependency</string>
<string>56.IBPluginDependency</string>
<string>56.ImportedFromIB2</string>
<string>57.IBEditorWindowLastContentRect</string>
@@ -3416,7 +3450,7 @@
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
- <string>{{404, 386}, {406, 20}}</string>
+ <string>{{272, 482}, {406, 20}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>{74, 862}</string>
@@ -3518,7 +3552,7 @@
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{678, 283}, {194, 103}}</string>
+ <string>{{572, 283}, {194, 103}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>{{525, 802}, {197, 73}}</string>
@@ -3536,7 +3570,10 @@
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
- <string>{{416, 203}, {275, 183}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>{{284, 279}, {229, 203}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>{{23, 794}, {245, 183}}</string>
@@ -3584,7 +3621,7 @@
</object>
</object>
<nil key="sourceID"/>
- <int key="maxID">551</int>
+ <int key="maxID">555</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
@@ -4092,6 +4129,20 @@
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Sparkle.framework/Headers/SUAppcast.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier" id="666382208">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Sparkle.framework/Headers/SUUpdater.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">WebKit.framework/Headers/WebDownload.h</string>
</object>
</object>
@@ -4240,6 +4291,33 @@
</object>
</object>
<object class="IBPartialClassDescription">
+ <string key="className">SUUpdater</string>
+ <string key="superclassName">NSObject</string>
+ <object class="NSMutableDictionary" key="actions">
+ <string key="NS.key.0">checkForUpdates:</string>
+ <string key="NS.object.0">id</string>
+ </object>
+ <object class="NSMutableDictionary" key="actionInfosByName">
+ <string key="NS.key.0">checkForUpdates:</string>
+ <object class="IBActionInfo" key="NS.object.0">
+ <string key="name">checkForUpdates:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ </object>
+ <object class="NSMutableDictionary" key="outlets">
+ <string key="NS.key.0">delegate</string>
+ <string key="NS.object.0">id</string>
+ </object>
+ <object class="NSMutableDictionary" key="toOneOutletInfosByName">
+ <string key="NS.key.0">delegate</string>
+ <object class="IBToOneOutletInfo" key="NS.object.0">
+ <string key="name">delegate</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ </object>
+ <reference key="sourceIdentifier" ref="666382208"/>
+ </object>
+ <object class="IBPartialClassDescription">
<string key="className">WebView</string>
<string key="superclassName">NSView</string>
<object class="NSMutableDictionary" key="actions">
View
10 Gmail-Info.plist
@@ -38,16 +38,22 @@
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
- <string>1.0</string>
+ <string>0.1</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
- <string>1</string>
+ <string>0.1</string>
<key>LSMinimumSystemVersion</key>
<string>${MACOSX_DEPLOYMENT_TARGET}</string>
<key>NSMainNibFile</key>
<string>MainMenu</string>
<key>NSPrincipalClass</key>
<string>NSApplication</string>
+ <key>SUEnableSystemProfiling</key>
+ <true/>
+ <key>SUFeedURL</key>
+ <string>http://shine.clickontyler.com/appcast.php?id=7</string>
+ <key>SUPublicDSAKeyFile</key>
+ <string>dsa_pub.pem</string>
</dict>
</plist>
View
32 Gmail.xcodeproj/project.pbxproj
@@ -14,12 +14,29 @@
8D15AC310486D014006FF6A4 /* MyDocument.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A37F4ACFDCFA73011CA2CEA /* MyDocument.m */; settings = {ATTRIBUTES = (); }; };
8D15AC320486D014006FF6A4 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A37F4B0FDCFA73011CA2CEA /* main.m */; settings = {ATTRIBUTES = (); }; };
8D15AC340486D014006FF6A4 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A7FEA54F5311CA2CBB /* Cocoa.framework */; };
+ C610B6A812273565006A3991 /* dsa_pub.pem in Resources */ = {isa = PBXBuildFile; fileRef = C610B6A712273565006A3991 /* dsa_pub.pem */; };
+ C610B6AB122735CA006A3991 /* Sparkle.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C610B6AA122735CA006A3991 /* Sparkle.framework */; };
+ C610B6B5122735E6006A3991 /* Sparkle.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C610B6AA122735CA006A3991 /* Sparkle.framework */; };
C6F6549D122621C700967D8C /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C6F6549C122621C700967D8C /* WebKit.framework */; };
C6F6549F122621D100967D8C /* Icon.icns in Resources */ = {isa = PBXBuildFile; fileRef = C6F6549E122621D100967D8C /* Icon.icns */; };
C6F654A51226220900967D8C /* BrowserWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = C6F654A41226220900967D8C /* BrowserWindow.m */; };
C6F65653122644E000967D8C /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = C6F65652122644E000967D8C /* AppDelegate.m */; };
/* End PBXBuildFile section */
+/* Begin PBXCopyFilesBuildPhase section */
+ C610B6B9122735F0006A3991 /* Frameworks */ = {
+ isa = PBXCopyFilesBuildPhase;
+ buildActionMask = 2147483647;
+ dstPath = "";
+ dstSubfolderSpec = 10;
+ files = (
+ C610B6B5122735E6006A3991 /* Sparkle.framework in Frameworks */,
+ );
+ name = Frameworks;
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXCopyFilesBuildPhase section */
+
/* Begin PBXFileReference section */
089C1660FE840EACC02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = "<group>"; };
1058C7A7FEA54F5311CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = "<absolute>"; };
@@ -35,6 +52,8 @@
2A37F4C5FDCFA73011CA2CEA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = "<absolute>"; };
8D15AC360486D014006FF6A4 /* Gmail-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "Gmail-Info.plist"; sourceTree = "<group>"; };
8D15AC370486D014006FF6A4 /* Gmail.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Gmail.app; sourceTree = BUILT_PRODUCTS_DIR; };
+ C610B6A712273565006A3991 /* dsa_pub.pem */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = dsa_pub.pem; sourceTree = "<group>"; };
+ C610B6AA122735CA006A3991 /* Sparkle.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Sparkle.framework; path = /Users/thall/Src/Cocoa/VirtualHostX/Sparkle.framework; sourceTree = "<absolute>"; };
C6F6549C122621C700967D8C /* WebKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebKit.framework; path = System/Library/Frameworks/WebKit.framework; sourceTree = SDKROOT; };
C6F6549E122621D100967D8C /* Icon.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = Icon.icns; sourceTree = "<group>"; };
C6F654A31226220900967D8C /* BrowserWindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BrowserWindow.h; sourceTree = "<group>"; };
@@ -50,6 +69,7 @@
files = (
8D15AC340486D014006FF6A4 /* Cocoa.framework in Frameworks */,
C6F6549D122621C700967D8C /* WebKit.framework in Frameworks */,
+ C610B6AB122735CA006A3991 /* Sparkle.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -61,6 +81,7 @@
children = (
1058C7A7FEA54F5311CA2CBB /* Cocoa.framework */,
C6F6549C122621C700967D8C /* WebKit.framework */,
+ C610B6AA122735CA006A3991 /* Sparkle.framework */,
);
name = "Linked Frameworks";
sourceTree = "<group>";
@@ -120,6 +141,7 @@
2A37F4B8FDCFA73011CA2CEA /* Resources */ = {
isa = PBXGroup;
children = (
+ C610B6A712273565006A3991 /* dsa_pub.pem */,
C6F6549E122621D100967D8C /* Icon.icns */,
2A37F4B9FDCFA73011CA2CEA /* Credits.rtf */,
8D15AC360486D014006FF6A4 /* Gmail-Info.plist */,
@@ -149,6 +171,7 @@
8D15AC2B0486D014006FF6A4 /* Resources */,
8D15AC300486D014006FF6A4 /* Sources */,
8D15AC330486D014006FF6A4 /* Frameworks */,
+ C610B6B9122735F0006A3991 /* Frameworks */,
);
buildRules = (
);
@@ -187,6 +210,7 @@
1DDD582C0DA1D0D100B32029 /* MyDocument.xib in Resources */,
1DDD582D0DA1D0D100B32029 /* MainMenu.xib in Resources */,
C6F6549F122621D100967D8C /* Icon.icns in Resources */,
+ C610B6A812273565006A3991 /* dsa_pub.pem in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -247,6 +271,10 @@
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
COPY_PHASE_STRIP = NO;
+ FRAMEWORK_SEARCH_PATHS = (
+ "$(inherited)",
+ "\"$(SRCROOT)/../VirtualHostX\"",
+ );
GCC_DYNAMIC_NO_PIC = NO;
GCC_ENABLE_FIX_AND_CONTINUE = YES;
GCC_MODEL_TUNING = G5;
@@ -264,6 +292,10 @@
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ FRAMEWORK_SEARCH_PATHS = (
+ "$(inherited)",
+ "\"$(SRCROOT)/../VirtualHostX\"",
+ );
GCC_MODEL_TUNING = G5;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = Gmail_Prefix.pch;
View
56 README.markdown
@@ -0,0 +1,56 @@
+Gmail-SSB
+=========
+
+Gmail-SSB is a [site-specific browser](http://en.wikipedia.org/wiki/Site-specific_browser) for Gmail that's optimized for Google's fancy-schmancy voice/video calls. There are better Gmail SSBs out there, such as [Mailplane](http://mailplaneapp.com/). Or you could roll your own using [Fluid.app](http://fluidapp.com/). Unfortunately, neither of those quite fit my needs:
+
+ * Mailplane has a ton of features, but none of which I need. I'm already super-productive using Gmail's native shortcut keys.
+ * Fluid is also great at what it does. Sadly, closing the Fluid window releases the WebView, which kills any voice/video conversations you have open.
+
+Gmail-SSB addresses these issues so I can work safely in Safari without fear of accidentally closing my Gmail tab during a call.
+
+**Caveats:** This project is literally 90 minutes old. It may erase your hard drive and delete all your Gmail, but probably not. Still, you've been warned.
+
+FEATURES
+--------
+
+ * Dedicated app just for Gmail.
+ * Open/close/hide/minimize the app without disconnecting your voice/video calls.
+ * Incoming calls will ring in the background even if the window is closed.
+ * Visual alerts when incoming calls come in [soon]
+ * Growl notifications of new emails and calls [soon]
+ * Sparkle updates
+
+DOWNLOAD
+--------
+
+You can download the [latest version here](http://amz.clickontyler.com/gmail/gmailssb_0.1.zip).
+
+UPDATES
+-------
+
+Code is hosted at GitHub: [http://github.com/tylerhall/Gmail-SSB](http://github.com/tylerhall/Gmail-SB). Updates will be automatically pushed out in-app via Sparkle. Or you can always download the latest code and build it yourself.
+
+LICENSE
+-------
+
+The MIT License
+
+Copyright (c) 2010 Tyler Hall <tylerhall AT gmail DOT com>
+
+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:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+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.
View
20 dsa_pub.pem
@@ -0,0 +1,20 @@
+-----BEGIN PUBLIC KEY-----
+MIIDOjCCAi0GByqGSM44BAEwggIgAoIBAQCMgMkVOyRtc0VdHc6f5txKITDa83UO
+ZNBRE5cuwPN8vJOnf9nAh8a42Dp9uoaPSytKOM4ZQYXdSd3Wq/jEqxNKNjFrC44Y
+SwMOef1B7dtVltTsmr5M6VzF3dziobKQeY1q2RML1wtwIone24Yt0KrPPZR4668P
+uHZt3gOpGqbXnsnBxl4WopNFtKfnw9ebiq/r2p9mH5OLuRChkP/1dT7x610+FviD
+5Sv0h/oJ1C4cvXhKQtirDitP/PQtATU//AaB8Xgi4wSzNkJ4cuEoPpx4xS2BC42F
+a8cV/2RMwJKwoF36SEujYdUlC1kCwBJpYwK0WZ017XYr7p88ypeR1vxTAhUAskDA
+8//pD7egggMn4lsjRHPZBnsCggEARaq+U9oWLlgMQcN2G0JvH37k22MWVse4pYg5
+Vxo83qO77jNs8mnX67bJp1aFT2MSL049DajUYOM3JKEtkuaT6FcD4dDlrwD1JIRI
+50b/8hDIIgeiGNMHX7saABUzda+u25brfHNPnBNResSC6nux3GdImaxmYO3d0toC
+e0XHSZAslxhYi1SKgVBprcb3aPWfaunATjspSFoZmcqsGR94OPjkEye55SPU5vyN
+0JVMhp97kmRuN3tqIShR51LqzOd2bqCqIYRJgAa4QnFphLsK3qSs42i8HHZbljyx
+s7+EytHWw1faTDjnznJPxrEXtsm3oyP4chghXVZiHqn2pczHDwOCAQUAAoIBAFPy
+gjvNM2mApuKL+g9SvqjgHLMZupphaXsvAl9Y7Ipp2ypnjyHS9dTPpE0uDRbL0HzS
+8NufQNHyAiv/bDjCaLvVIMxhGT3LmCxKSJrbwmkvUa2/0W1YblFfruHSbnvPy3UI
+l77jZZnJnD3D6OGkn18CltxOMrzEKz6/KSVpT315u4Wzf2GJDQkteRVEXFICM3rx
+PgS0uiwjxEZAeet4auiwxYidC/tAjuSn+uixt+lShHyucSljwAItFxGs5YjPjXTl
+WppibFKLOQnk6SEoihxCpq5/U2Uh+Dpi3zGXRKAtGWavB/0C8uowKacrmRKLzUs6
+kEme86o47uXaU8uRbCk=
+-----END PUBLIC KEY-----
Please sign in to comment.
Something went wrong with that request. Please try again.