1cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich/*
2cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich * Copyright (C) 2007 The Android Open Source Project
3cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich *
4cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich * Licensed under the Apache License, Version 2.0 (the "License");
5cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich * you may not use this file except in compliance with the License.
6cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich * You may obtain a copy of the License at
7cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich *
8cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich *      http://www.apache.org/licenses/LICENSE-2.0
9cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich *
10cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich * Unless required by applicable law or agreed to in writing, software
11cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich * distributed under the License is distributed on an "AS IS" BASIS,
12cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich * See the License for the specific language governing permissions and
14cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich * limitations under the License.
15cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich */
16cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich
17cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichpackage com.android.quake;
18cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich
19cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichimport android.app.Activity;
20cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichimport android.os.Bundle;
21cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichimport android.util.Log;
22cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichimport android.view.WindowManager;
23cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich
24cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichimport java.io.File;
25cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich
26cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich
27cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevichpublic class QuakeActivity extends Activity {
28cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich
29cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich    QuakeView mQuakeView;
30cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich
31cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich    static QuakeLib mQuakeLib;
32cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich
33cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich    boolean mKeepScreenOn = true;
34cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich
35cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich    @Override protected void onCreate(Bundle icicle) {
36cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich        Log.i("QuakeActivity", "onCreate");
37cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich        super.onCreate(icicle);
380fd2294f2b8fd5fb19a5918ffc79208c772d6d7aJack Palevich        if (USE_DOWNLOADER) {
390fd2294f2b8fd5fb19a5918ffc79208c772d6d7aJack Palevich            if (! DownloaderActivity.ensureDownloaded(this,
400fd2294f2b8fd5fb19a5918ffc79208c772d6d7aJack Palevich                    getString(R.string.quake_customDownloadText), FILE_CONFIG_URL,
4188f245b8c1cf67e8c06c8f2b42bbfb2e1bcec993Jack Palevich                    CONFIG_VERSION, SDCARD_DATA_PATH, USER_AGENT)) {
420fd2294f2b8fd5fb19a5918ffc79208c772d6d7aJack Palevich                return;
430fd2294f2b8fd5fb19a5918ffc79208c772d6d7aJack Palevich            }
44cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich        }
45cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich
46cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich        if (foundQuakeData()) {
47cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich
48cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich            if (mQuakeLib == null) {
49cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich                mQuakeLib = new QuakeLib();
50cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich                if(! mQuakeLib.init()) {
51cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich                    setContentView(new QuakeViewNoData(
52cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich                            getApplication(),
53cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich                            QuakeViewNoData.E_INITFAILED));
54cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich                    return;
55cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich                }
56cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich            }
57cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich
58cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich            if (mKeepScreenOn) {
59cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich                getWindow().setFlags(
60cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich                        WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON,
61cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich                        WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
62cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich            }
63cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich
64cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich            if (mQuakeView == null) {
65cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich                mQuakeView = new
66cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich                QuakeView(getApplication());
67cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich                mQuakeView.setQuakeLib(mQuakeLib);
68cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich            }
69cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich            setContentView(mQuakeView);
70cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich        }
71cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich        else {
72cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich            setContentView(new QuakeViewNoData(getApplication(),
73cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich                            QuakeViewNoData.E_NODATA));
74cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich        }
75cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich    }
76cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich
77cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich    @Override protected void onPause() {
78cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich        super.onPause();
79cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich        if (mQuakeView != null) {
80cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich            mQuakeView.onPause();
81cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich        }
82cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich    }
83cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich
84cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich    @Override protected void onResume() {
85cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich        super.onResume();
86cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich        if (mQuakeView != null) {
87cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich            mQuakeView.onResume();
88cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich        }
89cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich    }
90cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich
91cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich    @Override protected void onDestroy() {
92cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich        super.onDestroy();
93cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich        if (mQuakeLib != null) {
94cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich            mQuakeLib.quit();
95cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich        }
96cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich    }
97cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich
98cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich    private boolean foundQuakeData() {
9988f245b8c1cf67e8c06c8f2b42bbfb2e1bcec993Jack Palevich        return fileExists(SDCARD_DATA_PATH + PAK0_PATH)
10088f245b8c1cf67e8c06c8f2b42bbfb2e1bcec993Jack Palevich		|| fileExists(INTERNAL_DATA_PATH + PAK0_PATH);
101cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich    }
102cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich
103cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich    private boolean fileExists(String s) {
104cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich        File f = new File(s);
105cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich        return f.exists();
106cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich    }
107cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich
1080fd2294f2b8fd5fb19a5918ffc79208c772d6d7aJack Palevich    private final static boolean USE_DOWNLOADER = false;
1090fd2294f2b8fd5fb19a5918ffc79208c772d6d7aJack Palevich
110cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich    private final static String FILE_CONFIG_URL =
11188f245b8c1cf67e8c06c8f2b42bbfb2e1bcec993Jack Palevich        "http://example.com/android/quake/quake11.config";
112cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich    private final static String CONFIG_VERSION = "1.1";
11388f245b8c1cf67e8c06c8f2b42bbfb2e1bcec993Jack Palevich    private final static String SDCARD_DATA_PATH = "/sdcard/data/quake";
11488f245b8c1cf67e8c06c8f2b42bbfb2e1bcec993Jack Palevich    private final static String INTERNAL_DATA_PATH = "/data/quake";
11588f245b8c1cf67e8c06c8f2b42bbfb2e1bcec993Jack Palevich    private final static String PAK0_PATH = "/id1/pak0.pak";
116cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich    private final static String USER_AGENT = "Android Quake Downloader";
117cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich
118cabb5dd768714a7df34469a096b5e1aa815a2c22Jack Palevich}
119