/* * Copyright (C) 2011 Google Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.google.android.panoramio; import android.app.Activity; import android.app.Dialog; import android.app.SearchManager; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.os.CountDownTimer; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.view.ViewGroup.OnHierarchyChangeListener; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.GridView; import android.widget.ProgressBar; import android.widget.TextView; //Copyright 2011 Google Inc. All Rights Reserved. import org.json.JSONException; import java.io.IOException; import java.net.URISyntaxException; /** * The main Activity which displays the grid of photos fetched from * Panoramio service. */ public class ImageGrid extends Activity implements OnClickListener { private static final String DEFAULT_QUERY = "San Francisco"; ImageManager mImageManager; private static boolean isSplashShown = false; private String query; private Context mContext; private TextView textView; private ProgressBar progressBar; /** * Simple Dialog used to show the splash screen. */ protected Dialog mSplashDialog; @Override protected void onDestroy() { super.onStop(); mImageManager.clear(); } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mContext = this; mImageManager = ImageManager.getInstance(mContext); try { handleIntent(getIntent()); } catch (final IOException e) { e.printStackTrace(); } catch (final URISyntaxException e) { e.printStackTrace(); } catch (final JSONException e) { e.printStackTrace(); } if (!isSplashShown) { setContentView(R.layout.splash_screen); isSplashShown = true; CountDownTimer timer = new CountDownTimer(3000, 1000) { public void onTick(long millisUntilFinished) { } public void onFinish() { initGridView(); } }.start(); } else { initGridView(); } } private GridView gridView; private void initGridView() { setContentView(R.layout.image_grid); gridView = (GridView) findViewById(R.id.gridview); final ImageAdapter imageAdapter = new ImageAdapter(mContext); gridView.setAdapter(imageAdapter); progressBar = (ProgressBar) findViewById(R.id.a_progressbar); gridView.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> parent, View v, int position, long id) { // Create an intent to show a particular item. final Intent i = new Intent(ImageGrid.this, ViewImage.class); i.putExtra(ImageManager.PANORAMIO_ITEM_EXTRA, position); startActivity(i); } }); gridView.setOnHierarchyChangeListener(new OnHierarchyChangeListener() { public void onChildViewAdded(View parent, View child) { progressBar.setVisibility(View.INVISIBLE); ((ViewGroup) parent).getChildAt(0).setSelected(true); } public void onChildViewRemoved(View parent, View child) { } }); textView = (TextView) findViewById(R.id.place_name); textView.setText(query); PanoramioLeftNavService.getLeftNavBar(this); gridView.requestFocus(); } public void onClick(View view) { onSearchRequested(); } @Override protected void onNewIntent(Intent intent) { setIntent(intent); progressBar.setVisibility(View.VISIBLE); try { handleIntent(intent); } catch (final IOException e) { e.printStackTrace(); } catch (final URISyntaxException e) { e.printStackTrace(); } catch (final JSONException e) { e.printStackTrace(); } initGridView(); } private void handleIntent(Intent intent) throws IOException, URISyntaxException, JSONException { if (Intent.ACTION_SEARCH.equals(intent.getAction())) { query = intent.getStringExtra(SearchManager.QUERY); } else { query = intent.getStringExtra("query"); } if (query == null || query.isEmpty()) { query = DEFAULT_QUERY; } // Start downloading mImageManager.load(query); } }