blob: 5281670974c25287efaf9d72ea21c3258dd287c7 [file] [log] [blame]
/*
* Copyright (C) 2009 The Android Open Source Project
*
* 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.cooliris.app;
import android.app.Activity;
import android.content.Context;
import android.os.Handler;
import android.os.HandlerThread;
import android.util.DisplayMetrics;
import android.widget.Toast;
import java.util.HashMap;
import java.util.TimeZone;
import com.cooliris.media.ReverseGeocoder;
/*
* TODO: consider adding HashMap<object, object> for globals globals
* TODO: hook up other activity classes to App (besides Gallery and Search)
*/
public class App {
static private final HashMap<Context, App> mMap = new HashMap<Context, App>();
static public App get(Context context) {
return mMap.get(context);
}
public static final TimeZone CURRENT_TIME_ZONE = TimeZone.getDefault();
public static float PIXEL_DENSITY = 0.0f;
private final Context mContext;
private final HandlerThread mHandlerThread = new HandlerThread("AppHandlerThread");
private final Handler mHandler;
private ReverseGeocoder mReverseGeocoder = null;
private boolean mPaused = false;
public App(Context context) {
// register
mMap.put(context, this);
mContext = context;
if(PIXEL_DENSITY == 0.0f) {
DisplayMetrics metrics = new DisplayMetrics();
((Activity)mContext).getWindowManager().getDefaultDisplay().getMetrics(metrics);
PIXEL_DENSITY = metrics.density;
}
mHandlerThread.start();
mHandler = new Handler(mHandlerThread.getLooper());
mReverseGeocoder = new ReverseGeocoder(mContext);
}
public void shutdown() {
mReverseGeocoder.shutdown();
// unregister
mMap.put(mContext, null);
}
public Context getContext() {
return mContext;
}
public Handler getHandler() {
while (mHandler == null) {
// Wait till the handler is created.
;
}
return mHandler;
}
public ReverseGeocoder getReverseGeocoder() {
return mReverseGeocoder;
}
public boolean isPaused() {
return mPaused;
}
// public void onCreate(Bundle savedInstanceState) {
// }
//
// public void onStart() {
// }
//
// public void onRestart() {
// }
public void onResume() {
mPaused = false;
}
public void onPause() {
mReverseGeocoder.flushCache();
mPaused = true;
}
// public void onStop() {
//
// }
//
// public void onDestroy() {
// }
public void showToast(final String string, final int duration) {
mHandler.post(new Runnable() {
public void run() {
Toast.makeText(mContext, string, duration).show();
}
});
}
}