ラベル picasa の投稿を表示しています。 すべての投稿を表示
ラベル picasa の投稿を表示しています。 すべての投稿を表示

2011年4月9日土曜日

アルバム一覧をサムネイル画像で表示したい

-やりたいこと
Picasaアルバムのように、アルバム一覧をサムネイル画像で表示したい

-利用したライブラリ
Three20 1.0.4

Three20 の TTThumbsViewController を使えば、写真一覧をサムネイルで表示→任意の写真をクリック→写真を表示する は、簡単に実装できる。しかし、ここでは、「写真一覧」の前に、Picasaアルバム のようなアルバム一覧のサムネイルを表示したい。

-実装したい処理の手順
--before--
1
写真一覧をサムネイルで表示
2
任意の写真をクリック
3
写真の表示

--after--
1
アルバム一覧をサムネイルで表示

2
選択したアルバムが持つ写真をサムネイルで一覧表示
3
任意の写真をクリック
4
写真の表示

-------------------------------------
-Three20UI.xcodeproj でどんな実装をしているのか確認する

--任意の写真を選択したあとに呼び出されるメソッド
---メソッド名
- (void)thumbsTableViewCell:(TTThumbsTableViewCell*)cell didSelectPhoto:(id)photo;
---定義ファイル名
TTThumbsTableViewCellDelegate.h

--上記の関数を実装しているファイル名
TTThumbsViewController.m

- (void)thumbsTableViewCell:didSelectPhoto: メソッドはデリゲートメソッドなので、自分のメソッド内でこのメソッドをデリゲートすればいいのかなと考えたが、次の処理(写真一覧をサムネイルで表示する)では Three20 に処理を任せるので、superクラス(TTThumbsViewController)の処理も残しておきたい。というわけで、オーバーライドするのが正解。
-------------------------------------
-実装例

MyViewController.m
- (void)picasaWebDataSourceFetchAlbumCompleted:(PhotoSet *)dataSource{

 MyThumbsViewController *thumbs = [[MyThumbsViewController alloc] initForPhotoSource:dataSource 
                withPicasaWebDataSource:self.picasaDataSource];

 [self.navigationController pushViewController:thumbs animated:YES]; // この後、Three20 の処理に移る
}


MyThumbsViewController.m
- (void)thumbsTableViewCell:(TTThumbsTableViewCell*)cell didSelectPhoto:(id)photo {
 // 自分のメソッド内で thumbsTableViewCell:didSelectPhoto: をオーバーライドして処理を Three20 から自分の実装に処理を戻す
 
 NSInteger index = photo.index; // 選択したアルバムのインデックスを取得しておく
 [self.picasaDataSource fetchSelectedAlbum:index]; // Picasa Web Albums Data API の fetch 処理を呼び出す
}

この後、TTThumbsViewController で初期化したオブジェクトを pushViewController: メソッドの引数に設定する。そして、選択したアルバムがもつ写真一覧をサムネイルで表示する処理を Three20 でやってもらう

MyThumbsViewController.m
- (void)picasaWebDataSourceFetchAlbumPhotosCompleted:(PhotoSet *)dataSource{
 TTThumbsViewController *thumbs = [[TTThumbsViewController alloc] init];
 thumbs.photoSource = dataSource;
 
 [self.navigationController pushViewController:thumbs animated:YES];
 
}

2011年2月24日木曜日

アルバムの一覧をサムネイルで表示する

Contains the URL of a thumbnail of a photo or album cover.

<media:thumbnail> エレメントにあるURLを利用してアルバムを一覧表示できる。

参照:
Picasa Web Albums elements reference -> Media RSS (media namespace) element reference -> media:thumbnail

GDataObject の基本

GDataObject についての説明を picasa の場合で考えてみる。
Servers respond to client GData requests with feeds that include lists of entries.

Each feed and entry is composed of elements. Elements represent either standard Atom XML elements, or custom-defined GData elements.

Feeds, entries, and elements are derived from GDataObject, the base class that implements XML parsing and generation.

おおよそのイメージはこんな感じなのだろうか。



参照:
gdata-objectivec-client -> Wiki -> GDataObjeCIntroduction -> Google Data APIs Basics

2010年12月2日木曜日

GDA のクラス関係

Google Data APIs Objective-c Client Library (GDA) の、picasa 関連のクラス関係図をxcode で一部可視化してみる。






GDataFeedPhotoBase と GDataEntryPhotoBase のスーパークラスは共に、GDataObject クラスである。

--------
xcode でクラス図を作成する。
設計 -> クラスモデル -> クイックモデル

2010年11月6日土曜日

iPhone で Picasa クライアントを作成する準備

Google Date API
http://code.google.com/intl/ja/apis/gdata/index.html

Google Date API にアクセスして、Picasa データを取得する。
iPhone で利用するためには、gdata-objectivec-client を静的ライブラリとして組み込む。

参考資料
BuildingTheLibrary の、Linking to the iPhone Static Library の内容に(ほぼ)従う。
http://code.google.com/p/gdata-objectivec-client/wiki/BuildingTheLibrary

ライブラリの準備
下記場所からダウンロードできるが、ビルドエラーが出る。
ライブラリ名:gdata-objective-client-1.10.0.zip
http://code.google.com/p/gdata-objectivec-client/downloads/list

なので、svn から直接ダウンロードして、iPhone プロジェクトのディレクトリに入れる。
http://code.google.com/p/gdata-objectivec-client/source/checkout
svn checkout http://gdata-objectivec-client.googlecode.com/svn/trunk/ gdataClient
mv  gdataClient samplePicasa


gdata-objectivec-client をビルドするための準備
1.
gdataClient -> Source -> GData.xcodeproj を開く。
2.
ビルドターゲットを GDataTouchStaticLib に変更する。
 今回作成する静的ライブラリはコレなので、他はターゲットから外す。
3-1.
ターゲット -> GDataTouchStaticLib -> 情報を見る -> ビルドタブ 構成:release を表示する。
設定 -> ベースSDK を、iPhoneデバイス4.0 に変更する。
設定 -> アーキテクチャ を、Standard に変更する。

3-2.
その他のCフラグに以下を追加する。
-DGDATA_INCLUDE_PHOTOS_SERVICE=1
 picasa を利用する場合の設定はこのようになる。それ以外のgdataを利用する場合は、参考 *2 を参照する。



4.
Simulator, Device それぞれReleaseビルドを実行する。
5.
出力されたライブラリを lipo コマンドを使用して統合する。
cd samplePicasa/gdataClient/Source/build
lipo -create Release-iphoneos/libGDataTouchStaticLib.a Release-iphonesimulator/libGDataTouchStaticLib.a -output libGDataTouchStaticLib.a


iPhoneプロジェクトにライブラリを追加する
6.
libGDataTouchStaticLib.a を iPhoneプロジェクトに、追加 > 既存のファイル で追加する。
 今回のiphoneプロジェクト名は samplePicasa とする。




7-1.
samplePicasa -> 情報を見る -> ビルド 全ての構成 を表示する。
他のリンカフラグに、-ObjC -lxml2 を追加する。




7-2.
ヘッダ検索パスに、次の2つのパスを追加する。
/usr/include/libxml2 → 再帰的にチェックする。
$(SRCROOT)/gdataClient/Source/build/Release-$(PLATFORM_NAME)/Headers



8.
適当なファイルに #import "GData.h" を追加してビルドが通れば完了。


参考
*1
iPhone開発ガイド 第3章アプリケーションの実行 ビルド環境の設定
*2
Removing Unneeded Code