diff --git a/.classpath b/.classpath
deleted file mode 100644
index 2dd540a..0000000
--- a/.classpath
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/.gitignore b/.gitignore
index 970ae35..bd5d188 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,5 +1,2 @@
-/bin
-/gen
-/assets
-/target
+_site/
diff --git a/.project b/.project
deleted file mode 100644
index 1a96ea7..0000000
--- a/.project
+++ /dev/null
@@ -1,39 +0,0 @@
-
-
- AndroidTwitterGoogleApiJavaClient
-
-
-
-
-
- com.android.ide.eclipse.adt.ResourceManagerBuilder
-
-
-
-
- com.android.ide.eclipse.adt.PreCompilerBuilder
-
-
-
-
- org.eclipse.jdt.core.javabuilder
-
-
-
-
- com.android.ide.eclipse.adt.ApkBuilder
-
-
-
-
- org.eclipse.m2e.core.maven2Builder
-
-
-
-
-
- org.eclipse.m2e.core.maven2Nature
- com.android.ide.eclipse.adt.AndroidNature
- org.eclipse.jdt.core.javanature
-
-
diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs
deleted file mode 100644
index 99f26c0..0000000
--- a/.settings/org.eclipse.core.resources.prefs
+++ /dev/null
@@ -1,2 +0,0 @@
-eclipse.preferences.version=1
-encoding/=UTF-8
diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index abec6ca..0000000
--- a/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,5 +0,0 @@
-eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
-org.eclipse.jdt.core.compiler.compliance=1.5
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
-org.eclipse.jdt.core.compiler.source=1.5
diff --git a/.settings/org.eclipse.m2e.core.prefs b/.settings/org.eclipse.m2e.core.prefs
deleted file mode 100644
index f897a7f..0000000
--- a/.settings/org.eclipse.m2e.core.prefs
+++ /dev/null
@@ -1,4 +0,0 @@
-activeProfiles=
-eclipse.preferences.version=1
-resolveWorkspaceProjects=true
-version=1
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
deleted file mode 100644
index 2cc22ff..0000000
--- a/AndroidManifest.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- >
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/README.md b/README.md
deleted file mode 100644
index a91b366..0000000
--- a/README.md
+++ /dev/null
@@ -1,108 +0,0 @@
-##Introduction
-
-##Software requirements
-
-
-##Project setup
-
-### m2e-android plugin
-
-This project is built using the [m2e-android plugin](http://rgladwell.github.io/m2e-android/index.html) to handle its external dependencies.
-
-When using Eclipse ADT, it assumes that the following components are installed :
-
-- Eclipse Market Client
-- [m2e-android plugin](http://rgladwell.github.io/m2e-android/index.html)
-- [maven-android-sdk-deployer](https://github.com/mosabua/)
-
-### Eclipse MarketPlace
-
-If you don't have the Eclipse Market Client installed, you can install it by clicking on
-
-```Help → Install new Software → Switch to the Juno Repository → General Purpose Tools → Marketplace Client```
-
-
-
-Once you have the Eclipse Market Client installed, you can proceed to install the m2e-android plugin
-
-
-
-```Help -> Eclipse Marketplace... and search for "android m2e".```
-
-
-
-More instructions can be found on the [m2e-android plugin](http://rgladwell.github.io/m2e-android/index.html) site.
-
-### maven-android-sdk-deployer
-
-Clone the [maven-android-sdk-deployer](https://github.com/mosabua/maven-android-sdk-deployer) and execute mvn install. This will install the required projects into your local maven repository.
-
-### Environment setup
-
-Make sure you have your ANDROID_HOME variable pointing to your SDK
-
-
-
-### Clone and import the project
-
-Clone the project on your filesystem
-
- git clone git@github.com:ddewaele/AndroidTwitterGoogleApiJavaClient.git
- Cloning into AndroidTwitterGoogleApiJavaClient...
- remote: Reusing existing pack: 145, done.
- remote: Counting objects: 11, done.
- remote: Compressing objects: 100% (8/8), done.
- remote: Total 156 (delta 0), reused 0 (delta 0)
- Receiving objects: 100% (156/156), 529.74 KiB | 483 KiB/s, done.
- Resolving deltas: 100% (33/33), done.
-
-Import the project in Eclipse ADT.
-
-When importing the project, select ```Existing Maven Projects```.
-
-
-
-Navigate to the place where you cloned the repository (ex: /Users/ddewaele/Projects/AndroidTwitterGoogleApiJavaClient) and click Finish.
-
-
-
-After that, Eclipse ADT and the Maven M2E plugin should import your project and setup all the dependencies.
-
-
-
-
-### Twitter OAuth application and keys
-
-As this application allows you to interact with Twitter, you need to go to to the [Twitter Developer page](dev.twitter.com) to [register a new application](https://apps.twitter.com/app/new).
-
-Here are a couple of steps you need to follow
-
-- Register a new application in the Twitter dev console
-
-
-
-- Verify that the application was created succesfully.
-
-
-
-- Set the correct permissions
-
-
-
-- Copy the key and secret from the app.
-
-
-
-- Put the key and secret in the [Constants file](https://github.com/ddewaele/AndroidTwitterGoogleApiJavaClient/blob/master/src/com/ecs/sample/Constants.java)
-
-Replace the placeholders below with the actual KEY and SECRET
-
- public static final String API_KEY = "PUT YOUR TWITTER API KEY HERE";
- public static final String API_SECRET= "PUT YOUR TWITTER API SECRET HERE";
-
-
-Launch the application and you should see the following screens.
-
-
-
-
diff --git a/_config.xml b/_config.xml
new file mode 100644
index 0000000..e69de29
diff --git a/_layouts/index.html b/_layouts/index.html
new file mode 100644
index 0000000..67de40e
--- /dev/null
+++ b/_layouts/index.html
@@ -0,0 +1,92 @@
+
+
+
+
+
+
+
+
+
+
+ Twitter OAuth1 - Android application implementing the Oauth 1.0 flow using the Google APIs Client Library for Java
+
+
+
+
+
+
+
+
+
+
+ {{content}}
+
+
+
+
+
+ Please enable JavaScript to view the comments powered by Disqus.
+ comments powered by
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/images/bg_hr.png b/images/bg_hr.png
new file mode 100644
index 0000000..7973bd6
Binary files /dev/null and b/images/bg_hr.png differ
diff --git a/images/blacktocat.png b/images/blacktocat.png
new file mode 100644
index 0000000..6e264fe
Binary files /dev/null and b/images/blacktocat.png differ
diff --git a/images/icon_download.png b/images/icon_download.png
new file mode 100644
index 0000000..a2a287f
Binary files /dev/null and b/images/icon_download.png differ
diff --git a/images/sprite_download.png b/images/sprite_download.png
new file mode 100644
index 0000000..f2babd5
Binary files /dev/null and b/images/sprite_download.png differ
diff --git a/index.md b/index.md
new file mode 100644
index 0000000..a3e4d15
--- /dev/null
+++ b/index.md
@@ -0,0 +1,15 @@
+---
+layout: index
+title: Document Center
+---
+
+##Introduction
+
+content needs to come here.... only screenshots for now....
+
+The original blog post for this article can be found [here](http://blog.doityourselfandroid.com/2011/08/08/improved-twitter-oauth-android/).
+For a sample application using OAuth2 Service Providers (Foursquare, Google Tasks / Plus), checkout [this page](http://ddewaele.github.io/AndroidOauth2GoogleApiJavaClient/).
+
+
+
+
diff --git a/javascripts/main.js b/javascripts/main.js
new file mode 100644
index 0000000..d8135d3
--- /dev/null
+++ b/javascripts/main.js
@@ -0,0 +1 @@
+console.log('This would be the main JS file.');
diff --git a/params.json b/params.json
new file mode 100644
index 0000000..b84862d
--- /dev/null
+++ b/params.json
@@ -0,0 +1 @@
+{"name":"Android Twitter OAuth1","tagline":"Android application implementing the Oauth 1.0 flow using the Google APIs Client Library for Java","body":"### Welcome to GitHub Pages.\r\nThis automatic page generator is the easiest way to create beautiful pages for all of your projects. Author your page content here using GitHub Flavored Markdown, select a template crafted by a designer, and publish. After your page is generated, you can check out the new branch:\r\n\r\n```\r\n$ cd your_repo_root/repo_name\r\n$ git fetch origin\r\n$ git checkout gh-pages\r\n```\r\n\r\nIf you're using the GitHub for Mac, simply sync your repository and you'll see the new branch.\r\n\r\n### Designer Templates\r\nWe've crafted some handsome templates for you to use. Go ahead and continue to layouts to browse through them. You can easily go back to edit your page before publishing. After publishing your page, you can revisit the page generator and switch to another theme. Your Page content will be preserved if it remained markdown format.\r\n\r\n### Rather Drive Stick?\r\nIf you prefer to not use the automatic generator, push a branch named `gh-pages` to your repository to create a page manually. In addition to supporting regular HTML content, GitHub Pages support Jekyll, a simple, blog aware static site generator written by our own Tom Preston-Werner. Jekyll makes it easy to create site-wide headers and footers without having to copy them across every page. It also offers intelligent blog support and other advanced templating features.\r\n\r\n### Authors and Contributors\r\nYou can @mention a GitHub username to generate a link to their profile. The resulting `` element will link to the contributor's GitHub Profile. For example: In 2007, Chris Wanstrath (@defunkt), PJ Hyett (@pjhyett), and Tom Preston-Werner (@mojombo) founded GitHub.\r\n\r\n### Support or Contact\r\nHaving trouble with Pages? Check out the documentation at http://help.github.com/pages or contact support@github.com and we’ll help you sort it out.\r\n","google":"","note":"Don't delete this file! It's used internally to help with page regeneration."}
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
deleted file mode 100644
index 973baa9..0000000
--- a/pom.xml
+++ /dev/null
@@ -1,86 +0,0 @@
-
-
- 4.0.0
- com.ecs
- com.ecs.android.twitter.ouath
- 0.0.1-SNAPSHOT
- apk
- com.ecs.android.twitter.ouath
-
-
- UTF-8
- 4.1.1.4
- 3.6.0
- 1.18.0-rc
- UTF-8
-
-
-
-
- com.google.android
- android
- ${platform.version}
- provided
-
-
- xpp3
- xpp3
-
-
-
-
-
- com.google.api-client
- google-api-client
- ${com.google.api-client.version}
-
-
-
- com.google.http-client
- google-http-client-jackson2
- ${com.google.api-client.version}
-
-
- xpp3
- xpp3
-
-
-
-
-
- org.twitter4j
- twitter4j-core
- 4.0.1
-
-
-
-
-
-
-
- ${project.artifactId}
-
-
-
- com.jayway.maven.plugins.android.generation2
- android-maven-plugin
- ${android.plugin.version}
- true
-
-
-
-
-
- com.jayway.maven.plugins.android.generation2
- android-maven-plugin
-
-
- 16
- /Users/davydewaele/Soft/adt-bundle-mac-x86_64-20130522/sdk
-
-
-
-
-
-
diff --git a/proguard.cfg b/proguard.cfg
deleted file mode 100644
index b1cdf17..0000000
--- a/proguard.cfg
+++ /dev/null
@@ -1,40 +0,0 @@
--optimizationpasses 5
--dontusemixedcaseclassnames
--dontskipnonpubliclibraryclasses
--dontpreverify
--verbose
--optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
-
--keep public class * extends android.app.Activity
--keep public class * extends android.app.Application
--keep public class * extends android.app.Service
--keep public class * extends android.content.BroadcastReceiver
--keep public class * extends android.content.ContentProvider
--keep public class * extends android.app.backup.BackupAgentHelper
--keep public class * extends android.preference.Preference
--keep public class com.android.vending.licensing.ILicensingService
-
--keepclasseswithmembernames class * {
- native ;
-}
-
--keepclasseswithmembers class * {
- public (android.content.Context, android.util.AttributeSet);
-}
-
--keepclasseswithmembers class * {
- public (android.content.Context, android.util.AttributeSet, int);
-}
-
--keepclassmembers class * extends android.app.Activity {
- public void *(android.view.View);
-}
-
--keepclassmembers enum * {
- public static **[] values();
- public static ** valueOf(java.lang.String);
-}
-
--keep class * implements android.os.Parcelable {
- public static final android.os.Parcelable$Creator *;
-}
diff --git a/project.properties b/project.properties
deleted file mode 100644
index a3ee5ab..0000000
--- a/project.properties
+++ /dev/null
@@ -1,14 +0,0 @@
-# This file is automatically generated by Android Tools.
-# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
-#
-# This file must be checked in Version Control Systems.
-#
-# To customize properties used by the Ant build system edit
-# "ant.properties", and override values to adapt the script to your
-# project structure.
-#
-# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
-#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
-
-# Project target.
-target=android-17
diff --git a/res/drawable-hdpi/ic_launcher.png b/res/drawable-hdpi/ic_launcher.png
deleted file mode 100644
index 288b665..0000000
Binary files a/res/drawable-hdpi/ic_launcher.png and /dev/null differ
diff --git a/res/drawable-mdpi/ic_launcher.png b/res/drawable-mdpi/ic_launcher.png
deleted file mode 100644
index 6ae570b..0000000
Binary files a/res/drawable-mdpi/ic_launcher.png and /dev/null differ
diff --git a/res/drawable-xhdpi/ic_launcher.png b/res/drawable-xhdpi/ic_launcher.png
deleted file mode 100644
index d4fb7cd..0000000
Binary files a/res/drawable-xhdpi/ic_launcher.png and /dev/null differ
diff --git a/res/drawable-xxhdpi/ic_launcher.png b/res/drawable-xxhdpi/ic_launcher.png
deleted file mode 100644
index 85a6081..0000000
Binary files a/res/drawable-xxhdpi/ic_launcher.png and /dev/null differ
diff --git a/res/layout/login.xml b/res/layout/login.xml
deleted file mode 100644
index b5578f3..0000000
--- a/res/layout/login.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/res/layout/main.xml b/res/layout/main.xml
deleted file mode 100644
index 9dabfd2..0000000
--- a/res/layout/main.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-
-
-
-
-
-
-
-
diff --git a/res/layout/tweet_row.xml b/res/layout/tweet_row.xml
deleted file mode 100644
index d03ef73..0000000
--- a/res/layout/tweet_row.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/res/values-sw600dp/dimens.xml b/res/values-sw600dp/dimens.xml
deleted file mode 100644
index 1ba777d..0000000
--- a/res/values-sw600dp/dimens.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
\ No newline at end of file
diff --git a/res/values-sw720dp-land/dimens.xml b/res/values-sw720dp-land/dimens.xml
deleted file mode 100644
index eee741a..0000000
--- a/res/values-sw720dp-land/dimens.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
- 128dp
-
-
\ No newline at end of file
diff --git a/res/values-v11/styles.xml b/res/values-v11/styles.xml
deleted file mode 100644
index 541752f..0000000
--- a/res/values-v11/styles.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/res/values-v14/styles.xml b/res/values-v14/styles.xml
deleted file mode 100644
index f20e015..0000000
--- a/res/values-v14/styles.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
deleted file mode 100644
index a6dd140..0000000
--- a/res/values/dimens.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
- 16dp
- 16dp
-
-
\ No newline at end of file
diff --git a/res/values/strings.xml b/res/values/strings.xml
deleted file mode 100644
index 90ec055..0000000
--- a/res/values/strings.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
- Hello World, AndroidTwitterGoogleApiJavaClientActivity!
- AndroidTwitterGoogleApiJavaClient
-
diff --git a/res/values/styles.xml b/res/values/styles.xml
deleted file mode 100644
index 4a10ca4..0000000
--- a/res/values/styles.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/src/com/ecs/sample/AndroidTwitterGoogleApiJavaClientActivity.java b/src/com/ecs/sample/AndroidTwitterGoogleApiJavaClientActivity.java
deleted file mode 100644
index bd0814b..0000000
--- a/src/com/ecs/sample/AndroidTwitterGoogleApiJavaClientActivity.java
+++ /dev/null
@@ -1,103 +0,0 @@
-package com.ecs.sample;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import twitter4j.Status;
-import twitter4j.ResponseList;
-import android.app.Activity;
-import android.content.Intent;
-import android.content.SharedPreferences;
-import android.net.Uri;
-import android.os.AsyncTask;
-import android.os.Bundle;
-import android.preference.PreferenceManager;
-import android.view.View;
-import android.widget.Button;
-import android.widget.ListView;
-import android.widget.TextView;
-
-import com.ecs.sample.store.SharedPreferencesCredentialStore;
-
-public class AndroidTwitterGoogleApiJavaClientActivity extends Activity {
-
- private SharedPreferences prefs;
- private TextView textView;
- private HomeTimelineAdapter adapter;
- private ListView listview;
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- listview = (ListView) findViewById(R.id.listview);
-
- this.prefs = PreferenceManager.getDefaultSharedPreferences(this);
-
- Button launchOauth = (Button) findViewById(R.id.btn_launch_oauth);
- Button clearCredentials = (Button) findViewById(R.id.btn_clear_credentials);
-
- textView = (TextView) findViewById(R.id.response_code);
-
- launchOauth.setOnClickListener(new View.OnClickListener() {
- public void onClick(View v) {
- startActivity(new Intent().setClass(v.getContext(),OAuthAccessTokenActivity.class));
- }
- });
-
- clearCredentials.setOnClickListener(new View.OnClickListener() {
- public void onClick(View v) {
- clearCredentials();
- performApiCall();
- }
-
- });
-
- performApiCall();
-
- }
-
- private void clearCredentials() {
- new SharedPreferencesCredentialStore(prefs).clearCredentials();
- }
-
- /**
- * Performs an authorized API call.
- */
- private void performApiCall() {
- new ApiCallExecutor().execute();
- }
-
- private class ApiCallExecutor extends AsyncTask {
-
- @Override
- protected Void doInBackground(Uri...params) {
-
- try {
-// String tweet = "Tweet sent at " + new Date();
-// TwitterUtils.sendTweet(prefs, tweet);
- ResponseList homeTimeline = TwitterUtils.getHomeTimeline(prefs);
- List statusList = new ArrayList();
- for (twitter4j.Status status : homeTimeline) {
- statusList.add(status);
- }
- adapter = new HomeTimelineAdapter(AndroidTwitterGoogleApiJavaClientActivity.this,R.layout.tweet_row,statusList);
-
- } catch (Exception ex) {
- adapter = new HomeTimelineAdapter(AndroidTwitterGoogleApiJavaClientActivity.this,R.layout.tweet_row,new ArrayList());
- ex.printStackTrace();
- }
-
- return null;
- }
-
- @Override
- protected void onPostExecute(Void result) {
- super.onPostExecute(result);
- listview.setAdapter(adapter);
- adapter.notifyDataSetChanged();
- }
-
- }
-
-
-}
diff --git a/src/com/ecs/sample/Constants.java b/src/com/ecs/sample/Constants.java
deleted file mode 100644
index 3af80eb..0000000
--- a/src/com/ecs/sample/Constants.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.ecs.sample;
-
-public class Constants {
-
- public static final String TAG = "AndroidTwitterOauth1";
-
- public static final String API_KEY = "PUT YOUR TWITTER API KEY HERE";
- public static final String API_SECRET= "PUT YOUR TWITTER API SECRET HERE";
-
- public static final String REQUEST_URL = "https://api.twitter.com/oauth/request_token";
- public static final String ACCESS_URL = "https://api.twitter.com/oauth/access_token";
- public static final String AUTHORIZE_URL = "https://api.twitter.com/oauth/authorize";
-
- public static final String OAUTH_CALLBACK_URL = "http://localhost";
-}
-
diff --git a/src/com/ecs/sample/HomeTimelineAdapter.java b/src/com/ecs/sample/HomeTimelineAdapter.java
deleted file mode 100644
index afa297c..0000000
--- a/src/com/ecs/sample/HomeTimelineAdapter.java
+++ /dev/null
@@ -1,56 +0,0 @@
-package com.ecs.sample;
-
-import java.util.List;
-
-import twitter4j.Status;
-import android.content.Context;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.ArrayAdapter;
-import android.widget.TextView;
-
-public class HomeTimelineAdapter extends ArrayAdapter {
-
- private LayoutInflater inflater;
- private int tvrId;
- private List listItems;
-
- public HomeTimelineAdapter(Context context, int textViewResourceId, List objects) {
- super(context, textViewResourceId, objects);
- inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
- tvrId = textViewResourceId;
- listItems = objects;
- }
-
- @Override
- public View getView(int position, View convertView, ViewGroup parent){
- try {
- ViewHolder holder;
- Status item = listItems.get(position);
- if(convertView == null) {
- convertView = inflater.inflate(tvrId, null);
-
- holder = new ViewHolder();
- holder.text = (TextView)convertView.findViewById(R.id.user_text);
-
- convertView.setTag(holder);
- } else {
- holder = (ViewHolder)convertView.getTag();
- }
-
- holder.text.setText(item.getText());
-
- } catch(Exception e) {
- e.printStackTrace();
- }
- return convertView;
- }
-
- private static class ViewHolder {
-
- public TextView text;
-
- }
-
-}
\ No newline at end of file
diff --git a/src/com/ecs/sample/OAuthAccessTokenActivity.java b/src/com/ecs/sample/OAuthAccessTokenActivity.java
deleted file mode 100644
index f6696bd..0000000
--- a/src/com/ecs/sample/OAuthAccessTokenActivity.java
+++ /dev/null
@@ -1,210 +0,0 @@
-package com.ecs.sample;
-
-import java.io.IOException;
-
-import android.annotation.SuppressLint;
-import android.app.Activity;
-import android.content.Intent;
-import android.content.SharedPreferences;
-import android.graphics.Bitmap;
-import android.net.Uri;
-import android.os.AsyncTask;
-import android.os.Bundle;
-import android.preference.PreferenceManager;
-import android.util.Log;
-import android.view.View;
-import android.webkit.WebView;
-import android.webkit.WebViewClient;
-
-import com.ecs.sample.store.CredentialStore;
-import com.ecs.sample.store.SharedPreferencesCredentialStore;
-import com.ecs.sample.util.QueryStringParser;
-import com.google.api.client.auth.oauth.OAuthAuthorizeTemporaryTokenUrl;
-import com.google.api.client.auth.oauth.OAuthCredentialsResponse;
-import com.google.api.client.auth.oauth.OAuthGetAccessToken;
-import com.google.api.client.auth.oauth.OAuthGetTemporaryToken;
-import com.google.api.client.auth.oauth.OAuthHmacSigner;
-import com.google.api.client.http.apache.ApacheHttpTransport;
-
-@SuppressLint("SetJavaScriptEnabled")
-public class OAuthAccessTokenActivity extends Activity {
-
- final String TAG = getClass().getName();
-
- private SharedPreferences prefs;
-
- private boolean handled;
-
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- Log.i(TAG, "Starting task to retrieve request token.");
- this.prefs = PreferenceManager.getDefaultSharedPreferences(this);
- }
-
- private WebView webview;
-
- @Override
- protected void onResume() {
- super.onResume();
- webview = new WebView(this);
- webview.getSettings().setJavaScriptEnabled(true);
- webview.setVisibility(View.VISIBLE);
- setContentView(webview);
-
- handled=false;
-
- new PreProcessToken().execute();
-
- }
-
- private class PreProcessToken extends AsyncTask {
-
- final OAuthHmacSigner signer = new OAuthHmacSigner();
- private String authorizationUrl;
-
- @Override
- protected Void doInBackground(Uri...params) {
-
- try {
-
- signer.clientSharedSecret = Constants.API_SECRET;
-
- OAuthGetTemporaryToken temporaryToken = new OAuthGetTemporaryToken(Constants.REQUEST_URL);
- temporaryToken.transport = new ApacheHttpTransport();
- temporaryToken.signer = signer;
- temporaryToken.consumerKey = Constants.API_KEY;
- temporaryToken.callback = Constants.OAUTH_CALLBACK_URL;
-
- OAuthCredentialsResponse tempCredentials = temporaryToken.execute();
- signer.tokenSharedSecret = tempCredentials.tokenSecret;
-
- OAuthAuthorizeTemporaryTokenUrl authorizeUrl = new OAuthAuthorizeTemporaryTokenUrl(Constants.AUTHORIZE_URL);
- authorizeUrl.temporaryToken = tempCredentials.token;
- authorizationUrl = authorizeUrl.build();
-
- Log.i(Constants.TAG, "Using authorizationUrl = " + authorizationUrl);
-
- handled=false;
- } catch (Exception ex) {
- ex.printStackTrace();
- }
-
- return null;
- }
-
-
- /**
- * When we're done and we've retrieved either a valid token or an error from the server,
- * we'll return to our original activity
- */
- @Override
- protected void onPostExecute(Void result) {
-
- Log.i(TAG, "Retrieving request token from Google servers");
-
- webview.setWebViewClient(new WebViewClient() {
-
- @Override
- public void onPageStarted(WebView view, String url,Bitmap bitmap) {
- Log.i(Constants.TAG, "onPageStarted : " + url + " handled = " + handled);
- }
- @Override
- public void onPageFinished(final WebView view, final String url) {
- Log.i(Constants.TAG, "onPageFinished : " + url + " handled = " + handled);
-
- if (url.startsWith(Constants.OAUTH_CALLBACK_URL)) {
- if (url.indexOf("oauth_token=")!=-1) {
- webview.setVisibility(View.INVISIBLE);
-
- if (!handled) {
- new ProcessToken(url,signer).execute();
- }
- } else {
- webview.setVisibility(View.VISIBLE);
- }
- }
- }
-
- });
-
- webview.loadUrl(authorizationUrl);
-
- }
-
- }
-
- private class ProcessToken extends AsyncTask {
-
- String url;
- private OAuthHmacSigner signer;
-
- public ProcessToken(String url,OAuthHmacSigner signer) {
- this.url=url;
- this.signer = signer;
- }
-
- @Override
- protected Void doInBackground(Uri...params) {
-
- Log.i(Constants.TAG, "doInbackground called with url " + url);
- if (url.startsWith(Constants.OAUTH_CALLBACK_URL) && !handled) {
- try {
-
- if (url.indexOf("oauth_token=")!=-1) {
- handled=true;
- String requestToken = extractParamFromUrl(url,"oauth_token");
- String verifier= extractParamFromUrl(url,"oauth_verifier");
-
- signer.clientSharedSecret = Constants.API_SECRET;
-
- OAuthGetAccessToken accessToken = new OAuthGetAccessToken(Constants.ACCESS_URL);
- accessToken.transport = new ApacheHttpTransport();
- accessToken.temporaryToken = requestToken;
- accessToken.signer = signer;
- accessToken.consumerKey = Constants.API_KEY;
- accessToken.verifier = verifier;
-
- OAuthCredentialsResponse credentials = accessToken.execute();
- signer.tokenSharedSecret = credentials.tokenSecret;
-
- CredentialStore credentialStore = new SharedPreferencesCredentialStore(prefs);
- credentialStore.write(new String[] {credentials.token,credentials.tokenSecret});
-
- } else if (url.indexOf("error=")!=-1) {
- new SharedPreferencesCredentialStore(prefs).clearCredentials();
- }
-
- } catch (IOException e) {
- e.printStackTrace();
- }
-
- }
- return null;
- }
-
- private String extractParamFromUrl(String url,String paramName) {
- String queryString = url.substring(url.indexOf("?", 0)+1,url.length());
- QueryStringParser queryStringParser = new QueryStringParser(queryString);
- return queryStringParser.getQueryParamValue(paramName);
- }
-
- @Override
- protected void onPreExecute() {
-
- }
-
- /**
- * When we're done and we've retrieved either a valid token or an error from the server,
- * we'll return to our original activity
- */
- @Override
- protected void onPostExecute(Void result) {
- Log.i(Constants.TAG," ++++++++++++ Starting mainscreen again");
- startActivity(new Intent(OAuthAccessTokenActivity.this,AndroidTwitterGoogleApiJavaClientActivity.class));
- finish();
- }
-
- }
-
-}
diff --git a/src/com/ecs/sample/TwitterUtils.java b/src/com/ecs/sample/TwitterUtils.java
deleted file mode 100644
index ddce4ba..0000000
--- a/src/com/ecs/sample/TwitterUtils.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package com.ecs.sample;
-
-import twitter4j.ResponseList;
-import twitter4j.Status;
-import twitter4j.Twitter;
-import twitter4j.TwitterException;
-import twitter4j.TwitterFactory;
-import twitter4j.auth.AccessToken;
-import android.content.SharedPreferences;
-
-import com.ecs.sample.store.SharedPreferencesCredentialStore;
-
-public class TwitterUtils {
-
- public static boolean isAuthenticated(SharedPreferences prefs) {
-
- String[] tokens = new SharedPreferencesCredentialStore(prefs).read();
- AccessToken a = new AccessToken(tokens[0],tokens[1]);
- Twitter twitter = new TwitterFactory().getInstance();
- twitter.setOAuthConsumer(Constants.API_KEY, Constants.API_SECRET);
- twitter.setOAuthAccessToken(a);
-
- try {
- twitter.getAccountSettings();
- return true;
- } catch (TwitterException e) {
- return false;
- }
- }
-
- public static ResponseList getHomeTimeline(SharedPreferences prefs) throws Exception {
- String[] tokens = new SharedPreferencesCredentialStore(prefs).read();
- AccessToken a = new AccessToken(tokens[0],tokens[1]);
- Twitter twitter = new TwitterFactory().getInstance();
- twitter.setOAuthConsumer(Constants.API_KEY, Constants.API_SECRET);
- twitter.setOAuthAccessToken(a);
- ResponseList homeTimeline = twitter.getHomeTimeline();
- return homeTimeline;
- }
-
- public static void sendTweet(SharedPreferences prefs,String msg) throws Exception {
- String[] tokens = new SharedPreferencesCredentialStore(prefs).read();
- AccessToken a = new AccessToken(tokens[0],tokens[1]);
- Twitter twitter = new TwitterFactory().getInstance();
- twitter.setOAuthConsumer(Constants.API_KEY, Constants.API_SECRET);
- twitter.setOAuthAccessToken(a);
- twitter.updateStatus(msg);
- }
-}
diff --git a/src/com/ecs/sample/store/CredentialStore.java b/src/com/ecs/sample/store/CredentialStore.java
deleted file mode 100644
index 2669a7d..0000000
--- a/src/com/ecs/sample/store/CredentialStore.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package com.ecs.sample.store;
-
-
-public interface CredentialStore {
-
- String[] read();
- void write(String[]response);
- void clearCredentials();
-}
diff --git a/src/com/ecs/sample/store/SharedPreferencesCredentialStore.java b/src/com/ecs/sample/store/SharedPreferencesCredentialStore.java
deleted file mode 100644
index 614114d..0000000
--- a/src/com/ecs/sample/store/SharedPreferencesCredentialStore.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package com.ecs.sample.store;
-
-import android.content.SharedPreferences;
-import android.content.SharedPreferences.Editor;
-
-public class SharedPreferencesCredentialStore implements CredentialStore {
-
- private static final String TOKEN = "token";
- private static final String TOKEN_SECRET = "token_secret";
-
- private SharedPreferences prefs;
-
- public SharedPreferencesCredentialStore(SharedPreferences prefs) {
- this.prefs = prefs;
- }
-
- public String[] read() {
- String[] tokens = new String[2];
- tokens[0]=prefs.getString(TOKEN, "");
- tokens[1]=prefs.getString(TOKEN_SECRET, "");
- return tokens;
- }
-
- public void write(String[] tokens) {
- Editor editor = prefs.edit();
- editor.putString(TOKEN,tokens[0]);
- editor.putString(TOKEN_SECRET,tokens[1]);
- editor.commit();
- }
-
- public void clearCredentials() {
- Editor editor = prefs.edit();
- editor.remove(TOKEN);
- editor.remove(TOKEN_SECRET);
- editor.commit();
- }
-}
diff --git a/src/com/ecs/sample/util/QueryStringParser.java b/src/com/ecs/sample/util/QueryStringParser.java
deleted file mode 100644
index 9026162..0000000
--- a/src/com/ecs/sample/util/QueryStringParser.java
+++ /dev/null
@@ -1,68 +0,0 @@
-package com.ecs.sample.util;
-
-import java.net.URLDecoder;
-import java.util.HashMap;
-import java.util.Map;
-
-public class QueryStringParser {
- private final String queryString;
-
- private int paramBegin;
- private int paramEnd = -1;
- private int paramNameEnd;
- private String paramName;
- private String paramValue;
-
- private Map paramPairs = new HashMap();
-
- public QueryStringParser(String queryString) {
- this.queryString = queryString;
- while(next()) {
- paramPairs.put(getName(),getValue());
- }
- }
-
- public String getQueryParamValue(String name) {
- return paramPairs.get(name);
- }
-
- private boolean next() {
- int len = queryString.length();
- while (true) {
- if (paramEnd == len) {
- return false;
- }
- paramBegin = paramEnd == -1 ? 0 : paramEnd+1;
- int idx = queryString.indexOf('&', paramBegin);
- paramEnd = idx == -1 ? len : idx;
- if (paramEnd > paramBegin) {
- idx = queryString.indexOf('=', paramBegin);
- paramNameEnd = idx == -1 || idx > paramEnd ? paramEnd : idx;
- paramName = null;
- paramValue = null;
- return true;
- }
- }
- }
-
- private String getName() {
- if (paramName == null) {
- paramName = queryString.substring(paramBegin, paramNameEnd);
- }
- return paramName;
- }
-
- private String getValue() {
- if (paramValue == null) {
- if (paramNameEnd == paramEnd) {
- return null;
- }
- try {
- paramValue = URLDecoder.decode(queryString.substring(paramNameEnd+1, paramEnd));
- } catch (Exception ex) {
- throw new Error(ex);
- }
- }
- return paramValue;
- }
-}
\ No newline at end of file
diff --git a/stylesheets/pygment_trac.css b/stylesheets/pygment_trac.css
new file mode 100644
index 0000000..e65cedf
--- /dev/null
+++ b/stylesheets/pygment_trac.css
@@ -0,0 +1,70 @@
+.highlight .hll { background-color: #ffffcc }
+.highlight { background: #f0f3f3; }
+.highlight .c { color: #0099FF; font-style: italic } /* Comment */
+.highlight .err { color: #AA0000; background-color: #FFAAAA } /* Error */
+.highlight .k { color: #006699; font-weight: bold } /* Keyword */
+.highlight .o { color: #555555 } /* Operator */
+.highlight .cm { color: #0099FF; font-style: italic } /* Comment.Multiline */
+.highlight .cp { color: #009999 } /* Comment.Preproc */
+.highlight .c1 { color: #0099FF; font-style: italic } /* Comment.Single */
+.highlight .cs { color: #0099FF; font-weight: bold; font-style: italic } /* Comment.Special */
+.highlight .gd { background-color: #FFCCCC; border: 1px solid #CC0000 } /* Generic.Deleted */
+.highlight .ge { font-style: italic } /* Generic.Emph */
+.highlight .gr { color: #FF0000 } /* Generic.Error */
+.highlight .gh { color: #003300; font-weight: bold } /* Generic.Heading */
+.highlight .gi { background-color: #CCFFCC; border: 1px solid #00CC00 } /* Generic.Inserted */
+.highlight .go { color: #AAAAAA } /* Generic.Output */
+.highlight .gp { color: #000099; font-weight: bold } /* Generic.Prompt */
+.highlight .gs { font-weight: bold } /* Generic.Strong */
+.highlight .gu { color: #003300; font-weight: bold } /* Generic.Subheading */
+.highlight .gt { color: #99CC66 } /* Generic.Traceback */
+.highlight .kc { color: #006699; font-weight: bold } /* Keyword.Constant */
+.highlight .kd { color: #006699; font-weight: bold } /* Keyword.Declaration */
+.highlight .kn { color: #006699; font-weight: bold } /* Keyword.Namespace */
+.highlight .kp { color: #006699 } /* Keyword.Pseudo */
+.highlight .kr { color: #006699; font-weight: bold } /* Keyword.Reserved */
+.highlight .kt { color: #007788; font-weight: bold } /* Keyword.Type */
+.highlight .m { color: #FF6600 } /* Literal.Number */
+.highlight .s { color: #CC3300 } /* Literal.String */
+.highlight .na { color: #330099 } /* Name.Attribute */
+.highlight .nb { color: #336666 } /* Name.Builtin */
+.highlight .nc { color: #00AA88; font-weight: bold } /* Name.Class */
+.highlight .no { color: #336600 } /* Name.Constant */
+.highlight .nd { color: #9999FF } /* Name.Decorator */
+.highlight .ni { color: #999999; font-weight: bold } /* Name.Entity */
+.highlight .ne { color: #CC0000; font-weight: bold } /* Name.Exception */
+.highlight .nf { color: #CC00FF } /* Name.Function */
+.highlight .nl { color: #9999FF } /* Name.Label */
+.highlight .nn { color: #00CCFF; font-weight: bold } /* Name.Namespace */
+.highlight .nt { color: #330099; font-weight: bold } /* Name.Tag */
+.highlight .nv { color: #003333 } /* Name.Variable */
+.highlight .ow { color: #000000; font-weight: bold } /* Operator.Word */
+.highlight .w { color: #bbbbbb } /* Text.Whitespace */
+.highlight .mf { color: #FF6600 } /* Literal.Number.Float */
+.highlight .mh { color: #FF6600 } /* Literal.Number.Hex */
+.highlight .mi { color: #FF6600 } /* Literal.Number.Integer */
+.highlight .mo { color: #FF6600 } /* Literal.Number.Oct */
+.highlight .sb { color: #CC3300 } /* Literal.String.Backtick */
+.highlight .sc { color: #CC3300 } /* Literal.String.Char */
+.highlight .sd { color: #CC3300; font-style: italic } /* Literal.String.Doc */
+.highlight .s2 { color: #CC3300 } /* Literal.String.Double */
+.highlight .se { color: #CC3300; font-weight: bold } /* Literal.String.Escape */
+.highlight .sh { color: #CC3300 } /* Literal.String.Heredoc */
+.highlight .si { color: #AA0000 } /* Literal.String.Interpol */
+.highlight .sx { color: #CC3300 } /* Literal.String.Other */
+.highlight .sr { color: #33AAAA } /* Literal.String.Regex */
+.highlight .s1 { color: #CC3300 } /* Literal.String.Single */
+.highlight .ss { color: #FFCC33 } /* Literal.String.Symbol */
+.highlight .bp { color: #336666 } /* Name.Builtin.Pseudo */
+.highlight .vc { color: #003333 } /* Name.Variable.Class */
+.highlight .vg { color: #003333 } /* Name.Variable.Global */
+.highlight .vi { color: #003333 } /* Name.Variable.Instance */
+.highlight .il { color: #FF6600 } /* Literal.Number.Integer.Long */
+
+.type-csharp .highlight .k { color: #0000FF }
+.type-csharp .highlight .kt { color: #0000FF }
+.type-csharp .highlight .nf { color: #000000; font-weight: normal }
+.type-csharp .highlight .nc { color: #2B91AF }
+.type-csharp .highlight .nn { color: #000000 }
+.type-csharp .highlight .s { color: #A31515 }
+.type-csharp .highlight .sc { color: #A31515 }
diff --git a/stylesheets/stylesheet.css b/stylesheets/stylesheet.css
new file mode 100644
index 0000000..5f09e63
--- /dev/null
+++ b/stylesheets/stylesheet.css
@@ -0,0 +1,435 @@
+/*******************************************************************************
+Slate Theme for GitHub Pages
+by Jason Costello, @jsncostello
+*******************************************************************************/
+
+@import url(pygment_trac.css);
+
+/*******************************************************************************
+MeyerWeb Reset
+*******************************************************************************/
+
+html, body, div, span, applet, object, iframe,
+h1, h2, h3, h4, h5, h6, p, blockquote, pre,
+a, abbr, acronym, address, big, cite, code,
+del, dfn, em, img, ins, kbd, q, s, samp,
+small, strike, strong, sub, sup, tt, var,
+b, u, i, center,
+dl, dt, dd, ol, ul, li,
+fieldset, form, label, legend,
+table, caption, tbody, tfoot, thead, tr, th, td,
+article, aside, canvas, details, embed,
+figure, figcaption, footer, header, hgroup,
+menu, nav, output, ruby, section, summary,
+time, mark, audio, video {
+ margin: 0;
+ padding: 0;
+ border: 0;
+ font: inherit;
+ vertical-align: baseline;
+}
+
+/* HTML5 display-role reset for older browsers */
+article, aside, details, figcaption, figure,
+footer, header, hgroup, menu, nav, section {
+ display: block;
+}
+
+ol, ul {
+ list-style: none;
+}
+
+blockquote, q {
+}
+
+table {
+ border-collapse: collapse;
+ border-spacing: 0;
+}
+
+/*******************************************************************************
+Theme Styles
+*******************************************************************************/
+
+body {
+ box-sizing: border-box;
+ color:#373737;
+ background: #212121;
+ font-size: 16px;
+ font-family: 'Myriad Pro', Calibri, Helvetica, Arial, sans-serif;
+ line-height: 1.5;
+ -webkit-font-smoothing: antialiased;
+}
+
+h1, h2, h3, h4, h5, h6 {
+ margin: 10px 0;
+ font-weight: 700;
+ color:#222222;
+ font-family: 'Lucida Grande', 'Calibri', Helvetica, Arial, sans-serif;
+ letter-spacing: -1px;
+}
+
+h1 {
+ font-size: 36px;
+ font-weight: 700;
+}
+
+h2 {
+ padding-bottom: 10px;
+ font-size: 32px;
+ background: url('../images/bg_hr.png') repeat-x bottom;
+}
+
+h3 {
+ font-size: 24px;
+}
+
+h4 {
+ font-size: 21px;
+}
+
+h5 {
+ font-size: 18px;
+}
+
+h6 {
+ font-size: 16px;
+}
+
+p {
+ margin: 10px 0 15px 0;
+}
+
+footer p {
+ color: #f2f2f2;
+}
+
+a {
+ text-decoration: none;
+ color: #007edf;
+ text-shadow: none;
+
+ transition: color 0.5s ease;
+ transition: text-shadow 0.5s ease;
+ -webkit-transition: color 0.5s ease;
+ -webkit-transition: text-shadow 0.5s ease;
+ -moz-transition: color 0.5s ease;
+ -moz-transition: text-shadow 0.5s ease;
+ -o-transition: color 0.5s ease;
+ -o-transition: text-shadow 0.5s ease;
+ -ms-transition: color 0.5s ease;
+ -ms-transition: text-shadow 0.5s ease;
+}
+
+#main_content a:hover {
+ color: #0069ba;
+ text-shadow: #0090ff 0px 0px 2px;
+}
+
+footer a:hover {
+ color: #43adff;
+ text-shadow: #0090ff 0px 0px 2px;
+}
+
+em {
+ font-style: italic;
+}
+
+strong {
+ font-weight: bold;
+}
+
+img {
+ position: relative;
+ margin: 0 auto;
+ max-width: 739px;
+ padding: 5px;
+ margin: 10px 0 10px 0;
+
+ box-shadow: 0 0 5px #ebebeb;
+ -webkit-box-shadow: 0 0 5px #ebebeb;
+ -moz-box-shadow: 0 0 5px #ebebeb;
+ -o-box-shadow: 0 0 5px #ebebeb;
+ -ms-box-shadow: 0 0 5px #ebebeb;
+}
+
+pre, code {
+ width: 100%;
+ color: #222;
+ background-color: #fff;
+
+ font-family: Monaco, "Bitstream Vera Sans Mono", "Lucida Console", Terminal, monospace;
+ font-size: 14px;
+
+ border-radius: 2px;
+ -moz-border-radius: 2px;
+ -webkit-border-radius: 2px;
+
+
+
+}
+
+pre {
+ width: 100%;
+ padding: 10px;
+ box-shadow: 0 0 10px rgba(0,0,0,.1);
+ overflow: auto;
+}
+
+code {
+ padding: 3px;
+ margin: 0 3px;
+ box-shadow: 0 0 10px rgba(0,0,0,.1);
+}
+
+pre code {
+ display: block;
+ box-shadow: none;
+}
+
+blockquote {
+ color: #666;
+ margin-bottom: 20px;
+ padding: 0 0 0 20px;
+ border-left: 3px solid #bbb;
+}
+
+ul, ol, dl {
+ margin-bottom: 15px
+}
+
+ul li {
+ list-style: inside;
+ padding-left: 20px;
+}
+
+ol li {
+ list-style: decimal inside;
+ padding-left: 20px;
+}
+
+dl dt {
+ font-weight: bold;
+}
+
+dl dd {
+ padding-left: 20px;
+ font-style: italic;
+}
+
+dl p {
+ padding-left: 20px;
+ font-style: italic;
+}
+
+hr {
+ height: 1px;
+ margin-bottom: 5px;
+ border: none;
+ background: url('../images/bg_hr.png') repeat-x center;
+}
+
+table {
+ border: 1px solid #373737;
+ margin-bottom: 20px;
+ text-align: left;
+ }
+
+th {
+ font-family: 'Lucida Grande', 'Helvetica Neue', Helvetica, Arial, sans-serif;
+ padding: 10px;
+ background: #373737;
+ color: #fff;
+ }
+
+td {
+ padding: 10px;
+ border: 1px solid #373737;
+ }
+
+form {
+ background: #f2f2f2;
+ padding: 20px;
+}
+
+img {
+ width: 100%;
+ max-width: 100%;
+}
+
+/*******************************************************************************
+Full-Width Styles
+*******************************************************************************/
+
+.outer {
+ width: 100%;
+}
+
+.inner {
+ position: relative;
+ max-width: 640px;
+ padding: 20px 10px;
+ margin: 0 auto;
+}
+
+#forkme_banner {
+ display: block;
+ position: absolute;
+ top:0;
+ right: 10px;
+ z-index: 10;
+ padding: 10px 50px 10px 10px;
+ color: #fff;
+ background: url('../images/blacktocat.png') #0090ff no-repeat 95% 50%;
+ font-weight: 700;
+ box-shadow: 0 0 10px rgba(0,0,0,.5);
+ border-bottom-left-radius: 2px;
+ border-bottom-right-radius: 2px;
+}
+
+#followme_banner {
+ position: absolute;
+ top: 50px;
+ right: 15px;
+ z-index: 10;
+ padding: 10px;
+ border-bottom-left-radius: 2px;
+ border-bottom-right-radius: 2px;
+}
+
+#header_wrap {
+ background: #212121;
+ background: -moz-linear-gradient(top, #373737, #212121);
+ background: -webkit-linear-gradient(top, #373737, #212121);
+ background: -ms-linear-gradient(top, #373737, #212121);
+ background: -o-linear-gradient(top, #373737, #212121);
+ background: linear-gradient(top, #373737, #212121);
+}
+
+#header_wrap .inner {
+ padding: 50px 10px 30px 10px;
+}
+
+#project_title {
+ margin: 0;
+ color: #fff;
+ font-size: 42px;
+ font-weight: 700;
+ text-shadow: #111 0px 0px 10px;
+}
+
+#project_tagline {
+ color: #fff;
+ font-size: 24px;
+ font-weight: 300;
+ background: none;
+ text-shadow: #111 0px 0px 10px;
+}
+
+#downloads {
+ position: absolute;
+ width: 640px;
+ z-index: 10;
+ bottom: -40px;
+ right: 0;
+ height: 70px;
+}
+
+.zip_download_link {
+ display: block;
+ float: right;
+ width: 90px;
+ height:70px;
+ text-indent: -5000px;
+ overflow: hidden;
+ background: url(../images/sprite_download.png) no-repeat bottom left;
+}
+
+.tar_download_link {
+ display: block;
+ float: right;
+ width: 90px;
+ height:70px;
+ text-indent: -5000px;
+ overflow: hidden;
+ background: url(../images/sprite_download.png) no-repeat bottom right;
+ margin-left: 10px;
+}
+
+.zip_download_link:hover {
+ background: url(../images/sprite_download.png) no-repeat top left;
+}
+
+.tar_download_link:hover {
+ background: url(../images/sprite_download.png) no-repeat top right;
+}
+
+#main_content_wrap {
+ background: #f2f2f2;
+ border-top: 1px solid #111;
+ border-bottom: 1px solid #111;
+}
+
+#main_content {
+ padding-top: 40px;
+}
+
+#footer_wrap {
+ background: #212121;
+}
+
+
+
+/*******************************************************************************
+Small Device Styles
+*******************************************************************************/
+
+@media screen and (max-width: 480px) {
+ body {
+ font-size:14px;
+ }
+
+ #downloads {
+ display: none;
+ }
+
+ .inner {
+ min-width: 320px;
+ max-width: 480px;
+ }
+
+ #project_title {
+ font-size: 32px;
+ }
+
+ h1 {
+ font-size: 28px;
+ }
+
+ h2 {
+ font-size: 24px;
+ }
+
+ h3 {
+ font-size: 21px;
+ }
+
+ h4 {
+ font-size: 18px;
+ }
+
+ h5 {
+ font-size: 14px;
+ }
+
+ h6 {
+ font-size: 12px;
+ }
+
+ code, pre {
+ min-width: 320px;
+ max-width: 480px;
+ font-size: 11px;
+ }
+
+}