Merge branch 'master' of https://github.com/reicast/reicast-emulator
|
@ -10,3 +10,29 @@ newdc/android/libnewdc/bin/libnewdc.jar
|
||||||
newdc/android/libnewdc/bin/classes/com/example/newdc/JNIdc.class
|
newdc/android/libnewdc/bin/classes/com/example/newdc/JNIdc.class
|
||||||
|
|
||||||
shell/android/assets/build
|
shell/android/assets/build
|
||||||
|
shell/android/tools
|
||||||
|
|
||||||
|
# iOS/Xcode general stuff
|
||||||
|
.DS_Store
|
||||||
|
*/build/*
|
||||||
|
*.pbxuser
|
||||||
|
!default.pbxuser
|
||||||
|
*.mode1v3
|
||||||
|
!default.mode1v3
|
||||||
|
*.mode2v3
|
||||||
|
!default.mode2v3
|
||||||
|
*.perspectivev3
|
||||||
|
!default.perspectivev3
|
||||||
|
xcuserdata
|
||||||
|
profile
|
||||||
|
*.moved-aside
|
||||||
|
DerivedData
|
||||||
|
.idea/
|
||||||
|
*.hmap
|
||||||
|
emulator.xccheckout
|
||||||
|
reicast.xccheckout
|
||||||
|
build/*
|
||||||
|
*.so
|
||||||
|
*Karen_angelXwind*
|
||||||
|
local.properties
|
||||||
|
ant.properties
|
||||||
|
|
55
README.md
|
@ -1,8 +1,8 @@
|
||||||
reicast
|
reicast
|
||||||
===========
|
===========
|
||||||
reicast is a sega dreamcast emulator
|
reicast is a multi-platform Sega Dreamcast emulator.
|
||||||
|
|
||||||
This is developer oriented resource, if you just want bins head over to http://reicast.com
|
This is a developer-oriented resource, if you just want bins head over to http://reicast.com/
|
||||||
|
|
||||||
Caution
|
Caution
|
||||||
-------
|
-------
|
||||||
|
@ -16,7 +16,7 @@ If you are interested into further porting/adapting/whatever, *please* don't for
|
||||||
|
|
||||||
Let's try to keep everything under a single project :)
|
Let's try to keep everything under a single project :)
|
||||||
|
|
||||||
To build for android
|
Building for Android
|
||||||
--------------------
|
--------------------
|
||||||
Tools required:
|
Tools required:
|
||||||
* Latest Android SDK
|
* Latest Android SDK
|
||||||
|
@ -31,31 +31,50 @@ Tools required:
|
||||||
|
|
||||||
From project root directory:
|
From project root directory:
|
||||||
```
|
```
|
||||||
export ANDROID_NDK=\ <-Type the full path to your NDK here
|
export ANDROID_NDK=/ # Type the full path to your NDK here
|
||||||
|
|
||||||
cd shell\android
|
cd shell/android/
|
||||||
|
|
||||||
android update project -p . --target "android-19"
|
android update project -p . --target "android-19"
|
||||||
|
|
||||||
ant debug
|
ant debug
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Building for iOS
|
||||||
|
----------------
|
||||||
|
Tools required:
|
||||||
|
* Latest Xcode
|
||||||
|
- https://developer.apple.com/xcode/downloads/
|
||||||
|
* An iOS device (reicast will not compile for the iOS Simulator)
|
||||||
|
* iOS 5.x ~ 7.x
|
||||||
|
* iOSOpenDev if developing without an official Apple certificate
|
||||||
|
- http://iosopendev.com/download/
|
||||||
|
|
||||||
|
From project root directory:
|
||||||
|
|
||||||
|
```
|
||||||
|
cd shell/ios/
|
||||||
|
|
||||||
|
xcodebuild -configuration Release
|
||||||
|
```
|
||||||
|
|
||||||
Translations
|
Translations
|
||||||
------------
|
------------
|
||||||
New and updated translations are always appreciated!
|
New and updated translations are always appreciated!
|
||||||
All we ask is that you not use “regional” phrases that may not be generally understood.
|
All we ask is that you not use “regional” phrases that may not be generally understood.
|
||||||
|
|
||||||
Translations can be submitted as a pull request or at http://reicast.loungekatt.com/translate
|
Translations can be submitted as a pull request
|
||||||
|
|
||||||
|
|
||||||
Beta versions
|
Beta versions
|
||||||
-------------
|
-------------
|
||||||
Compiled test versions are available at reicast.loungekatt.com
|
Automated Git builds can be found at http://reicast.angelxwind.net/ for iOS and Android.
|
||||||
|
|
||||||
Donations and stuff
|
Donations and stuff
|
||||||
-------------------
|
-------------------
|
||||||
Well, glad you liked the project so far!
|
Well, glad you liked the project so far!
|
||||||
|
|
||||||
We're currently short on hardware
|
We're currently short on hardware.
|
||||||
|
|
||||||
If you would like to donate some devices, get in touch at team@reicast.com. GLES3 capable stuff, some mainstream hardware and rarities would be extremely appreciated.
|
If you would like to donate some devices, get in touch at team@reicast.com. GLES3 capable stuff, some mainstream hardware and rarities would be extremely appreciated.
|
||||||
Keep in mind we're located in Greece for the most part
|
Keep in mind we're located in Greece for the most part
|
||||||
|
@ -67,32 +86,39 @@ This has been tested/developed on
|
||||||
* Some Chinese tablet
|
* Some Chinese tablet
|
||||||
* OUYA
|
* OUYA
|
||||||
* Various development boards
|
* Various development boards
|
||||||
* gcw zero
|
* GCW Zero
|
||||||
|
|
||||||
We had to buy all of these, except the gcw zero and a beaglebone which were donated (thanks! You rock!)
|
We had to buy all of these, except the GCW Zero and a BeagleBone which were donated (Thanks! You rock!)
|
||||||
|
|
||||||
Apart from that, we don't accept monetary donations right now.
|
Apart from that, we don't accept monetary donations right now.
|
||||||
We also don't plan to be releasing a premium version at any store.
|
We also don't plan to be releasing a premium version at any store.
|
||||||
Most of the project has been developed by drk||Raziel (aka, skmp, drk, Raz, etc) but it has been based on the
|
Most of the project has been developed by drk||Raziel (aka, skmp, drk, Raz, etc) but it has been based on the
|
||||||
works of multiple people. It would be extremely unfair to charge for it and get all the credit :)
|
works of multiple people. It would be extremely unfair to charge for it and get all the credit :)
|
||||||
|
|
||||||
|
|
||||||
We're planning for an indiegogo campaign later on to help with sustained development and running costs, so follow @reicastdc on twitter for updates
|
We're planning for an indiegogo campaign later on to help with sustained development and running costs, so follow @reicastdc on twitter for updates
|
||||||
|
|
||||||
Other Testing
|
Other Testing
|
||||||
-------------
|
-------------
|
||||||
These devices are tested by contributors regularly
|
These devices are tested by Karen/angelXwind:
|
||||||
|
* Apple iPhone 4 GSM Rev0 (N90AP)
|
||||||
|
* Apple iPhone 4 CDMA (N92AP)
|
||||||
|
* Apple iPod touch 4 (N81AP)
|
||||||
|
* Apple iPod touch 3G (N18AP)
|
||||||
|
* Apple iPhone 3GS (N88AP)
|
||||||
|
* Sony Xperia X10a (es209ra)
|
||||||
|
* Amazon Kindle Fire HD 7 (tate-pvt-08)
|
||||||
|
|
||||||
|
These devices are tested by contributors regularly:
|
||||||
* Nvidia Shield
|
* Nvidia Shield
|
||||||
* Nexus 5 / 7
|
* Nexus 5 / 7
|
||||||
* Xperia Play
|
* Xperia Play
|
||||||
|
|
||||||
|
|
||||||
Team
|
Team
|
||||||
----
|
----
|
||||||
|
|
||||||
You can check the currently active committers on [the pretty graphs page](https://github.com/reicast/reicast-emulator/graphs/contributors)
|
You can check the currently active committers on [the pretty graphs page](https://github.com/reicast/reicast-emulator/graphs/contributors)
|
||||||
|
|
||||||
Chat on freenode #reicast.
|
Our IRC channel is [#reicast @ chat.freenode.net](irc://chat.freenode.net/reicast).
|
||||||
|
|
||||||
The original reicast team consisted of drk||Raziel (mostly just writing code), PsyMan (debugging/testing and everything else) and a little bit of gb_away
|
The original reicast team consisted of drk||Raziel (mostly just writing code), PsyMan (debugging/testing and everything else) and a little bit of gb_away
|
||||||
|
|
||||||
|
@ -101,6 +127,5 @@ Special thanks
|
||||||
--------------
|
--------------
|
||||||
In previous iterations a lot of people have worked on this, notably David Miller (aka, ZeZu), the nullDC team, friends from #pcsx2 and all over the world :)
|
In previous iterations a lot of people have worked on this, notably David Miller (aka, ZeZu), the nullDC team, friends from #pcsx2 and all over the world :)
|
||||||
|
|
||||||
|
|
||||||
[](https://bitdeli.com/free "Bitdeli Badge")
|
[](https://bitdeli.com/free "Bitdeli Badge")
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
eclipse.preferences.version=1
|
eclipse.preferences.version=1
|
||||||
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
|
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
|
||||||
org.eclipse.jdt.core.compiler.compliance=1.5
|
org.eclipse.jdt.core.compiler.compliance=1.6
|
||||||
org.eclipse.jdt.core.compiler.source=1.5
|
org.eclipse.jdt.core.compiler.source=1.6
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
382f2e5c19c85627f23bdc8e6cc2c59c97262bc3
|
6097b6f5b009454b5c041f89f429f96aa1e795f6
|
|
@ -36,35 +36,4 @@
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
android:text="@string/app_site" />
|
android:text="@string/app_site" />
|
||||||
|
|
||||||
<SlidingDrawer
|
|
||||||
android:id="@+id/slidingGithub"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:content="@+id/changelist"
|
|
||||||
android:handle="@+id/handle"
|
|
||||||
android:topOffset="40dp" >
|
|
||||||
|
|
||||||
<Button
|
|
||||||
android:id="@+id/handle"
|
|
||||||
android:layout_width="48dp"
|
|
||||||
android:layout_height="48dp"
|
|
||||||
android:background="@drawable/ic_github" >
|
|
||||||
</Button>
|
|
||||||
|
|
||||||
<RelativeLayout
|
|
||||||
android:id="@+id/changelist"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:orientation="vertical" >
|
|
||||||
|
|
||||||
<ListView
|
|
||||||
android:id="@+id/list"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:divider="#b5b5b5"
|
|
||||||
android:dividerHeight="1dp"
|
|
||||||
android:listSelector="@drawable/list_selector" />
|
|
||||||
</RelativeLayout>
|
|
||||||
</SlidingDrawer>
|
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
|
@ -1,68 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
android:id="@+id/change"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:background="@drawable/list_selector"
|
|
||||||
android:orientation="horizontal"
|
|
||||||
android:padding="5dip" >
|
|
||||||
|
|
||||||
<!-- ListRow Left Thumbnail image -->
|
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:id="@+id/thumbnail"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_alignParentLeft="true"
|
|
||||||
android:layout_marginRight="5dip"
|
|
||||||
android:background="@drawable/image_bg"
|
|
||||||
android:padding="3dip" >
|
|
||||||
|
|
||||||
<ImageView
|
|
||||||
android:id="@+id/avatar"
|
|
||||||
android:layout_width="60dip"
|
|
||||||
android:layout_height="60dip"
|
|
||||||
android:gravity="center"
|
|
||||||
android:src="@drawable/ic_github" />
|
|
||||||
</LinearLayout>
|
|
||||||
<!-- Main Commit Content -->
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/committer"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginTop="16dip"
|
|
||||||
android:layout_toRightOf="@+id/thumbnail"
|
|
||||||
android:text="GitHub Committer"
|
|
||||||
android:textColor="#040404"
|
|
||||||
android:textSize="14sp"
|
|
||||||
android:textStyle="bold"
|
|
||||||
android:typeface="sans" />
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/title"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_below="@id/committer"
|
|
||||||
android:layout_marginTop="2dip"
|
|
||||||
android:layout_toRightOf="@+id/thumbnail"
|
|
||||||
android:text="GitHub Commit Message"
|
|
||||||
android:textColor="#343434"
|
|
||||||
android:textSize="12sp" />
|
|
||||||
|
|
||||||
<!-- Right Date -->
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/date"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_alignParentRight="true"
|
|
||||||
android:layout_alignTop="@id/thumbnail"
|
|
||||||
android:layout_marginRight="5dip"
|
|
||||||
android:gravity="right"
|
|
||||||
android:text="January 25, 2012"
|
|
||||||
android:textColor="#10bcc9"
|
|
||||||
android:textSize="12sp"
|
|
||||||
android:textStyle="bold" />
|
|
||||||
|
|
||||||
</RelativeLayout>
|
|
|
@ -1,32 +0,0 @@
|
||||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
android:id="@+id/toast_layout_root"
|
|
||||||
android:layout_width="fill_parent"
|
|
||||||
android:layout_height="fill_parent"
|
|
||||||
android:background="#50FFFFFF"
|
|
||||||
android:orientation="horizontal"
|
|
||||||
android:padding="5dp"
|
|
||||||
android:alpha="0.5">
|
|
||||||
|
|
||||||
<ImageView
|
|
||||||
android:id="@+id/image"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_centerVertical="true"
|
|
||||||
android:adjustViewBounds="true"
|
|
||||||
android:maxHeight="80dip"
|
|
||||||
android:maxWidth="80dip" />
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/text"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_centerVertical="true"
|
|
||||||
android:layout_toRightOf="@+id/image"
|
|
||||||
android:layout_marginLeft="5dip"
|
|
||||||
android:includeFontPadding="false"
|
|
||||||
android:lineSpacingMultiplier="1.0"
|
|
||||||
android:textColor="#000000"
|
|
||||||
android:textSize="18dip"
|
|
||||||
android:typeface="sans" />
|
|
||||||
|
|
||||||
</RelativeLayout>
|
|
|
@ -1,15 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
|
||||||
android:layout_width="fill_parent"
|
|
||||||
android:layout_height="fill_parent"
|
|
||||||
android:layout_gravity="center"
|
|
||||||
android:orientation="vertical" >
|
|
||||||
|
|
||||||
<WebView
|
|
||||||
android:id="@+id/webframe"
|
|
||||||
android:layout_width="fill_parent"
|
|
||||||
android:layout_height="fill_parent"
|
|
||||||
android:scrollbars="none" />
|
|
||||||
|
|
||||||
</LinearLayout>
|
|
|
@ -1,73 +1,97 @@
|
||||||
<resources>
|
<resources>
|
||||||
|
|
||||||
<string name="menu_settings">セッティング</string>
|
<string name="menu_settings">設定</string>
|
||||||
<string name="system_path">システムパス (とのデータフォルダーの場所 dc_boot.bin/dc_flash.bin)</string>
|
|
||||||
|
|
||||||
|
<string name="system_path">システムパス(dc_boot.bin/dc_flash.binの場所)</string>
|
||||||
<string name="browser_path">デフォルトのシステムパス</string>
|
<string name="browser_path">デフォルトのシステムパス</string>
|
||||||
<string name="games_path">ストレージパス (の場所 .gdi .cdi or .cdh イメージ)</string>
|
<string name="games_path">ストレージパス(*.gdi、*.cdi、または*.cdhイメージの場所)</string>
|
||||||
<string name="game_path">デフォルトゲーム·ストレージ</string>
|
<string name="game_path">デフォルトゲーム·ストレージ</string>
|
||||||
|
<string name="config_home">ホームディレクトリを設定してください。</string>
|
||||||
|
<string name="config_game">ゲームディレクトリを設定してください。</string>
|
||||||
|
<string name="unsupported">カーネルのバージョンはサポートされていません!</string>
|
||||||
|
|
||||||
<string name="boot_bios">ブートドリームキャストビオス</string>
|
<string name="boot_bios">ドリームキャストBIOSをスタート</string>
|
||||||
<string name="missing_bios">BIOSが不足している。ドリームキャストBIOSが動作するように、このエミュレータに必要です。 BIOSファイル内に配置します %1$s/data/dc_boot.bin</string>
|
<string name="missing_bios">ドリームキャストBIOSが不足している。ドリームキャストBIOSが動作するためreicastために必要です。ここでBIOSファイルを入れてください:%1$s/data/dc_boot.bin</string>
|
||||||
<string name="missing_flash">行方不明に点滅します。ドリームキャストのFlashが動作するためにこのエミュレータに必要です。 Flashファイル内に配置します %1$s/data/dc_flash.bin</string>
|
<string name="missing_flash">ドリームキャストFlashが不足している。ドリームキャストFlashが動作するためreicastために必要です。ここでFlashファイルを入れてください:%1$s/data/dc_flash.bin</string>
|
||||||
<string name="require_bios">あなたは、BIOSを提供する必要が</string>
|
<string name="require_bios">BIOSファイルを提供する必要があります。</string>
|
||||||
|
<string name="data_folder">データフォルダが想定されます。</string>
|
||||||
|
<string name="git_broken">GitHub Nativeは使用できません!</string>
|
||||||
|
|
||||||
<string name="folder_bios">BOOT BIOSを</string>
|
<string name="folder_bios">BIOSをスタートする</string>
|
||||||
<string name="folder_select">現在のフォルダを選択</string>
|
<string name="folder_select">フォルダーを選択</string>
|
||||||
|
|
||||||
<string name="select_dynarec">Dynarecオプション</string>
|
<string name="optimization_opts">最適化とデバッグの設定</string>
|
||||||
|
<string name="experimental_opts">実験的</string>
|
||||||
|
<string name="select_native">ネイティブインタフェースを使用</string>
|
||||||
|
<string name="select_dynarec">Dynarecの設定</string>
|
||||||
<string name="select_unstable">不安定な最適化</string>
|
<string name="select_unstable">不安定な最適化</string>
|
||||||
<string name="select_region">DC地域</string>
|
<string name="select_region">DC地域</string>
|
||||||
<string name="select_limitfps">限界FPS</string>
|
<string name="select_broadcast">ブロードキャスト</string>
|
||||||
<string name="select_mipmaps">ミップマップを使用してください(SGX540フィックス)</string>
|
<string name="select_limitfps">FPSを制限</string>
|
||||||
|
<string name="select_mipmaps">ミップマップを使用(SGX540のフィックス)</string>
|
||||||
<string name="select_stretch">ワイドスクリーンモード</string>
|
<string name="select_stretch">ワイドスクリーンモード</string>
|
||||||
<string name="set_frameskip">フレーム船舶の価値</string>
|
<string name="set_frameskip">フレームスキップ</string>
|
||||||
<string name="select_render">PVRレンダリング</string>
|
<string name="select_render">PVRレンダリング(現在役に立たない)</string>
|
||||||
|
<string name="select_fps">FPSを表示</string>
|
||||||
|
<string name="select_software">ソフトウェアレンダリング</string>
|
||||||
|
<string name="select_sound">サウンドを無効に</string>
|
||||||
|
<string name="select_depth">レンダラの深度</string>
|
||||||
|
<string name="select_force_gpu">v6 GPU設定を有効に</string>
|
||||||
|
<string name="default_disk">デフォルトディスク</string>
|
||||||
|
|
||||||
<string name="games_listing">利用可能なドリームキャストのゲーム</string>
|
<string name="games_listing">ゲームリスト</string>
|
||||||
|
|
||||||
<string name="customize_touch_controls">タッチコントロールをカスタマイズする</string>
|
<string name="report_issue">前回のクラッシュ検出された</string>
|
||||||
<string name="launch_editor">エディタを起動します</string>
|
<string name="bios_config">設定が失敗しました!</string>
|
||||||
<string name="touch_vibration">振動をタッチ</string>
|
|
||||||
<string name="controller_a">コントローラ A</string>
|
<string name="customize_touch_controls">タッチコントロールを編集</string>
|
||||||
<string name="controller_b">コントローラ B</string>
|
<string name="launch_editor">エディタをスタート</string>
|
||||||
<string name="controller_c">コントローラ C</string>
|
<string name="touch_vibration">振動</string>
|
||||||
<string name="controller_d">コントローラ D</string>
|
<string name="controller_a">コントローラA</string>
|
||||||
<string name="controller_not_connected">コントローラ接続されていません</string>
|
<string name="controller_b">コントローラB</string>
|
||||||
<string name="controller_none_selected">でコントローラ選択されていません</string>
|
<string name="controller_c">コントローラC</string>
|
||||||
|
<string name="controller_d">コントローラD</string>
|
||||||
|
<string name="controller_not_connected">コントローラが接続されていません</string>
|
||||||
|
<string name="controller_none_selected">コントローラが選択されていない。</string>
|
||||||
<string name="select">選択する</string>
|
<string name="select">選択する</string>
|
||||||
<string name="remove">削除する</string>
|
<string name="remove">削除する</string>
|
||||||
<string name="select_controller_title">セレクトコントローラ</string>
|
<string name="select_controller_title">コントローラを選択</string>
|
||||||
<string name="select_controller_message">ポートに割り当てるコントローラのいずれかのボタンを押してください</string>
|
<string name="select_controller_message">ポートに%1$sコントローラを割り当てるには、いずれかのボタンを押してください。</string>
|
||||||
<string name="controller_already_in_use">このコントローラは、すでに使用されています!</string>
|
<string name="controller_already_in_use">このコントローラはすでに使用されています。</string>
|
||||||
<string name="modified_layout">カスタムキーレイアウトを可能にする</string>
|
<string name="joystick_layout">Dパッドとしてジョイスティックを使用</string>
|
||||||
<string name="controller_compat">互換モードを有効にする</string>
|
<string name="modified_layout">カスタムキーレイアウトを有効に</string>
|
||||||
|
<string name="controller_compat">互換モードを有効に</string>
|
||||||
|
<string name="mic_in_port_2">ポート2に接続されたマイク</string>
|
||||||
|
|
||||||
<string name="customize_physical_controls">物理コントロールをカスタマイズする</string>
|
<string name="customize_physical_controls">物理コントロールを編集</string>
|
||||||
<string name="map_keycode_title">コントローラを変更する</string>
|
<string name="map_keycode_title">コントローラを編集する</string>
|
||||||
<string name="map_keycode_message">のための新しいコントローラのボタンを押してください %1$s</string>
|
<string name="map_keycode_message">%1$sボタンを押してください</string>
|
||||||
|
|
||||||
<string name="moga_pro_connect">MOGAプロ接続!</string>
|
<string name="moga_pro_connect">MOGAプロが接続された!</string>
|
||||||
<string name="moga_connect">MOGA接続!</string>
|
<string name="moga_connect">MOGAが接続された!</string>
|
||||||
|
|
||||||
<string name="about_text">reicastはドリームキャストエミュレータです</string>
|
<string name="about_text">reicastはマルチプラットフォームのドリームキャストエミュレータです。</string>
|
||||||
<string name="revision_text">バージョン: %1$s [%2$s]</string>
|
<string name="revision_text">バージョン:%1$s [%2$s]</string>
|
||||||
|
|
||||||
<string-array name="controllers">
|
<string-array name="controllers">
|
||||||
<item>コントローラ A</item>
|
<item>コントローラA</item>
|
||||||
<item>コントローラ B</item>
|
<item>コントローラB</item>
|
||||||
<item>コントローラ C</item>
|
<item>コントローラC</item>
|
||||||
<item>コントローラ D</item>
|
<item>コントローラD</item>
|
||||||
</string-array>
|
</string-array>
|
||||||
|
|
||||||
<string name="browser">ブラウザ</string>
|
<string name="browser">ブラウザー</string>
|
||||||
<string name="settings">セッティング</string>
|
<string name="settings">設定</string>
|
||||||
<string name="paths">パス</string>
|
<string name="paths">パス</string>
|
||||||
<string name="input">コントローラー</string>
|
<string name="input">コントローラー</string>
|
||||||
<string name="about">およそ</string>
|
<string name="about">reicastについて</string>
|
||||||
<string name="rateme">私を評価してください</string>
|
<string name="rateme">私を評価してください</string>
|
||||||
|
<string name="messages">テストスイート</string>
|
||||||
|
|
||||||
<string name="textOn">上の</string>
|
<string name="textOn">オン</string>
|
||||||
<string name="textOff">オフ</string>
|
<string name="textOff">オフ</string>
|
||||||
|
|
||||||
|
<string name="cancel">キャンセル</string>
|
||||||
|
<string name="manual">マニュアル</string>
|
||||||
|
|
||||||
</resources>
|
</resources>
|
|
@ -3,9 +3,6 @@
|
||||||
<string name="app_name">reicast</string>
|
<string name="app_name">reicast</string>
|
||||||
|
|
||||||
<string name="app_site">Homepage: http://reicast.com</string>
|
<string name="app_site">Homepage: http://reicast.com</string>
|
||||||
<string name="git_api">https://api.github.com/repos/reicast/reicast-emulator/commits</string>
|
|
||||||
<string name="git_issues">https://github.com/reicast/reicast-emulator/issues/</string>
|
|
||||||
<string name="log_url">http://twisted.dyndns.tv:3194/ReicastBot/report/submit.php</string>
|
|
||||||
|
|
||||||
<string name="error_kernel"></string>
|
<string name="error_kernel"></string>
|
||||||
|
|
||||||
|
|
|
@ -4,49 +4,50 @@
|
||||||
|
|
||||||
<string name="system_path">System Path (location of the data folder with dc_boot.bin/dc_flash.bin inside)</string>
|
<string name="system_path">System Path (location of the data folder with dc_boot.bin/dc_flash.bin inside)</string>
|
||||||
<string name="browser_path">Default System Path</string>
|
<string name="browser_path">Default System Path</string>
|
||||||
<string name="games_path">Storage Path (location of .gdi, .chd or .cdi images)</string>
|
<string name="games_path">Storage Path (location of *.gdi, *.chd or *.cdi images)</string>
|
||||||
<string name="game_path">Default Game Storage</string>
|
<string name="game_path">Default Game Storage</string>
|
||||||
<string name="config_home">Please configure a home directory</string>
|
<string name="config_home">Please configure a home directory.</string>
|
||||||
<string name="config_game">Please configure a games directory</string>
|
<string name="config_game">Please configure a game directory.</string>
|
||||||
<string name="unsupported">Unsupported Kernel Version!</string>
|
<string name="unsupported">Unsupported kernel version!</string>
|
||||||
|
|
||||||
<string name="boot_bios">Boot Dreamcast Bios</string>
|
<string name="boot_bios">Boot Dreamcast BIOS</string>
|
||||||
<string name="missing_bios">BIOS Missing. The Dreamcast BIOS is required for this emulator to work. Place the BIOS file in %1$s/data/dc_boot.bin</string>
|
<string name="missing_bios_title">Missing Dreamcast BIOS</string>
|
||||||
<string name="missing_flash">Flash Missing. The Dreamcast Flash is required for this emulator to work. Place the Flash file in %1$s/data/dc_flash.bin</string>
|
<string name="missing_bios">The Dreamcast BIOS is missing. A dump of the Dreamcast BIOS is required for this emulator to work. Make sure the BIOS file is named "dc_boot.bin" and is in %1$s/data/dc_boot.bin</string>
|
||||||
<string name="require_bios">You have to provide the BIOS</string>
|
<string name="missing_flash_title">Missing Dreamcast Flash ROM</string>
|
||||||
<string name="data_folder">The data folder is assumed</string>
|
<string name="missing_flash">The Dreamcast Flash is missing. A dump of the Dreamcast Flash is required for this emulator to work. Make sure the Flash file is named "dc_flash.bin" and is in %1$s/data/dc_flash.bin</string>
|
||||||
<string name="git_broken">GitHub Native Unavailable!</string>
|
<string name="require_bios">You have to provide a Dreamcast BIOS.</string>
|
||||||
|
<string name="data_folder">The current data folder is assumed.</string>
|
||||||
|
|
||||||
<string name="folder_bios">BOOT BIOS</string>
|
<string name="folder_bios">Boot BIOS</string>
|
||||||
<string name="folder_select">SELECT CURRENT FOLDER</string>
|
<string name="folder_select">Select current folder</string>
|
||||||
|
|
||||||
<string name="optimization_opts">Optimization and Debugging Options</string>
|
<string name="optimization_opts">Optimization and Debugging Options</string>
|
||||||
<string name="experimental_opts">Expert (May cause widespread panic)</string>
|
<string name="experimental_opts">Experimental (May cause widespread panic)</string>
|
||||||
<string name="select_native">Enable Native Interface</string>
|
<string name="select_native">Enable Native Interface</string>
|
||||||
<string name="select_dynarec">Dynarec Options</string>
|
<string name="select_dynarec">Dynarec Options</string>
|
||||||
<string name="select_unstable">Unstable Optimisations</string>
|
<string name="select_unstable">Unstable Optimisations</string>
|
||||||
<string name="select_region">DC Region</string>
|
<string name="select_region">DC Region</string>
|
||||||
<string name="select_broadcast">Broadcast</string>
|
<string name="select_broadcast">Broadcast</string>
|
||||||
<string name="select_limitfps">Limit FPS</string>
|
<string name="select_limitfps">Limit FPS</string>
|
||||||
<string name="select_mipmaps">Use Mipmaps (fix for old SGX540)</string>
|
<string name="select_mipmaps">Use Mipmaps (fixes SGX540)</string>
|
||||||
<string name="select_stretch">Widescreen Mode</string>
|
<string name="select_stretch">Widescreen Mode</string>
|
||||||
<string name="set_frameskip">Frameskip Value</string>
|
<string name="set_frameskip">Frameskip Value</string>
|
||||||
<string name="select_render">PVR Rendering (does nothing for now)</string>
|
<string name="select_render">PVR Rendering (does nothing for now)</string>
|
||||||
<string name="select_fps">Show OnScreen FPS</string>
|
<string name="select_fps">Show On-screen FPS</string>
|
||||||
<string name="select_software">Force Software Rendering</string>
|
<string name="select_software">Force Software Rendering</string>
|
||||||
<string name="select_sound">Disable Emulator Sound</string>
|
<string name="select_sound">Disable Emulator Sound</string>
|
||||||
<string name="select_depth">Rendering Depth</string>
|
<string name="select_depth">Rendering Depth</string>
|
||||||
<string name="select_force_gpu">Force v6 GPU Config</string>
|
<string name="select_force_gpu">Force v6 GPU Config</string>
|
||||||
<string name="default_disk">Set Default Disk</string>
|
<string name="default_disk">Default Disk</string>
|
||||||
|
|
||||||
<string name="games_listing">Available Dreamcast Games</string>
|
<string name="games_listing">Game List</string>
|
||||||
|
|
||||||
<string name="report_issue">Previous Crash Detected</string>
|
<string name="report_issue">Previous Crash Detected</string>
|
||||||
<string name="bios_config">Configuration failed!</string>
|
<string name="bios_config">Configuration failed!</string>
|
||||||
|
|
||||||
<string name="customize_touch_controls">Customize Touch Controls</string>
|
<string name="customize_touch_controls">Customize Touch Controls</string>
|
||||||
<string name="launch_editor">Launch Editor</string>
|
<string name="launch_editor">Launch Editor</string>
|
||||||
<string name="touch_vibration">Touch Vibration</string>
|
<string name="touch_vibration">Haptic Feedback</string>
|
||||||
<string name="controller_a">Controller A</string>
|
<string name="controller_a">Controller A</string>
|
||||||
<string name="controller_b">Controller B</string>
|
<string name="controller_b">Controller B</string>
|
||||||
<string name="controller_c">Controller C</string>
|
<string name="controller_c">Controller C</string>
|
||||||
|
@ -58,7 +59,7 @@
|
||||||
<string name="select_controller_title">Select Controller</string>
|
<string name="select_controller_title">Select Controller</string>
|
||||||
<string name="select_controller_message">Press any button on the controller %1$s to assign to port</string>
|
<string name="select_controller_message">Press any button on the controller %1$s to assign to port</string>
|
||||||
<string name="controller_already_in_use">This controller is already in use!</string>
|
<string name="controller_already_in_use">This controller is already in use!</string>
|
||||||
<string name="joystick_layout">Use Joystick For Dpad Input</string>
|
<string name="joystick_layout">Use Joystick For D-Pad Input</string>
|
||||||
<string name="modified_layout">Enable Custom Key Layout</string>
|
<string name="modified_layout">Enable Custom Key Layout</string>
|
||||||
<string name="controller_compat">Enable Compatibility Mode</string>
|
<string name="controller_compat">Enable Compatibility Mode</string>
|
||||||
<string name="mic_in_port_2">Microphone plugged into port 2</string>
|
<string name="mic_in_port_2">Microphone plugged into port 2</string>
|
||||||
|
@ -67,17 +68,17 @@
|
||||||
<string name="map_keycode_title">Modify Controller</string>
|
<string name="map_keycode_title">Modify Controller</string>
|
||||||
<string name="map_keycode_message">Press the new controller button for %1$s</string>
|
<string name="map_keycode_message">Press the new controller button for %1$s</string>
|
||||||
|
|
||||||
<string name="moga_pro_connect">MOGA Pro Connected!</string>
|
<string name="moga_pro_connect">MOGA Pro connected!</string>
|
||||||
<string name="moga_connect">MOGA Connected!</string>
|
<string name="moga_connect">MOGA connected!</string>
|
||||||
|
|
||||||
<string name="about_text">reicast is a dreamcast emulator</string>
|
<string name="about_text">reicast is a multi-platform Dreamcast emulator.</string>
|
||||||
<string name="revision_text">Version: %1$s [%2$s]</string>
|
<string name="revision_text">Version: %1$s [%2$s]</string>
|
||||||
|
|
||||||
<string-array name="controllers">
|
<string-array name="controllers">
|
||||||
<item>Controller A</item>
|
<item>Controller A</item>
|
||||||
<item>Controller B</item>
|
<item>Controller B</item>
|
||||||
<item>Controller C</item>
|
<item>Controller C</item>
|
||||||
<item>Controller D</item>
|
<item>Controller D</item>
|
||||||
</string-array>
|
</string-array>
|
||||||
|
|
||||||
<string name="browser">Browser</string>
|
<string name="browser">Browser</string>
|
||||||
|
@ -92,6 +93,7 @@
|
||||||
<string name="textOff">OFF</string>
|
<string name="textOff">OFF</string>
|
||||||
|
|
||||||
<string name="cancel">Cancel</string>
|
<string name="cancel">Cancel</string>
|
||||||
|
<string name="dismiss">Dismiss</string>
|
||||||
<string name="manual">Manual</string>
|
<string name="manual">Manual</string>
|
||||||
|
<string name="options">Options</string>
|
||||||
</resources>
|
</resources>
|
|
@ -33,7 +33,7 @@
|
||||||
<style name="fpsOverlayText">
|
<style name="fpsOverlayText">
|
||||||
<item name="android:paddingLeft">4px</item>
|
<item name="android:paddingLeft">4px</item>
|
||||||
<item name="android:paddingBottom">4px</item>
|
<item name="android:paddingBottom">4px</item>
|
||||||
<item name="android:textColor">#ffffffff</item>
|
<item name="android:textColor">#ffff00</item>
|
||||||
<item name="android:textSize">32sp</item>
|
<item name="android:textSize">32sp</item>
|
||||||
<item name="android:shadowColor">#000000</item>
|
<item name="android:shadowColor">#000000</item>
|
||||||
<item name="android:shadowDx">1</item>
|
<item name="android:shadowDx">1</item>
|
||||||
|
|
|
@ -57,14 +57,6 @@ public class FileUtils {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public File[] listFilesAsArray(File directory, FilenameFilter[] filter,
|
|
||||||
int recurse) {
|
|
||||||
Collection<File> files = listFiles(directory, filter, recurse);
|
|
||||||
|
|
||||||
File[] arr = new File[files.size()];
|
|
||||||
return files.toArray(arr);
|
|
||||||
}
|
|
||||||
|
|
||||||
public Collection<File> listFiles(File directory, FilenameFilter[] filter,
|
public Collection<File> listFiles(File directory, FilenameFilter[] filter,
|
||||||
int recurse) {
|
int recurse) {
|
||||||
|
|
||||||
|
@ -92,14 +84,13 @@ public class FileUtils {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void saveScreenshot(final Context c, int w, int h, GL10 gl){
|
public static void saveScreenshot(final Context c, int w, int h, GL10 gl){
|
||||||
try{
|
try {
|
||||||
File dir = new File(MainActivity.home_directory);
|
File dir = new File(MainActivity.home_directory);
|
||||||
SimpleDateFormat s = new SimpleDateFormat("yyyyMMddHHmmss");
|
SimpleDateFormat s = new SimpleDateFormat("yyyyMMddHHmmss");
|
||||||
String timestamp = s.format(new Date());
|
String timestamp = s.format(new Date());
|
||||||
File f = new File(dir.toString(), timestamp+".jpeg");
|
File f = new File(dir.getAbsolutePath(), timestamp+".jpeg");
|
||||||
FileOutputStream out = new FileOutputStream(f);
|
FileOutputStream out = new FileOutputStream(f);
|
||||||
savePixels(0, 0, w, h, gl).compress(Bitmap.CompressFormat.JPEG, 100, out);
|
savePixels(0, 0, w, h, gl).compress(Bitmap.CompressFormat.JPEG, 100, out);
|
||||||
out.flush();
|
|
||||||
out.close();
|
out.close();
|
||||||
//attempt to put into gallery app
|
//attempt to put into gallery app
|
||||||
MediaScannerConnection.scanFile(c.getApplicationContext(), new String[]{f.toString()}, null, new OnScanCompletedListener() {
|
MediaScannerConnection.scanFile(c.getApplicationContext(), new String[]{f.toString()}, null, new OnScanCompletedListener() {
|
||||||
|
@ -108,7 +99,7 @@ public class FileUtils {
|
||||||
//c.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, uri));
|
//c.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, uri));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}catch(Exception e){
|
} catch(Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -116,26 +107,26 @@ public class FileUtils {
|
||||||
//thank you stackoverflow
|
//thank you stackoverflow
|
||||||
public static Bitmap savePixels(int x, int y, int w, int h, GL10 gl)
|
public static Bitmap savePixels(int x, int y, int w, int h, GL10 gl)
|
||||||
{
|
{
|
||||||
int b[]=new int[w*(y+h)];
|
int b[]=new int[w*(y+h)];
|
||||||
int bt[]=new int[w*h];
|
int bt[]=new int[w*h];
|
||||||
IntBuffer ib=IntBuffer.wrap(b);
|
IntBuffer ib=IntBuffer.wrap(b);
|
||||||
ib.position(0);
|
ib.position(0);
|
||||||
gl.glReadPixels(x, 0, w, y+h, GL10.GL_RGBA, GL10.GL_UNSIGNED_BYTE, ib);
|
gl.glReadPixels(x, 0, w, y+h, GL10.GL_RGBA, GL10.GL_UNSIGNED_BYTE, ib);
|
||||||
|
|
||||||
for(int i=0, k=0; i<h; i++, k++)
|
for(int i=0, k=0; i<h; i++, k++)
|
||||||
{//remember, that OpenGL bitmap is incompatible with Android bitmap
|
{//remember, that OpenGL bitmap is incompatible with Android bitmap
|
||||||
//and so, some correction need.
|
//and so, some correction need.
|
||||||
for(int j=0; j<w; j++)
|
for(int j=0; j<w; j++)
|
||||||
{
|
{
|
||||||
int pix=b[i*w+j];
|
int pix=b[i*w+j];
|
||||||
int pb=(pix>>16)&0xff;
|
int pb=(pix>>16)&0xff;
|
||||||
int pr=(pix<<16)&0x00ff0000;
|
int pr=(pix<<16)&0x00ff0000;
|
||||||
int pix1=(pix&0xff00ff00) | pr | pb;
|
int pix1=(pix&0xff00ff00) | pr | pb;
|
||||||
bt[(h-k-1)*w+j]=pix1;
|
bt[(h-k-1)*w+j]=pix1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Bitmap sb=Bitmap.createBitmap(bt, w, h, Bitmap.Config.ARGB_8888);
|
Bitmap sb=Bitmap.createBitmap(bt, w, h, Bitmap.Config.ARGB_8888);
|
||||||
return sb;
|
return sb;
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,111 +1,23 @@
|
||||||
/* ====================================================================
|
|
||||||
* Copyright (c) 2012-2013 Lounge Katt Entertainment. All rights reserved.
|
|
||||||
*
|
|
||||||
* Redistribution and use in source and binary forms, with or without
|
|
||||||
* modification, are permitted provided that the following conditions
|
|
||||||
* are met:
|
|
||||||
*
|
|
||||||
* 1. Redistributions of source code must retain the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer.
|
|
||||||
*
|
|
||||||
* 2. Redistributions in binary form must reproduce the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer in
|
|
||||||
* the documentation and/or other materials provided with the
|
|
||||||
* distribution.
|
|
||||||
*
|
|
||||||
* 3. All advertising materials mentioning features or use of this
|
|
||||||
* software must display the following acknowledgment:
|
|
||||||
* "This product includes software developed by Lounge Katt" unless
|
|
||||||
* otherwise displayed by public repository entries.
|
|
||||||
*
|
|
||||||
* 4. The names "Lounge Katt", "TwistedUmbrella", and "LiveLog"
|
|
||||||
* must not be used to endorse or promote products derived from this
|
|
||||||
* software without prior written permission. For written permission,
|
|
||||||
* please contact admin@loungekatt.com.
|
|
||||||
*
|
|
||||||
* 5. Products derived from this software may not be called "LiveLog"
|
|
||||||
* nor may "LiveLog" appear in their names without prior written
|
|
||||||
* permission of Lounge Katt Entertainment.
|
|
||||||
*
|
|
||||||
* 6. Redistributions of any form whatsoever must retain the following
|
|
||||||
* acknowledgment:
|
|
||||||
* "This product includes software developed by Lounge Katt" unless
|
|
||||||
* otherwise displayed by tagged repository entries.
|
|
||||||
*
|
|
||||||
* THIS SOFTWARE IS PROVIDED BY Lounge Katt ``AS IS'' AND ANY
|
|
||||||
* EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
||||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
|
||||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
|
|
||||||
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
||||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
|
||||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
||||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
|
||||||
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
||||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
|
|
||||||
* OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
* ====================================================================
|
|
||||||
*
|
|
||||||
* The license and distribution terms for any publicly available version or
|
|
||||||
* derivative of this code cannot be changed. i.e. this code cannot simply be
|
|
||||||
* copied and put under another distribution license
|
|
||||||
* [including the GNU Public License.] Content not subject to these terms is
|
|
||||||
* subject to to the terms and conditions of the Apache License, Version 2.0.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package com.reicast.emulator;
|
package com.reicast.emulator;
|
||||||
|
|
||||||
import java.io.BufferedReader;
|
import java.io.BufferedReader;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.io.InputStreamReader;
|
import java.io.InputStreamReader;
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.HashMap;
|
|
||||||
|
|
||||||
import org.apache.http.HttpEntity;
|
|
||||||
import org.apache.http.HttpResponse;
|
|
||||||
import org.apache.http.StatusLine;
|
|
||||||
import org.apache.http.client.ClientProtocolException;
|
|
||||||
import org.apache.http.client.HttpClient;
|
|
||||||
import org.apache.http.client.methods.HttpGet;
|
|
||||||
import org.apache.http.impl.client.DefaultHttpClient;
|
|
||||||
import org.json.JSONArray;
|
|
||||||
import org.json.JSONException;
|
|
||||||
import org.json.JSONObject;
|
|
||||||
|
|
||||||
import android.annotation.TargetApi;
|
|
||||||
import android.app.Activity;
|
|
||||||
import android.content.pm.PackageManager.NameNotFoundException;
|
import android.content.pm.PackageManager.NameNotFoundException;
|
||||||
import android.os.AsyncTask;
|
|
||||||
import android.os.Build;
|
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.Handler;
|
|
||||||
import android.support.v4.app.Fragment;
|
import android.support.v4.app.Fragment;
|
||||||
import android.text.util.Linkify;
|
import android.text.util.Linkify;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
import android.widget.AdapterView;
|
|
||||||
import android.widget.AdapterView.OnItemClickListener;
|
|
||||||
import android.widget.ListView;
|
|
||||||
import android.widget.SlidingDrawer;
|
|
||||||
import android.widget.SlidingDrawer.OnDrawerOpenListener;
|
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
import com.reicast.emulator.config.Config;
|
|
||||||
import com.reicast.emulator.debug.GitAdapter;
|
|
||||||
|
|
||||||
@SuppressWarnings("deprecation")
|
|
||||||
public class AboutFragment extends Fragment {
|
public class AboutFragment extends Fragment {
|
||||||
|
|
||||||
SlidingDrawer slidingGithub;
|
|
||||||
private ListView list;
|
|
||||||
private GitAdapter adapter;
|
|
||||||
private Handler handler;
|
|
||||||
String buildId = "";
|
String buildId = "";
|
||||||
|
|
||||||
private Activity parentActivity;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
||||||
Bundle savedInstanceState) {
|
Bundle savedInstanceState) {
|
||||||
|
@ -115,11 +27,9 @@ public class AboutFragment extends Fragment {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onViewCreated(View view, Bundle savedInstanceState) {
|
public void onViewCreated(View view, Bundle savedInstanceState) {
|
||||||
parentActivity = getActivity();
|
|
||||||
handler = new Handler();
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
InputStream file = parentActivity.getAssets().open("build");
|
InputStream file = getResources().getAssets().open("build");
|
||||||
if (file != null) {
|
if (file != null) {
|
||||||
BufferedReader reader = new BufferedReader(
|
BufferedReader reader = new BufferedReader(
|
||||||
new InputStreamReader(file));
|
new InputStreamReader(file));
|
||||||
|
@ -131,16 +41,16 @@ public class AboutFragment extends Fragment {
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
String versionName = parentActivity.getPackageManager()
|
String versionName = getActivity().getPackageManager()
|
||||||
.getPackageInfo(parentActivity.getPackageName(), 0).versionName;
|
.getPackageInfo(getActivity().getPackageName(), 0).versionName;
|
||||||
int versionCode = parentActivity.getPackageManager()
|
int versionCode = getActivity().getPackageManager()
|
||||||
.getPackageInfo(parentActivity.getPackageName(), 0).versionCode;
|
.getPackageInfo(getActivity().getPackageName(), 0).versionCode;
|
||||||
TextView version = (TextView) getView().findViewById(
|
TextView version = (TextView) getView().findViewById(
|
||||||
R.id.revision_text);
|
R.id.revision_text);
|
||||||
String revision = parentActivity.getString(R.string.revision_text,
|
String revision = getString(R.string.revision_text,
|
||||||
versionName, String.valueOf(versionCode));
|
versionName, String.valueOf(versionCode));
|
||||||
if (!buildId.equals("")) {
|
if (!buildId.equals("")) {
|
||||||
revision = parentActivity.getString(R.string.revision_text,
|
revision = getString(R.string.revision_text,
|
||||||
versionName, buildId.substring(0,7));
|
versionName, buildId.substring(0,7));
|
||||||
}
|
}
|
||||||
version.setText(revision);
|
version.setText(revision);
|
||||||
|
@ -148,180 +58,7 @@ public class AboutFragment extends Fragment {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
|
||||||
TextView website = (TextView) getView().findViewById(
|
TextView website = (TextView) getView().findViewById(R.id.site_text);
|
||||||
R.id.site_text);
|
|
||||||
Linkify.addLinks(website, Linkify.ALL);
|
Linkify.addLinks(website, Linkify.ALL);
|
||||||
|
|
||||||
slidingGithub = (SlidingDrawer) getView().findViewById(
|
|
||||||
R.id.slidingGithub);
|
|
||||||
if (MainActivity.debugUser) {
|
|
||||||
slidingGithub.setOnDrawerOpenListener(new OnDrawerOpenListener() {
|
|
||||||
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
|
|
||||||
public void onDrawerOpened() {
|
|
||||||
String git = parentActivity.getString(R.string.git_api);
|
|
||||||
retrieveGitTask queryGithub = new retrieveGitTask();
|
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
|
|
||||||
queryGithub.executeOnExecutor(
|
|
||||||
AsyncTask.THREAD_POOL_EXECUTOR, git);
|
|
||||||
} else {
|
|
||||||
queryGithub.execute(git);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
slidingGithub.open();
|
|
||||||
} else {
|
|
||||||
slidingGithub.setVisibility(View.GONE);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public class retrieveGitTask extends
|
|
||||||
AsyncTask<String, Integer, ArrayList<HashMap<String, String>>> {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void onPreExecute() {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected ArrayList<HashMap<String, String>> doInBackground(
|
|
||||||
String... paths) {
|
|
||||||
ArrayList<HashMap<String, String>> commitList = new ArrayList<HashMap<String, String>>();
|
|
||||||
try {
|
|
||||||
JSONArray gitObject = getContent(paths[0]);
|
|
||||||
for (int i = 0; i < gitObject.length(); i++) {
|
|
||||||
JSONObject jsonObject = gitObject.getJSONObject(i);
|
|
||||||
|
|
||||||
JSONObject commitArray = jsonObject.getJSONObject("commit");
|
|
||||||
|
|
||||||
String date = commitArray.getJSONObject("committer")
|
|
||||||
.getString("date").replace("T", " ")
|
|
||||||
.replace("Z", "");
|
|
||||||
String author = commitArray.getJSONObject("author")
|
|
||||||
.getString("name");
|
|
||||||
String committer = commitArray.getJSONObject("committer")
|
|
||||||
.getString("name");
|
|
||||||
|
|
||||||
String avatar = null;
|
|
||||||
if (!jsonObject.getString("committer").equals("null")) {
|
|
||||||
avatar = jsonObject.getJSONObject("committer")
|
|
||||||
.getString("avatar_url");
|
|
||||||
committer = committer
|
|
||||||
+ " ("
|
|
||||||
+ jsonObject.getJSONObject("committer")
|
|
||||||
.getString("login") + ")";
|
|
||||||
if (avatar.equals("null")) {
|
|
||||||
avatar = "https://github.com/apple-touch-icon-144.png";
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
avatar = "https://github.com/apple-touch-icon-144.png";
|
|
||||||
}
|
|
||||||
if (!jsonObject.getString("author").equals("null")) {
|
|
||||||
author = author
|
|
||||||
+ " ("
|
|
||||||
+ jsonObject.getJSONObject("author").getString(
|
|
||||||
"login") + ")";
|
|
||||||
}
|
|
||||||
String sha = jsonObject.getString("sha");
|
|
||||||
String curl = jsonObject
|
|
||||||
.getString("url")
|
|
||||||
.replace("https://api.github.com/repos",
|
|
||||||
"https://github.com")
|
|
||||||
.replace("commits", "commit");
|
|
||||||
|
|
||||||
String title = "No commit heading attached";
|
|
||||||
String message = "No commit message attached";
|
|
||||||
|
|
||||||
if (commitArray.getString("message").contains("\n\n")) {
|
|
||||||
String fullOutput = commitArray.getString("message");
|
|
||||||
title = fullOutput.substring(0,
|
|
||||||
fullOutput.indexOf("\n\n"));
|
|
||||||
message = fullOutput.substring(
|
|
||||||
fullOutput.indexOf("\n\n") + 1,
|
|
||||||
fullOutput.length());
|
|
||||||
} else {
|
|
||||||
title = commitArray.getString("message");
|
|
||||||
}
|
|
||||||
|
|
||||||
HashMap<String, String> map = new HashMap<String, String>();
|
|
||||||
map.put("Date", date);
|
|
||||||
map.put("Committer", committer);
|
|
||||||
map.put("Title", title);
|
|
||||||
map.put("Message", message);
|
|
||||||
map.put("Sha", sha);
|
|
||||||
map.put("Url", curl);
|
|
||||||
map.put("Author", author);
|
|
||||||
map.put("Avatar", avatar);
|
|
||||||
map.put("Build", buildId);
|
|
||||||
commitList.add(map);
|
|
||||||
}
|
|
||||||
|
|
||||||
} catch (JSONException e) {
|
|
||||||
handler.post(new Runnable() {
|
|
||||||
public void run() {
|
|
||||||
Config.customNotify(parentActivity, R.drawable.ic_github, R.string.git_broken);
|
|
||||||
slidingGithub.close();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
e.printStackTrace();
|
|
||||||
} catch (Exception e) {
|
|
||||||
handler.post(new Runnable() {
|
|
||||||
public void run() {
|
|
||||||
Config.customNotify(parentActivity, R.drawable.ic_github, R.string.git_broken);
|
|
||||||
slidingGithub.close();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
|
|
||||||
return commitList;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void onPostExecute(
|
|
||||||
ArrayList<HashMap<String, String>> commitList) {
|
|
||||||
if (commitList != null && commitList.size() > 0) {
|
|
||||||
list = (ListView) getView().findViewById(R.id.list);
|
|
||||||
list.setSelector(R.drawable.list_selector);
|
|
||||||
list.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
|
|
||||||
adapter = new GitAdapter(parentActivity, commitList);
|
|
||||||
// Set adapter as specified collection
|
|
||||||
list.setAdapter(adapter);
|
|
||||||
|
|
||||||
list.setOnItemClickListener(new OnItemClickListener() {
|
|
||||||
public void onItemClick(AdapterView<?> parent, View view,
|
|
||||||
int position, long id) {
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private JSONArray getContent(String urlString) throws IOException,
|
|
||||||
JSONException {
|
|
||||||
StringBuilder builder = new StringBuilder();
|
|
||||||
HttpClient client = new DefaultHttpClient();
|
|
||||||
HttpGet httpGet = new HttpGet(urlString);
|
|
||||||
try {
|
|
||||||
HttpResponse response = client.execute(httpGet);
|
|
||||||
StatusLine statusLine = response.getStatusLine();
|
|
||||||
int statusCode = statusLine.getStatusCode();
|
|
||||||
if (statusCode == 200) {
|
|
||||||
HttpEntity entity = response.getEntity();
|
|
||||||
InputStream content = entity.getContent();
|
|
||||||
BufferedReader reader = new BufferedReader(
|
|
||||||
new InputStreamReader(content));
|
|
||||||
String line;
|
|
||||||
while ((line = reader.readLine()) != null) {
|
|
||||||
builder.append(line);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
}
|
|
||||||
} catch (ClientProtocolException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
} catch (IOException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
return new JSONArray(builder.toString());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,6 +8,8 @@ import java.io.InputStream;
|
||||||
import java.io.OutputStream;
|
import java.io.OutputStream;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.Comparator;
|
import java.util.Comparator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
|
@ -17,7 +19,6 @@ import org.apache.commons.lang3.StringUtils;
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.SharedPreferences;
|
import android.content.SharedPreferences;
|
||||||
import android.content.res.Resources;
|
|
||||||
import android.graphics.Typeface;
|
import android.graphics.Typeface;
|
||||||
import android.graphics.drawable.Drawable;
|
import android.graphics.drawable.Drawable;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
|
@ -46,12 +47,12 @@ import com.reicast.emulator.emu.JNIdc;
|
||||||
|
|
||||||
public class FileBrowser extends Fragment {
|
public class FileBrowser extends Fragment {
|
||||||
|
|
||||||
Vibrator vib;
|
private Vibrator vib;
|
||||||
Drawable orig_bg;
|
private Drawable orig_bg;
|
||||||
Activity parentActivity;
|
private Activity parentActivity;
|
||||||
boolean ImgBrowse;
|
private boolean ImgBrowse;
|
||||||
private boolean games;
|
private boolean games;
|
||||||
OnItemSelectedListener mCallback;
|
private OnItemSelectedListener mCallback;
|
||||||
|
|
||||||
private SharedPreferences mPrefs;
|
private SharedPreferences mPrefs;
|
||||||
private File sdcard = Environment.getExternalStorageDirectory();
|
private File sdcard = Environment.getExternalStorageDirectory();
|
||||||
|
@ -84,9 +85,8 @@ public class FileBrowser extends Fragment {
|
||||||
|
|
||||||
// Container Activity must implement this interface
|
// Container Activity must implement this interface
|
||||||
public interface OnItemSelectedListener {
|
public interface OnItemSelectedListener {
|
||||||
public void onGameSelected(Uri uri);
|
void onGameSelected(Uri uri);
|
||||||
|
void onFolderSelected(Uri uri);
|
||||||
public void onFolderSelected(Uri uri);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -166,15 +166,14 @@ public class FileBrowser extends Fragment {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class LocateGames extends AsyncTask<String, Integer, List<File>> {
|
private final class LocateGames extends AsyncTask<String, Integer, List<File>> {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected List<File> doInBackground(String... paths) {
|
protected List<File> doInBackground(String... paths) {
|
||||||
final List<File> tFileList = new ArrayList<File>();
|
|
||||||
File storage = new File(paths[0]);
|
File storage = new File(paths[0]);
|
||||||
Resources resources = parentActivity.getResources();
|
|
||||||
// array of valid image file extensions
|
// array of valid image file extensions
|
||||||
String[] mediaTypes = resources.getStringArray(R.array.images);
|
String[] mediaTypes = parentActivity.getResources().getStringArray(R.array.images);
|
||||||
FilenameFilter[] filter = new FilenameFilter[mediaTypes.length];
|
FilenameFilter[] filter = new FilenameFilter[mediaTypes.length];
|
||||||
|
|
||||||
int i = 0;
|
int i = 0;
|
||||||
|
@ -196,39 +195,31 @@ public class FileBrowser extends Fragment {
|
||||||
}
|
}
|
||||||
|
|
||||||
FileUtils fileUtils = new FileUtils();
|
FileUtils fileUtils = new FileUtils();
|
||||||
File[] allMatchingFiles = fileUtils.listFilesAsArray(storage,
|
Collection<File> files = fileUtils.listFiles(storage, filter, 1);
|
||||||
filter, 1);
|
return (List<File>) files;
|
||||||
for (File mediaFile : allMatchingFiles) {
|
|
||||||
tFileList.add(mediaFile);
|
|
||||||
}
|
|
||||||
return tFileList;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onPostExecute(List<File> games) {
|
protected void onPostExecute(List<File> games) {
|
||||||
final LinearLayout list = (LinearLayout) parentActivity
|
final LinearLayout list = (LinearLayout) parentActivity.findViewById(R.id.game_list);
|
||||||
.findViewById(R.id.game_list);
|
|
||||||
list.removeAllViews();
|
list.removeAllViews();
|
||||||
|
|
||||||
String heading = parentActivity
|
String heading = parentActivity.getString(R.string.games_listing);
|
||||||
.getString(R.string.games_listing);
|
|
||||||
createListHeader(heading, list, true);
|
createListHeader(heading, list, true);
|
||||||
if (games != null && !games.isEmpty()) {
|
if (games != null && !games.isEmpty()) {
|
||||||
for (int i = 0; i < games.size(); i++) {
|
for (final File game : games) {
|
||||||
createListItem(list, games.get(i));
|
createListItem(list, game);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
Toast.makeText(parentActivity, R.string.config_game,
|
Toast.makeText(parentActivity, R.string.config_game, Toast.LENGTH_LONG).show();
|
||||||
Toast.LENGTH_LONG).show();
|
|
||||||
}
|
}
|
||||||
list.invalidate();
|
list.invalidate();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
class DirSort implements Comparator<File> {
|
private static final class DirSort implements Comparator<File> {
|
||||||
|
|
||||||
// Comparator interface requires defining compare method.
|
@Override
|
||||||
public int compare(File filea, File fileb) {
|
public int compare(File filea, File fileb) {
|
||||||
|
|
||||||
return ((filea.isFile() ? "a" : "b") + filea.getName().toLowerCase(
|
return ((filea.isFile() ? "a" : "b") + filea.getName().toLowerCase(
|
||||||
|
@ -244,7 +235,7 @@ public class FileBrowser extends Fragment {
|
||||||
R.layout.bios_list_item, null, false);
|
R.layout.bios_list_item, null, false);
|
||||||
|
|
||||||
((TextView) childview.findViewById(R.id.item_name))
|
((TextView) childview.findViewById(R.id.item_name))
|
||||||
.setText(parentActivity.getString(R.string.boot_bios));
|
.setText(R.string.boot_bios);
|
||||||
|
|
||||||
childview.setTag(null);
|
childview.setTag(null);
|
||||||
|
|
||||||
|
@ -285,29 +276,26 @@ public class FileBrowser extends Fragment {
|
||||||
.setImageResource(R.drawable.open_folder);
|
.setImageResource(R.drawable.open_folder);
|
||||||
((TextView) headerView.findViewById(R.id.item_name))
|
((TextView) headerView.findViewById(R.id.item_name))
|
||||||
.setText(header_text);
|
.setText(header_text);
|
||||||
((TextView) headerView.findViewById(R.id.item_name))
|
((TextView) headerView.findViewById(R.id.item_name))
|
||||||
.setTypeface(Typeface.DEFAULT_BOLD);
|
.setTypeface(Typeface.DEFAULT_BOLD);
|
||||||
((ViewGroup) view).addView(headerView);
|
((ViewGroup) view).addView(headerView);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void createListItem(LinearLayout list, final File game) {
|
private void createListItem(LinearLayout list, final File game) {
|
||||||
final String name = game.getName();
|
final String name = game.getName();
|
||||||
|
final String nameLower = name.toLowerCase(Locale.getDefault());
|
||||||
final View childview = parentActivity.getLayoutInflater().inflate(
|
final View childview = parentActivity.getLayoutInflater().inflate(
|
||||||
R.layout.app_list_item, null, false);
|
R.layout.app_list_item, null, false);
|
||||||
|
|
||||||
((TextView) childview.findViewById(R.id.item_name)).setText(name);
|
((TextView) childview.findViewById(R.id.item_name)).setText(name);
|
||||||
|
|
||||||
((ImageView) childview.findViewById(R.id.item_icon))
|
((ImageView) childview.findViewById(R.id.item_icon))
|
||||||
.setImageResource(game == null ? R.drawable.config : game
|
.setImageResource(game.isDirectory() ? R.drawable.open_folder
|
||||||
.isDirectory() ? R.drawable.open_folder
|
: nameLower.endsWith(".gdi") ? R.drawable.gdi
|
||||||
: name.toLowerCase(Locale.getDefault())
|
: nameLower.endsWith(".cdi") ? R.drawable.cdi
|
||||||
.endsWith(".gdi") ? R.drawable.gdi : name
|
: nameLower.endsWith(".chd") ? R.drawable.chd
|
||||||
.toLowerCase(Locale.getDefault()).endsWith(
|
: R.drawable.disk_unknown);
|
||||||
".cdi") ? R.drawable.cdi : name
|
|
||||||
.toLowerCase(Locale.getDefault()).endsWith(
|
|
||||||
".chd") ? R.drawable.chd
|
|
||||||
: R.drawable.disk_unknown);
|
|
||||||
|
|
||||||
childview.setTag(name);
|
childview.setTag(name);
|
||||||
|
|
||||||
|
@ -354,7 +342,6 @@ public class FileBrowser extends Fragment {
|
||||||
createListHeader(heading, v, false);
|
createListHeader(heading, v, false);
|
||||||
|
|
||||||
File flist[] = root_sd.listFiles();
|
File flist[] = root_sd.listFiles();
|
||||||
|
|
||||||
File parent = root_sd.getParentFile();
|
File parent = root_sd.getParentFile();
|
||||||
|
|
||||||
list.add(null);
|
list.add(null);
|
||||||
|
@ -364,32 +351,27 @@ public class FileBrowser extends Fragment {
|
||||||
|
|
||||||
Arrays.sort(flist, new DirSort());
|
Arrays.sort(flist, new DirSort());
|
||||||
|
|
||||||
for (int i = 0; i < flist.length; i++)
|
Collections.addAll(list, flist);
|
||||||
list.add(flist[i]);
|
|
||||||
|
|
||||||
for (int i = 0; i < list.size(); i++) {
|
for (final File file : list) {
|
||||||
if (list.get(i) != null && !list.get(i).isDirectory())
|
if (file != null && !file.isDirectory())
|
||||||
continue;
|
continue;
|
||||||
final View childview = parentActivity.getLayoutInflater().inflate(
|
final View childview = parentActivity.getLayoutInflater().inflate(
|
||||||
R.layout.app_list_item, null, false);
|
R.layout.app_list_item, null, false);
|
||||||
|
|
||||||
if (list.get(i) == null) {
|
if (file == null) {
|
||||||
((TextView) childview.findViewById(R.id.item_name))
|
((TextView) childview.findViewById(R.id.item_name)).setText(R.string.folder_select);
|
||||||
.setText(getString(R.string.folder_select));
|
} else if (file == parent)
|
||||||
} else if (list.get(i) == parent)
|
((TextView) childview.findViewById(R.id.item_name)).setText("..");
|
||||||
((TextView) childview.findViewById(R.id.item_name))
|
|
||||||
.setText("..");
|
|
||||||
else
|
else
|
||||||
((TextView) childview.findViewById(R.id.item_name))
|
((TextView) childview.findViewById(R.id.item_name)).setText(file.getName());
|
||||||
.setText(list.get(i).getName());
|
|
||||||
|
|
||||||
((ImageView) childview.findViewById(R.id.item_icon))
|
((ImageView) childview.findViewById(R.id.item_icon))
|
||||||
.setImageResource(list.get(i) == null ? R.drawable.config
|
.setImageResource(file == null ? R.drawable.config
|
||||||
: list.get(i).isDirectory() ? R.drawable.open_folder
|
: file.isDirectory() ? R.drawable.open_folder
|
||||||
: R.drawable.disk_unknown);
|
: R.drawable.disk_unknown);
|
||||||
|
|
||||||
childview.setTag(list.get(i));
|
childview.setTag(file);
|
||||||
final File item = list.get(i);
|
|
||||||
|
|
||||||
orig_bg = childview.getBackground();
|
orig_bg = childview.getBackground();
|
||||||
|
|
||||||
|
@ -398,8 +380,8 @@ public class FileBrowser extends Fragment {
|
||||||
childview.findViewById(R.id.childview).setOnClickListener(
|
childview.findViewById(R.id.childview).setOnClickListener(
|
||||||
new OnClickListener() {
|
new OnClickListener() {
|
||||||
public void onClick(View view) {
|
public void onClick(View view) {
|
||||||
if (item != null && item.isDirectory()) {
|
if (file != null && file.isDirectory()) {
|
||||||
navigate(item);
|
navigate(file);
|
||||||
ScrollView sv = (ScrollView) parentActivity
|
ScrollView sv = (ScrollView) parentActivity
|
||||||
.findViewById(R.id.game_scroller);
|
.findViewById(R.id.game_scroller);
|
||||||
sv.scrollTo(0, 0);
|
sv.scrollTo(0, 0);
|
||||||
|
@ -436,11 +418,11 @@ public class FileBrowser extends Fragment {
|
||||||
childview.findViewById(R.id.childview).setOnTouchListener(
|
childview.findViewById(R.id.childview).setOnTouchListener(
|
||||||
new OnTouchListener() {
|
new OnTouchListener() {
|
||||||
@SuppressWarnings("deprecation")
|
@SuppressWarnings("deprecation")
|
||||||
public boolean onTouch(View view, MotionEvent arg1) {
|
public boolean onTouch(View view, MotionEvent event) {
|
||||||
if (arg1.getActionMasked() == MotionEvent.ACTION_DOWN) {
|
if (event.getActionMasked() == MotionEvent.ACTION_DOWN) {
|
||||||
view.setBackgroundColor(0xFF4F3FFF);
|
view.setBackgroundColor(0xFF4F3FFF);
|
||||||
} else if (arg1.getActionMasked() == MotionEvent.ACTION_CANCEL
|
} else if (event.getActionMasked() == MotionEvent.ACTION_CANCEL
|
||||||
|| arg1.getActionMasked() == MotionEvent.ACTION_UP) {
|
|| event.getActionMasked() == MotionEvent.ACTION_UP) {
|
||||||
view.setBackgroundDrawable(orig_bg);
|
view.setBackgroundDrawable(orig_bg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -224,13 +224,17 @@ public class GL2JNIActivity extends Activity {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void initJoyStickLayout(int playerNum) {
|
private void initJoyStickLayout(int playerNum) {
|
||||||
pad.globalLS_X[playerNum] = pad.previousLS_X[playerNum] = 0.0f;
|
if (!pad.joystick[playerNum]) {
|
||||||
pad.globalLS_Y[playerNum] = pad.previousLS_Y[playerNum] = 0.0f;
|
pad.globalLS_X[playerNum] = pad.previousLS_X[playerNum] = 0.0f;
|
||||||
|
pad.globalLS_Y[playerNum] = pad.previousLS_Y[playerNum] = 0.0f;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void runCompatibilityMode() {
|
private void runCompatibilityMode() {
|
||||||
for (int n = 0; n < 4; n++) {
|
for (int n = 0; n < 4; n++) {
|
||||||
if (pad.compat[n]) {
|
if (pad.compat[n]) {
|
||||||
|
String id = pad.portId[n];
|
||||||
|
pad.joystick[n] = prefs.getBoolean(Gamepad.pref_js_separate + id, false);
|
||||||
getCompatibilityMap(n, pad.portId[n]);
|
getCompatibilityMap(n, pad.portId[n]);
|
||||||
initJoyStickLayout(n);
|
initJoyStickLayout(n);
|
||||||
}
|
}
|
||||||
|
|
|
@ -246,13 +246,17 @@ public class GL2JNINative extends NativeActivity {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void initJoyStickLayout(int playerNum) {
|
private void initJoyStickLayout(int playerNum) {
|
||||||
pad.globalLS_X[playerNum] = pad.previousLS_X[playerNum] = 0.0f;
|
if (!pad.joystick[playerNum]) {
|
||||||
pad.globalLS_Y[playerNum] = pad.previousLS_Y[playerNum] = 0.0f;
|
pad.globalLS_X[playerNum] = pad.previousLS_X[playerNum] = 0.0f;
|
||||||
|
pad.globalLS_Y[playerNum] = pad.previousLS_Y[playerNum] = 0.0f;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void runCompatibilityMode(int joy) {
|
private void runCompatibilityMode(int joy) {
|
||||||
for (int n = 0; n < 4; n++) {
|
for (int n = 0; n < 4; n++) {
|
||||||
if (pad.compat[n]) {
|
if (pad.compat[n]) {
|
||||||
|
String id = pad.portId[n];
|
||||||
|
pad.joystick[n] = prefs.getBoolean(Gamepad.pref_js_separate + id, false);
|
||||||
getCompatibilityMap(n, pad.portId[n]);
|
getCompatibilityMap(n, pad.portId[n]);
|
||||||
pad.playerNumX.put(joy, n);
|
pad.playerNumX.put(joy, n);
|
||||||
initJoyStickLayout(n);
|
initJoyStickLayout(n);
|
||||||
|
|
|
@ -60,7 +60,7 @@ public class MainActivity extends SlidingFragmentActivity implements
|
||||||
public void onCreate(Bundle savedInstanceState) {
|
public void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
setContentView(R.layout.mainuilayout_fragment);
|
setContentView(R.layout.mainuilayout_fragment);
|
||||||
setBehindContentView(R.layout.drawer_menu);
|
setBehindContentView(R.layout.drawer_menu);
|
||||||
|
|
||||||
mPrefs = PreferenceManager.getDefaultSharedPreferences(this);
|
mPrefs = PreferenceManager.getDefaultSharedPreferences(this);
|
||||||
|
|
||||||
|
@ -71,7 +71,7 @@ public class MainActivity extends SlidingFragmentActivity implements
|
||||||
}
|
}
|
||||||
|
|
||||||
String prior_error = mPrefs.getString("prior_error", null);
|
String prior_error = mPrefs.getString("prior_error", null);
|
||||||
if (prior_error != null && !prior_error.equals(null)) {
|
if (prior_error != null) {
|
||||||
displayLogOutput(prior_error);
|
displayLogOutput(prior_error);
|
||||||
mPrefs.edit().remove("prior_error").commit();
|
mPrefs.edit().remove("prior_error").commit();
|
||||||
} else {
|
} else {
|
||||||
|
@ -175,7 +175,7 @@ public class MainActivity extends SlidingFragmentActivity implements
|
||||||
.replace(R.id.fragment_container, browseFrag,
|
.replace(R.id.fragment_container, browseFrag,
|
||||||
"MAIN_BROWSER").addToBackStack(null)
|
"MAIN_BROWSER").addToBackStack(null)
|
||||||
.commit();
|
.commit();
|
||||||
setTitle(getString(R.string.browser));
|
setTitle(R.string.browser);
|
||||||
sm.toggle(true);
|
sm.toggle(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -195,7 +195,7 @@ public class MainActivity extends SlidingFragmentActivity implements
|
||||||
.replace(R.id.fragment_container, configFrag,
|
.replace(R.id.fragment_container, configFrag,
|
||||||
"CONFIG_FRAG").addToBackStack(null)
|
"CONFIG_FRAG").addToBackStack(null)
|
||||||
.commit();
|
.commit();
|
||||||
setTitle(getString(R.string.settings));
|
setTitle(R.string.settings);
|
||||||
sm.toggle(true);
|
sm.toggle(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -217,7 +217,7 @@ public class MainActivity extends SlidingFragmentActivity implements
|
||||||
.replace(R.id.fragment_container,
|
.replace(R.id.fragment_container,
|
||||||
optionsFrag, "OPTIONS_FRAG")
|
optionsFrag, "OPTIONS_FRAG")
|
||||||
.addToBackStack(null).commit();
|
.addToBackStack(null).commit();
|
||||||
setTitle(getString(R.string.paths));
|
setTitle(R.string.paths);
|
||||||
sm.toggle(true);
|
sm.toggle(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -237,7 +237,7 @@ public class MainActivity extends SlidingFragmentActivity implements
|
||||||
.beginTransaction()
|
.beginTransaction()
|
||||||
.replace(R.id.fragment_container, inputFrag,
|
.replace(R.id.fragment_container, inputFrag,
|
||||||
"INPUT_FRAG").addToBackStack(null).commit();
|
"INPUT_FRAG").addToBackStack(null).commit();
|
||||||
setTitle(getString(R.string.input));
|
setTitle(R.string.input);
|
||||||
sm.toggle(true);
|
sm.toggle(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -257,7 +257,7 @@ public class MainActivity extends SlidingFragmentActivity implements
|
||||||
.beginTransaction()
|
.beginTransaction()
|
||||||
.replace(R.id.fragment_container, aboutFrag,
|
.replace(R.id.fragment_container, aboutFrag,
|
||||||
"ABOUT_FRAG").addToBackStack(null).commit();
|
"ABOUT_FRAG").addToBackStack(null).commit();
|
||||||
setTitle(getString(R.string.about));
|
setTitle(R.string.about);
|
||||||
sm.toggle(true);
|
sm.toggle(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -274,7 +274,7 @@ public class MainActivity extends SlidingFragmentActivity implements
|
||||||
startActivity(new Intent(Intent.ACTION_VIEW, Uri
|
startActivity(new Intent(Intent.ACTION_VIEW, Uri
|
||||||
.parse("market://details?id="
|
.parse("market://details?id="
|
||||||
+ getPackageName())));
|
+ getPackageName())));
|
||||||
//setTitle(getString(R.string.rateme));
|
//setTitle(R.string.rateme);
|
||||||
sm.toggle(true);
|
sm.toggle(true);
|
||||||
return true;
|
return true;
|
||||||
} else
|
} else
|
||||||
|
@ -314,9 +314,9 @@ public class MainActivity extends SlidingFragmentActivity implements
|
||||||
*/
|
*/
|
||||||
private void displayLogOutput(final String error) {
|
private void displayLogOutput(final String error) {
|
||||||
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
|
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
|
||||||
builder.setTitle(getString(R.string.report_issue));
|
builder.setTitle(R.string.report_issue);
|
||||||
builder.setMessage(error);
|
builder.setMessage(error);
|
||||||
builder.setNegativeButton("Dismiss",
|
builder.setNegativeButton(R.string.dismiss,
|
||||||
new DialogInterface.OnClickListener() {
|
new DialogInterface.OnClickListener() {
|
||||||
public void onClick(DialogInterface dialog, int which) {
|
public void onClick(DialogInterface dialog, int which) {
|
||||||
dialog.dismiss();
|
dialog.dismiss();
|
||||||
|
@ -352,32 +352,32 @@ public class MainActivity extends SlidingFragmentActivity implements
|
||||||
this);
|
this);
|
||||||
|
|
||||||
// set title
|
// set title
|
||||||
alertDialogBuilder.setTitle("You have to provide the BIOS");
|
if (!isBiosExisting())
|
||||||
|
alertDialogBuilder.setTitle(R.string.missing_bios_title);
|
||||||
|
else if (!isFlashExisting())
|
||||||
|
alertDialogBuilder.setTitle(R.string.missing_flash_title);
|
||||||
|
|
||||||
// set dialog message
|
// set dialog message
|
||||||
alertDialogBuilder
|
alertDialogBuilder
|
||||||
.setMessage(msg)
|
.setMessage(msg)
|
||||||
.setCancelable(false)
|
.setCancelable(false)
|
||||||
.setPositiveButton("Dismiss",
|
.setPositiveButton(R.string.dismiss,
|
||||||
new DialogInterface.OnClickListener() {
|
new DialogInterface.OnClickListener() {
|
||||||
public void onClick(DialogInterface dialog,
|
public void onClick(DialogInterface dialog, int id) {
|
||||||
int id) {
|
|
||||||
// if this button is clicked, close
|
// if this button is clicked, close
|
||||||
// current activity
|
// current activity
|
||||||
// MainActivity.this.finish();
|
// MainActivity.this.finish();
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.setNegativeButton("Options",
|
.setNegativeButton(R.string.options,
|
||||||
new DialogInterface.OnClickListener() {
|
new DialogInterface.OnClickListener() {
|
||||||
public void onClick(DialogInterface dialog,
|
public void onClick(DialogInterface dialog, int id) {
|
||||||
int id) {
|
|
||||||
FileBrowser firstFragment = new FileBrowser();
|
FileBrowser firstFragment = new FileBrowser();
|
||||||
Bundle args = new Bundle();
|
Bundle args = new Bundle();
|
||||||
// args.putBoolean("ImgBrowse", false);
|
// args.putBoolean("ImgBrowse", false);
|
||||||
// specify ImgBrowse option. true = images,
|
// specify ImgBrowse option. true = images,
|
||||||
// false = folders only
|
// false = folders only
|
||||||
args.putString("browse_entry",
|
args.putString("browse_entry", sdcard.toString());
|
||||||
sdcard.toString());
|
|
||||||
// specify a path for selecting folder
|
// specify a path for selecting folder
|
||||||
// options
|
// options
|
||||||
args.putBoolean("games_entry", false);
|
args.putBoolean("games_entry", false);
|
||||||
|
@ -520,7 +520,7 @@ public class MainActivity extends SlidingFragmentActivity implements
|
||||||
.beginTransaction()
|
.beginTransaction()
|
||||||
.replace(R.id.fragment_container, fragment,
|
.replace(R.id.fragment_container, fragment,
|
||||||
"MAIN_BROWSER").commit();
|
"MAIN_BROWSER").commit();
|
||||||
setTitle(getString(R.string.browser));
|
setTitle(R.string.browser);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -115,33 +115,6 @@ public class Config {
|
||||||
JNIdc.dreamtime(DreamTime.getDreamtime());
|
JNIdc.dreamtime(DreamTime.getDreamtime());
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void customNotify(Activity activity, int icon, int message) {
|
|
||||||
LayoutInflater inflater = activity.getLayoutInflater();
|
|
||||||
View layout = inflater.inflate(R.layout.toast_layout,
|
|
||||||
(ViewGroup) activity.findViewById(R.id.toast_layout_root));
|
|
||||||
|
|
||||||
ImageView image = (ImageView) layout.findViewById(R.id.image);
|
|
||||||
if (icon != -1) {
|
|
||||||
image.setImageResource(icon);
|
|
||||||
} else {
|
|
||||||
image.setImageResource(R.drawable.ic_launcher);
|
|
||||||
}
|
|
||||||
|
|
||||||
TextView text = (TextView) layout.findViewById(R.id.text);
|
|
||||||
text.setText(activity.getString(message));
|
|
||||||
|
|
||||||
DisplayMetrics metrics = new DisplayMetrics();
|
|
||||||
activity.getWindowManager().getDefaultDisplay().getMetrics(metrics);
|
|
||||||
final float scale = activity.getResources().getDisplayMetrics().density;
|
|
||||||
int toastPixels = (int) ((metrics.widthPixels * scale + 0.5f) / 14);
|
|
||||||
|
|
||||||
Toast toast = new Toast(activity);
|
|
||||||
toast.setGravity(Gravity.BOTTOM, 0, toastPixels);
|
|
||||||
toast.setDuration(Toast.LENGTH_SHORT);
|
|
||||||
toast.setView(layout);
|
|
||||||
toast.show();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Read the output of a shell command
|
* Read the output of a shell command
|
||||||
*
|
*
|
||||||
|
|
|
@ -32,8 +32,6 @@ import de.ankri.views.Switch;
|
||||||
|
|
||||||
public class ConfigureFragment extends Fragment {
|
public class ConfigureFragment extends Fragment {
|
||||||
|
|
||||||
Activity parentActivity;
|
|
||||||
OnClickListener mCallback;
|
|
||||||
private Config config;
|
private Config config;
|
||||||
|
|
||||||
private SharedPreferences mPrefs;
|
private SharedPreferences mPrefs;
|
||||||
|
@ -62,12 +60,12 @@ public class ConfigureFragment extends Fragment {
|
||||||
public void onViewCreated(View view, Bundle savedInstanceState) {
|
public void onViewCreated(View view, Bundle savedInstanceState) {
|
||||||
// setContentView(R.layout.activity_main);
|
// setContentView(R.layout.activity_main);
|
||||||
|
|
||||||
parentActivity = getActivity();
|
//parentActivity = getActivity();
|
||||||
|
|
||||||
|
|
||||||
mPrefs = PreferenceManager.getDefaultSharedPreferences(parentActivity);
|
mPrefs = PreferenceManager.getDefaultSharedPreferences(getActivity());
|
||||||
home_directory = mPrefs.getString(Config.pref_home, home_directory);
|
home_directory = mPrefs.getString(Config.pref_home, home_directory);
|
||||||
config = new Config(parentActivity);
|
config = new Config(getActivity());
|
||||||
config.getConfigurationPrefs();
|
config.getConfigurationPrefs();
|
||||||
|
|
||||||
// Generate the menu options and fill in existing settings
|
// Generate the menu options and fill in existing settings
|
||||||
|
@ -115,23 +113,15 @@ public class ConfigureFragment extends Fragment {
|
||||||
}
|
}
|
||||||
unstable_opt.setOnCheckedChangeListener(unstable_option);
|
unstable_opt.setOnCheckedChangeListener(unstable_option);
|
||||||
|
|
||||||
String[] regions = parentActivity.getResources()
|
String[] regions = getResources().getStringArray(R.array.region);
|
||||||
.getStringArray(R.array.region);
|
Spinner region_spnr = (Spinner) getView().findViewById(R.id.region_spinner);
|
||||||
|
|
||||||
Spinner region_spnr = (Spinner) getView().findViewById(
|
|
||||||
R.id.region_spinner);
|
|
||||||
ArrayAdapter<String> regionAdapter = new ArrayAdapter<String>(
|
ArrayAdapter<String> regionAdapter = new ArrayAdapter<String>(
|
||||||
parentActivity, R.layout.spinner_selected, regions);
|
getActivity(), R.layout.spinner_selected, regions);
|
||||||
regionAdapter
|
regionAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
|
||||||
.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
|
|
||||||
region_spnr.setAdapter(regionAdapter);
|
region_spnr.setAdapter(regionAdapter);
|
||||||
|
|
||||||
region_spnr.setSelection(Config.dcregion, true);
|
region_spnr.setSelection(Config.dcregion, true);
|
||||||
|
|
||||||
region_spnr.setOnItemSelectedListener(new OnItemSelectedListener() {
|
region_spnr.setOnItemSelectedListener(new OnItemSelectedListener() {
|
||||||
|
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
|
||||||
public void onItemSelected(AdapterView<?> parent, View view,
|
|
||||||
int pos, long id) {
|
|
||||||
mPrefs.edit().putInt(Config.pref_dcregion, pos).commit();
|
mPrefs.edit().putInt(Config.pref_dcregion, pos).commit();
|
||||||
Config.dcregion = pos;
|
Config.dcregion = pos;
|
||||||
|
|
||||||
|
@ -140,17 +130,13 @@ public class ConfigureFragment extends Fragment {
|
||||||
public void onNothingSelected(AdapterView<?> arg0) {
|
public void onNothingSelected(AdapterView<?> arg0) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
String[] broadcasts = parentActivity.getResources().getStringArray(
|
String[] broadcasts = getResources().getStringArray(R.array.broadcast);
|
||||||
R.array.broadcast);
|
Spinner broadcast_spnr = (Spinner) getView().findViewById(R.id.broadcast_spinner);
|
||||||
Spinner broadcast_spnr = (Spinner) getView().findViewById(
|
|
||||||
R.id.broadcast_spinner);
|
|
||||||
ArrayAdapter<String> broadcastAdapter = new ArrayAdapter<String>(
|
ArrayAdapter<String> broadcastAdapter = new ArrayAdapter<String>(
|
||||||
parentActivity, R.layout.spinner_selected, broadcasts);
|
getActivity(), R.layout.spinner_selected, broadcasts);
|
||||||
broadcastAdapter
|
broadcastAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
|
||||||
.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
|
|
||||||
broadcast_spnr.setAdapter(broadcastAdapter);
|
broadcast_spnr.setAdapter(broadcastAdapter);
|
||||||
|
|
||||||
int select = 0;
|
int select = 0;
|
||||||
|
@ -159,76 +145,66 @@ public class ConfigureFragment extends Fragment {
|
||||||
if (broadcasts[i].startsWith(cast + " - "))
|
if (broadcasts[i].startsWith(cast + " - "))
|
||||||
select = i;
|
select = i;
|
||||||
}
|
}
|
||||||
broadcast_spnr.setSelection(select, true);
|
|
||||||
|
|
||||||
|
broadcast_spnr.setSelection(select, true);
|
||||||
broadcast_spnr.setOnItemSelectedListener(new OnItemSelectedListener() {
|
broadcast_spnr.setOnItemSelectedListener(new OnItemSelectedListener() {
|
||||||
|
|
||||||
public void onItemSelected(AdapterView<?> parent, View view,
|
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
|
||||||
int pos, long id) {
|
|
||||||
String item = parent.getItemAtPosition(pos).toString();
|
String item = parent.getItemAtPosition(pos).toString();
|
||||||
String selection = item.substring(0, item.indexOf(" - "));
|
String selection = item.substring(0, item.indexOf(" - "));
|
||||||
mPrefs.edit()
|
mPrefs.edit()
|
||||||
.putInt(Config.pref_broadcast, Integer.valueOf(selection))
|
.putInt(Config.pref_broadcast, Integer.parseInt(selection))
|
||||||
.commit();
|
.commit();
|
||||||
Config.broadcast = Integer.valueOf(selection);
|
Config.broadcast = Integer.parseInt(selection);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onNothingSelected(AdapterView<?> arg0) {
|
public void onNothingSelected(AdapterView<?> arg0) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
OnCheckedChangeListener limitfps_option = new OnCheckedChangeListener() {
|
OnCheckedChangeListener limitfps_option = new OnCheckedChangeListener() {
|
||||||
|
|
||||||
public void onCheckedChanged(CompoundButton buttonView,
|
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
|
||||||
boolean isChecked) {
|
|
||||||
mPrefs.edit().putBoolean(Config.pref_limitfps, isChecked).commit();
|
mPrefs.edit().putBoolean(Config.pref_limitfps, isChecked).commit();
|
||||||
Config.limitfps = isChecked;
|
Config.limitfps = isChecked;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
Switch limit_fps = (Switch) getView()
|
Switch limit_fps = (Switch) getView().findViewById(R.id.limitfps_option);
|
||||||
.findViewById(R.id.limitfps_option);
|
|
||||||
limit_fps.setChecked(Config.limitfps);
|
limit_fps.setChecked(Config.limitfps);
|
||||||
limit_fps.setOnCheckedChangeListener(limitfps_option);
|
limit_fps.setOnCheckedChangeListener(limitfps_option);
|
||||||
|
|
||||||
OnCheckedChangeListener mipmaps_option = new OnCheckedChangeListener() {
|
OnCheckedChangeListener mipmaps_option = new OnCheckedChangeListener() {
|
||||||
|
|
||||||
public void onCheckedChanged(CompoundButton buttonView,
|
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
|
||||||
boolean isChecked) {
|
|
||||||
mPrefs.edit().putBoolean(Config.pref_mipmaps, isChecked).commit();
|
mPrefs.edit().putBoolean(Config.pref_mipmaps, isChecked).commit();
|
||||||
Config.mipmaps = isChecked;
|
Config.mipmaps = isChecked;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
Switch mipmap_opt = (Switch) getView()
|
Switch mipmap_opt = (Switch) getView().findViewById(R.id.mipmaps_option);
|
||||||
.findViewById(R.id.mipmaps_option);
|
|
||||||
mipmap_opt.setChecked(Config.mipmaps);
|
mipmap_opt.setChecked(Config.mipmaps);
|
||||||
mipmap_opt.setOnCheckedChangeListener(mipmaps_option);
|
mipmap_opt.setOnCheckedChangeListener(mipmaps_option);
|
||||||
|
|
||||||
OnCheckedChangeListener full_screen = new OnCheckedChangeListener() {
|
OnCheckedChangeListener full_screen = new OnCheckedChangeListener() {
|
||||||
|
|
||||||
public void onCheckedChanged(CompoundButton buttonView,
|
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
|
||||||
boolean isChecked) {
|
|
||||||
mPrefs.edit().putBoolean(Config.pref_widescreen, isChecked).commit();
|
mPrefs.edit().putBoolean(Config.pref_widescreen, isChecked).commit();
|
||||||
Config.widescreen = isChecked;
|
Config.widescreen = isChecked;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
Switch stretch_view = (Switch) getView().findViewById(
|
Switch stretch_view = (Switch) getView().findViewById(R.id.stretch_option);
|
||||||
R.id.stretch_option);
|
|
||||||
stretch_view.setChecked(Config.widescreen);
|
stretch_view.setChecked(Config.widescreen);
|
||||||
stretch_view.setOnCheckedChangeListener(full_screen);
|
stretch_view.setOnCheckedChangeListener(full_screen);
|
||||||
|
|
||||||
final TextView mainFrames = (TextView) getView().findViewById(R.id.current_frames);
|
final TextView mainFrames = (TextView) getView().findViewById(R.id.current_frames);
|
||||||
mainFrames.setText(String.valueOf(Config.frameskip));
|
mainFrames.setText(String.valueOf(Config.frameskip));
|
||||||
|
|
||||||
SeekBar frameSeek = (SeekBar) getView()
|
SeekBar frameSeek = (SeekBar) getView().findViewById(R.id.frame_seekbar);
|
||||||
.findViewById(R.id.frame_seekbar);
|
|
||||||
frameSeek.setProgress(Config.frameskip);
|
frameSeek.setProgress(Config.frameskip);
|
||||||
frameSeek.setIndeterminate(false);
|
frameSeek.setIndeterminate(false);
|
||||||
frameSeek.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
|
frameSeek.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
|
||||||
public void onProgressChanged(SeekBar seekBar, int progress,
|
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
|
||||||
boolean fromUser) {
|
|
||||||
mainFrames.setText(String.valueOf(progress));
|
mainFrames.setText(String.valueOf(progress));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -245,8 +221,7 @@ public class ConfigureFragment extends Fragment {
|
||||||
|
|
||||||
OnCheckedChangeListener pvr_rendering = new OnCheckedChangeListener() {
|
OnCheckedChangeListener pvr_rendering = new OnCheckedChangeListener() {
|
||||||
|
|
||||||
public void onCheckedChanged(CompoundButton buttonView,
|
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
|
||||||
boolean isChecked) {
|
|
||||||
mPrefs.edit().putBoolean(Config.pref_pvrrender, isChecked).commit();
|
mPrefs.edit().putBoolean(Config.pref_pvrrender, isChecked).commit();
|
||||||
Config.pvrrender = isChecked;
|
Config.pvrrender = isChecked;
|
||||||
}
|
}
|
||||||
|
@ -255,8 +230,7 @@ public class ConfigureFragment extends Fragment {
|
||||||
pvr_render.setChecked(Config.pvrrender);
|
pvr_render.setChecked(Config.pvrrender);
|
||||||
pvr_render.setOnCheckedChangeListener(pvr_rendering);
|
pvr_render.setOnCheckedChangeListener(pvr_rendering);
|
||||||
|
|
||||||
final EditText cheatEdit = (EditText) getView().findViewById(
|
final EditText cheatEdit = (EditText) getView().findViewById(R.id.cheat_disk);
|
||||||
R.id.cheat_disk);
|
|
||||||
String disk = Config.cheatdisk;
|
String disk = Config.cheatdisk;
|
||||||
if (disk != null && disk.contains("/")) {
|
if (disk != null && disk.contains("/")) {
|
||||||
cheatEdit.setText(disk.substring(disk.lastIndexOf("/"),
|
cheatEdit.setText(disk.substring(disk.lastIndexOf("/"),
|
||||||
|
@ -280,12 +254,10 @@ public class ConfigureFragment extends Fragment {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void beforeTextChanged(CharSequence s, int start, int count,
|
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
|
||||||
int after) {
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onTextChanged(CharSequence s, int start, int before,
|
public void onTextChanged(CharSequence s, int start, int before, int count) {
|
||||||
int count) {
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -301,13 +273,11 @@ public class ConfigureFragment extends Fragment {
|
||||||
fps_opt.setChecked(counter);
|
fps_opt.setChecked(counter);
|
||||||
fps_opt.setOnCheckedChangeListener(fps_options);
|
fps_opt.setOnCheckedChangeListener(fps_options);
|
||||||
|
|
||||||
final Switch force_gpu_opt = (Switch) getView().findViewById(
|
final Switch force_gpu_opt = (Switch) getView().findViewById(R.id.force_gpu_option);
|
||||||
R.id.force_gpu_option);
|
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
|
||||||
OnCheckedChangeListener force_gpu_options = new OnCheckedChangeListener() {
|
OnCheckedChangeListener force_gpu_options = new OnCheckedChangeListener() {
|
||||||
|
|
||||||
public void onCheckedChanged(CompoundButton buttonView,
|
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
|
||||||
boolean isChecked) {
|
|
||||||
mPrefs.edit().putBoolean(Config.pref_forcegpu, isChecked).commit();
|
mPrefs.edit().putBoolean(Config.pref_forcegpu, isChecked).commit();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -322,9 +292,12 @@ public class ConfigureFragment extends Fragment {
|
||||||
R.id.software_option);
|
R.id.software_option);
|
||||||
OnCheckedChangeListener force_software = new OnCheckedChangeListener() {
|
OnCheckedChangeListener force_software = new OnCheckedChangeListener() {
|
||||||
|
|
||||||
public void onCheckedChanged(CompoundButton buttonView,
|
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
|
||||||
boolean isChecked) {
|
mPrefs.edit()
|
||||||
mPrefs.edit().putInt(Config.pref_rendertype, isChecked ? 1 : 2).commit();
|
.putInt(Config.pref_rendertype,
|
||||||
|
isChecked ? GL2JNIView.LAYER_TYPE_SOFTWARE
|
||||||
|
: GL2JNIView.LAYER_TYPE_HARDWARE)
|
||||||
|
.commit();
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
|
||||||
if (isChecked) {
|
if (isChecked) {
|
||||||
force_gpu_opt.setEnabled(false);
|
force_gpu_opt.setEnabled(false);
|
||||||
|
@ -335,17 +308,14 @@ public class ConfigureFragment extends Fragment {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
int software = mPrefs.getInt(Config.pref_rendertype,
|
int software = mPrefs.getInt(Config.pref_rendertype, GL2JNIView.LAYER_TYPE_HARDWARE);
|
||||||
GL2JNIView.LAYER_TYPE_HARDWARE);
|
force_software_opt.setChecked(software == GL2JNIView.LAYER_TYPE_SOFTWARE);
|
||||||
force_software_opt
|
|
||||||
.setChecked(software == GL2JNIView.LAYER_TYPE_SOFTWARE);
|
|
||||||
force_software_opt.setOnCheckedChangeListener(force_software);
|
force_software_opt.setOnCheckedChangeListener(force_software);
|
||||||
|
|
||||||
Switch sound_opt = (Switch) getView().findViewById(R.id.sound_option);
|
Switch sound_opt = (Switch) getView().findViewById(R.id.sound_option);
|
||||||
OnCheckedChangeListener emu_sound = new OnCheckedChangeListener() {
|
OnCheckedChangeListener emu_sound = new OnCheckedChangeListener() {
|
||||||
|
|
||||||
public void onCheckedChanged(CompoundButton buttonView,
|
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
|
||||||
boolean isChecked) {
|
|
||||||
mPrefs.edit().putBoolean(Config.pref_nosound, isChecked).commit();
|
mPrefs.edit().putBoolean(Config.pref_nosound, isChecked).commit();
|
||||||
Config.nosound = isChecked;
|
Config.nosound = isChecked;
|
||||||
}
|
}
|
||||||
|
@ -354,15 +324,12 @@ public class ConfigureFragment extends Fragment {
|
||||||
sound_opt.setChecked(sound);
|
sound_opt.setChecked(sound);
|
||||||
sound_opt.setOnCheckedChangeListener(emu_sound);
|
sound_opt.setOnCheckedChangeListener(emu_sound);
|
||||||
|
|
||||||
String[] depths = parentActivity.getResources().getStringArray(
|
String[] depths = getResources().getStringArray(R.array.depth);
|
||||||
R.array.depth);
|
|
||||||
|
|
||||||
Spinner depth_spnr = (Spinner) getView().findViewById(
|
Spinner depth_spnr = (Spinner) getView().findViewById(R.id.depth_spinner);
|
||||||
R.id.depth_spinner);
|
|
||||||
ArrayAdapter<String> depthAdapter = new ArrayAdapter<String>(
|
ArrayAdapter<String> depthAdapter = new ArrayAdapter<String>(
|
||||||
parentActivity, R.layout.spinner_selected, depths);
|
getActivity(), R.layout.spinner_selected, depths);
|
||||||
depthAdapter
|
depthAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
|
||||||
.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
|
|
||||||
depth_spnr.setAdapter(depthAdapter);
|
depth_spnr.setAdapter(depthAdapter);
|
||||||
|
|
||||||
String depth = String.valueOf(mPrefs.getInt(Config.pref_renderdepth, 24));
|
String depth = String.valueOf(mPrefs.getInt(Config.pref_renderdepth, 24));
|
||||||
|
@ -370,19 +337,14 @@ public class ConfigureFragment extends Fragment {
|
||||||
|
|
||||||
depth_spnr.setOnItemSelectedListener(new OnItemSelectedListener() {
|
depth_spnr.setOnItemSelectedListener(new OnItemSelectedListener() {
|
||||||
|
|
||||||
public void onItemSelected(AdapterView<?> parent, View view,
|
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
|
||||||
int pos, long id) {
|
int render = Integer.parseInt(parent.getItemAtPosition(pos).toString());
|
||||||
int render = Integer.valueOf(parent.getItemAtPosition(pos)
|
|
||||||
.toString());
|
|
||||||
mPrefs.edit().putInt(Config.pref_renderdepth, render).commit();
|
mPrefs.edit().putInt(Config.pref_renderdepth, render).commit();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onNothingSelected(AdapterView<?> arg0) {
|
public void onNothingSelected(AdapterView<?> arg0) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,6 +6,7 @@ import android.app.Dialog;
|
||||||
import android.content.DialogInterface;
|
import android.content.DialogInterface;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.SharedPreferences;
|
import android.content.SharedPreferences;
|
||||||
|
import android.content.pm.PackageManager;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
|
@ -50,7 +51,7 @@ public class InputFragment extends Fragment {
|
||||||
|
|
||||||
// Container Activity must implement this interface
|
// Container Activity must implement this interface
|
||||||
public interface OnClickListener {
|
public interface OnClickListener {
|
||||||
public void onMainBrowseSelected(String path_entry, boolean games);
|
void onMainBrowseSelected(String path_entry, boolean games);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -105,8 +106,7 @@ public class InputFragment extends Fragment {
|
||||||
};
|
};
|
||||||
switchTouchVibrationEnabled = (Switch) getView().findViewById(
|
switchTouchVibrationEnabled = (Switch) getView().findViewById(
|
||||||
R.id.switchTouchVibrationEnabled);
|
R.id.switchTouchVibrationEnabled);
|
||||||
boolean vibrate = sharedPreferences.getBoolean(Config.pref_touchvibe,
|
boolean vibrate = sharedPreferences.getBoolean(Config.pref_touchvibe, true);
|
||||||
true);
|
|
||||||
if (vibrate) {
|
if (vibrate) {
|
||||||
switchTouchVibrationEnabled.setChecked(true);
|
switchTouchVibrationEnabled.setChecked(true);
|
||||||
} else {
|
} else {
|
||||||
|
@ -120,7 +120,7 @@ public class InputFragment extends Fragment {
|
||||||
false);
|
false);
|
||||||
micPluggedIntoFirstController.setChecked(micPluggedIn);
|
micPluggedIntoFirstController.setChecked(micPluggedIn);
|
||||||
if (getActivity().getPackageManager().hasSystemFeature(
|
if (getActivity().getPackageManager().hasSystemFeature(
|
||||||
"android.hardware.microphone")) {
|
PackageManager.FEATURE_MICROPHONE)) {
|
||||||
// Microphone is present on the device
|
// Microphone is present on the device
|
||||||
micPluggedIntoFirstController
|
micPluggedIntoFirstController
|
||||||
.setOnCheckedChangeListener(new OnCheckedChangeListener() {
|
.setOnCheckedChangeListener(new OnCheckedChangeListener() {
|
||||||
|
@ -286,7 +286,7 @@ public class InputFragment extends Fragment {
|
||||||
buttonRemoveControllerPlayer1.setEnabled(true);
|
buttonRemoveControllerPlayer1.setEnabled(true);
|
||||||
} else {
|
} else {
|
||||||
textViewDeviceDescriptorPlayer1
|
textViewDeviceDescriptorPlayer1
|
||||||
.setText(getString(R.string.controller_none_selected));
|
.setText(R.string.controller_none_selected);
|
||||||
buttonRemoveControllerPlayer1.setEnabled(false);
|
buttonRemoveControllerPlayer1.setEnabled(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -306,7 +306,7 @@ public class InputFragment extends Fragment {
|
||||||
buttonRemoveControllerPlayer2.setEnabled(true);
|
buttonRemoveControllerPlayer2.setEnabled(true);
|
||||||
} else {
|
} else {
|
||||||
textViewDeviceDescriptorPlayer2
|
textViewDeviceDescriptorPlayer2
|
||||||
.setText(getString(R.string.controller_none_selected));
|
.setText(R.string.controller_none_selected);
|
||||||
buttonRemoveControllerPlayer2.setEnabled(false);
|
buttonRemoveControllerPlayer2.setEnabled(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -326,7 +326,7 @@ public class InputFragment extends Fragment {
|
||||||
buttonRemoveControllerPlayer3.setEnabled(true);
|
buttonRemoveControllerPlayer3.setEnabled(true);
|
||||||
} else {
|
} else {
|
||||||
textViewDeviceDescriptorPlayer3
|
textViewDeviceDescriptorPlayer3
|
||||||
.setText(getString(R.string.controller_none_selected));
|
.setText(R.string.controller_none_selected);
|
||||||
buttonRemoveControllerPlayer3.setEnabled(false);
|
buttonRemoveControllerPlayer3.setEnabled(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -346,7 +346,7 @@ public class InputFragment extends Fragment {
|
||||||
buttonRemoveControllerPlayer4.setEnabled(true);
|
buttonRemoveControllerPlayer4.setEnabled(true);
|
||||||
} else {
|
} else {
|
||||||
textViewDeviceDescriptorPlayer4
|
textViewDeviceDescriptorPlayer4
|
||||||
.setText(getString(R.string.controller_none_selected));
|
.setText(R.string.controller_none_selected);
|
||||||
buttonRemoveControllerPlayer4.setEnabled(false);
|
buttonRemoveControllerPlayer4.setEnabled(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -356,17 +356,17 @@ public class InputFragment extends Fragment {
|
||||||
listenForButton = playerNum;
|
listenForButton = playerNum;
|
||||||
|
|
||||||
AlertDialog.Builder builder = new AlertDialog.Builder(parentActivity);
|
AlertDialog.Builder builder = new AlertDialog.Builder(parentActivity);
|
||||||
builder.setTitle(getString(R.string.select_controller_title));
|
builder.setTitle(R.string.select_controller_title);
|
||||||
builder.setMessage(getString(R.string.select_controller_message,
|
builder.setMessage(getString(R.string.select_controller_message,
|
||||||
String.valueOf(listenForButton)));
|
String.valueOf(listenForButton)));
|
||||||
builder.setPositiveButton(getString(R.string.cancel),
|
builder.setPositiveButton(R.string.cancel,
|
||||||
new DialogInterface.OnClickListener() {
|
new DialogInterface.OnClickListener() {
|
||||||
public void onClick(DialogInterface dialog, int which) {
|
public void onClick(DialogInterface dialog, int which) {
|
||||||
listenForButton = 0;
|
listenForButton = 0;
|
||||||
dialog.dismiss();
|
dialog.dismiss();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
builder.setNegativeButton(getString(R.string.manual),
|
builder.setNegativeButton(R.string.manual,
|
||||||
new DialogInterface.OnClickListener() {
|
new DialogInterface.OnClickListener() {
|
||||||
public void onClick(DialogInterface dialog, int which) {
|
public void onClick(DialogInterface dialog, int which) {
|
||||||
InputModFragment inputModFrag = new InputModFragment();
|
InputModFragment inputModFrag = new InputModFragment();
|
||||||
|
@ -456,8 +456,7 @@ public class InputFragment extends Fragment {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
Log.d("New controller for port " + String.valueOf(listenForButton)
|
Log.d("New controller for port " + listenForButton + ":", descriptor);
|
||||||
+ ":", descriptor);
|
|
||||||
|
|
||||||
listenForButton = 0;
|
listenForButton = 0;
|
||||||
alertDialogSelectController.cancel();
|
alertDialogSelectController.cancel();
|
||||||
|
@ -489,7 +488,7 @@ public class InputFragment extends Fragment {
|
||||||
updateControllers();
|
updateControllers();
|
||||||
}
|
}
|
||||||
|
|
||||||
class MogaListener implements ControllerListener {
|
private final class MogaListener implements ControllerListener {
|
||||||
|
|
||||||
private int playerNum;
|
private int playerNum;
|
||||||
private String controllerId;
|
private String controllerId;
|
||||||
|
@ -511,13 +510,14 @@ public class InputFragment extends Fragment {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onStateEvent(StateEvent event) {
|
public void onStateEvent(StateEvent event) {
|
||||||
if (event.getState() == StateEvent.STATE_CONNECTION
|
if (event.getState() == StateEvent.STATE_CONNECTION &&
|
||||||
&& event.getAction() == MOGAInput.ACTION_CONNECTED) {
|
event.getAction() == MOGAInput.ACTION_CONNECTED) {
|
||||||
|
|
||||||
int mControllerVersion = moga.mController
|
int mControllerVersion = moga.mController
|
||||||
.getState(Controller.STATE_CURRENT_PRODUCT_VERSION);
|
.getState(Controller.STATE_CURRENT_PRODUCT_VERSION);
|
||||||
if (mControllerVersion == Controller.ACTION_VERSION_MOGAPRO) {
|
|
||||||
pad.isActiveMoga[playerNum] = true;
|
if (mControllerVersion == Controller.ACTION_VERSION_MOGA ||
|
||||||
} else if (mControllerVersion == Controller.ACTION_VERSION_MOGA) {
|
mControllerVersion == Controller.ACTION_VERSION_MOGAPRO) {
|
||||||
pad.isActiveMoga[playerNum] = true;
|
pad.isActiveMoga[playerNum] = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,7 +4,6 @@ import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
|
|
||||||
import android.annotation.TargetApi;
|
import android.annotation.TargetApi;
|
||||||
import android.app.Activity;
|
|
||||||
import android.app.AlertDialog;
|
import android.app.AlertDialog;
|
||||||
import android.app.Dialog;
|
import android.app.Dialog;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
@ -42,7 +41,6 @@ import de.ankri.views.Switch;
|
||||||
|
|
||||||
public class InputModFragment extends Fragment {
|
public class InputModFragment extends Fragment {
|
||||||
|
|
||||||
private Activity parentActivity;
|
|
||||||
private SharedPreferences mPrefs;
|
private SharedPreferences mPrefs;
|
||||||
|
|
||||||
private Switch switchJoystickDpadEnabled;
|
private Switch switchJoystickDpadEnabled;
|
||||||
|
@ -67,11 +65,9 @@ public class InputModFragment extends Fragment {
|
||||||
private int playerNum = -1;
|
private int playerNum = -1;
|
||||||
private mapKeyCode mKey;
|
private mapKeyCode mKey;
|
||||||
|
|
||||||
Gamepad pad = new Gamepad();
|
|
||||||
|
|
||||||
// Container Activity must implement this interface
|
// Container Activity must implement this interface
|
||||||
public interface OnClickListener {
|
public interface OnClickListener {
|
||||||
public void onMainBrowseSelected(String path_entry, boolean games);
|
void onMainBrowseSelected(String path_entry, boolean games);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -83,17 +79,15 @@ public class InputModFragment extends Fragment {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onViewCreated(View view, Bundle savedInstanceState) {
|
public void onViewCreated(View view, Bundle savedInstanceState) {
|
||||||
parentActivity = getActivity();
|
|
||||||
|
|
||||||
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) {
|
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) {
|
||||||
Runtime.getRuntime().freeMemory();
|
Runtime.getRuntime().freeMemory();
|
||||||
System.gc();
|
System.gc();
|
||||||
}
|
}
|
||||||
|
|
||||||
mPrefs = PreferenceManager.getDefaultSharedPreferences(parentActivity);
|
mPrefs = PreferenceManager.getDefaultSharedPreferences(getActivity());
|
||||||
|
|
||||||
final String[] controllers = parentActivity.getResources()
|
final String[] controllers = getResources().getStringArray(R.array.controllers);
|
||||||
.getStringArray(R.array.controllers);
|
|
||||||
|
|
||||||
Bundle b = getArguments();
|
Bundle b = getArguments();
|
||||||
if (b != null) {
|
if (b != null) {
|
||||||
|
@ -141,7 +135,7 @@ public class InputModFragment extends Fragment {
|
||||||
R.id.switchCompatibilityEnabled);
|
R.id.switchCompatibilityEnabled);
|
||||||
switchCompatibilityEnabled.setOnCheckedChangeListener(compat_mode);
|
switchCompatibilityEnabled.setOnCheckedChangeListener(compat_mode);
|
||||||
|
|
||||||
mKey = new mapKeyCode(parentActivity);
|
mKey = new mapKeyCode(getActivity());
|
||||||
|
|
||||||
ImageView a_button_icon = (ImageView) getView().findViewById(
|
ImageView a_button_icon = (ImageView) getView().findViewById(
|
||||||
R.id.a_button_icon);
|
R.id.a_button_icon);
|
||||||
|
@ -350,7 +344,7 @@ public class InputModFragment extends Fragment {
|
||||||
Spinner player_spnr = (Spinner) getView().findViewById(
|
Spinner player_spnr = (Spinner) getView().findViewById(
|
||||||
R.id.player_spinner);
|
R.id.player_spinner);
|
||||||
ArrayAdapter<String> playerAdapter = new ArrayAdapter<String>(
|
ArrayAdapter<String> playerAdapter = new ArrayAdapter<String>(
|
||||||
parentActivity, android.R.layout.simple_spinner_item,
|
getActivity(), android.R.layout.simple_spinner_item,
|
||||||
controllers);
|
controllers);
|
||||||
playerAdapter
|
playerAdapter
|
||||||
.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
|
.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
|
||||||
|
@ -392,7 +386,7 @@ public class InputModFragment extends Fragment {
|
||||||
System.gc();
|
System.gc();
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
InputStream bitmap = parentActivity.getAssets().open("buttons.png");
|
InputStream bitmap = getResources().getAssets().open("buttons.png");
|
||||||
BitmapFactory.Options options = new BitmapFactory.Options();
|
BitmapFactory.Options options = new BitmapFactory.Options();
|
||||||
options.inSampleSize = sS;
|
options.inSampleSize = sS;
|
||||||
Bitmap image = BitmapFactory.decodeStream(bitmap, null, options);
|
Bitmap image = BitmapFactory.decodeStream(bitmap, null, options);
|
||||||
|
@ -425,7 +419,7 @@ public class InputModFragment extends Fragment {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return parentActivity.getResources().getDrawable(R.drawable.input);
|
return getResources().getDrawable(R.drawable.input);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -433,19 +427,17 @@ public class InputModFragment extends Fragment {
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
private void selectController() {
|
private void selectController() {
|
||||||
AlertDialog.Builder builder = new AlertDialog.Builder(parentActivity);
|
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
|
||||||
builder.setTitle(getString(R.string.select_controller_title));
|
builder.setTitle(R.string.select_controller_title);
|
||||||
builder.setMessage(getString(R.string.select_controller_message,
|
builder.setMessage(getString(R.string.select_controller_message, player.replace("_", "")));
|
||||||
String.valueOf(player.replace("_", ""))));
|
builder.setNegativeButton(R.string.cancel,
|
||||||
builder.setNegativeButton("Cancel",
|
|
||||||
new DialogInterface.OnClickListener() {
|
new DialogInterface.OnClickListener() {
|
||||||
public void onClick(DialogInterface dialog, int which) {
|
public void onClick(DialogInterface dialog, int which) {
|
||||||
dialog.dismiss();
|
dialog.dismiss();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
builder.setOnKeyListener(new Dialog.OnKeyListener() {
|
builder.setOnKeyListener(new Dialog.OnKeyListener() {
|
||||||
public boolean onKey(DialogInterface dialog, int keyCode,
|
public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
|
||||||
KeyEvent event) {
|
|
||||||
mPrefs.edit()
|
mPrefs.edit()
|
||||||
.putInt("controller" + player, event.getDeviceId())
|
.putInt("controller" + player, event.getDeviceId())
|
||||||
.commit();
|
.commit();
|
||||||
|
@ -478,12 +470,10 @@ public class InputModFragment extends Fragment {
|
||||||
this.button = button;
|
this.button = button;
|
||||||
this.output = output;
|
this.output = output;
|
||||||
isMapping = true;
|
isMapping = true;
|
||||||
AlertDialog.Builder builder = new AlertDialog.Builder(
|
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
|
||||||
parentActivity);
|
builder.setTitle(R.string.map_keycode_title);
|
||||||
builder.setTitle(getString(R.string.map_keycode_title));
|
builder.setMessage(getString(R.string.map_keycode_message, button.replace("_", " ")));
|
||||||
builder.setMessage(getString(R.string.map_keycode_message,
|
builder.setNegativeButton(R.string.cancel,
|
||||||
button.replace("_", " ")));
|
|
||||||
builder.setNegativeButton("Cancel",
|
|
||||||
new DialogInterface.OnClickListener() {
|
new DialogInterface.OnClickListener() {
|
||||||
public void onClick(DialogInterface dialog, int which) {
|
public void onClick(DialogInterface dialog, int which) {
|
||||||
isMapping = false;
|
isMapping = false;
|
||||||
|
@ -491,8 +481,7 @@ public class InputModFragment extends Fragment {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
builder.setOnKeyListener(new Dialog.OnKeyListener() {
|
builder.setOnKeyListener(new Dialog.OnKeyListener() {
|
||||||
public boolean onKey(DialogInterface dialog, int keyCode,
|
public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
|
||||||
KeyEvent event) {
|
|
||||||
mapButton(keyCode, event);
|
mapButton(keyCode, event);
|
||||||
isMapping = false;
|
isMapping = false;
|
||||||
dialog.dismiss();
|
dialog.dismiss();
|
||||||
|
@ -512,7 +501,7 @@ public class InputModFragment extends Fragment {
|
||||||
* The keyevent generated by the button being assigned
|
* The keyevent generated by the button being assigned
|
||||||
*/
|
*/
|
||||||
private int mapButton(int keyCode, KeyEvent event) {
|
private int mapButton(int keyCode, KeyEvent event) {
|
||||||
if (android.os.Build.MODEL.startsWith("R800")) {
|
if (Build.MODEL.startsWith("R800")) {
|
||||||
if (keyCode == KeyEvent.KEYCODE_MENU)
|
if (keyCode == KeyEvent.KEYCODE_MENU)
|
||||||
return -1;
|
return -1;
|
||||||
} else {
|
} else {
|
||||||
|
@ -557,8 +546,8 @@ public class InputModFragment extends Fragment {
|
||||||
if (label.contains(":")) {
|
if (label.contains(":")) {
|
||||||
label = label.substring(0, label.indexOf(":"));
|
label = label.substring(0, label.indexOf(":"));
|
||||||
}
|
}
|
||||||
output.setText(label + ": "
|
|
||||||
+ String.valueOf(ev.getAction()));
|
output.setText(label + ": " + ev.getAction());
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -594,7 +583,7 @@ public class InputModFragment extends Fragment {
|
||||||
if (label.contains(":")) {
|
if (label.contains(":")) {
|
||||||
label = label.substring(0, label.indexOf(":"));
|
label = label.substring(0, label.indexOf(":"));
|
||||||
}
|
}
|
||||||
output.setText(label + ": " + String.valueOf(keyCode));
|
output.setText(label + ": " + keyCode);
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
String label = output.getText().toString();
|
String label = output.getText().toString();
|
||||||
|
|
|
@ -21,11 +21,9 @@ import com.reicast.emulator.R;
|
||||||
|
|
||||||
public class OptionsFragment extends Fragment {
|
public class OptionsFragment extends Fragment {
|
||||||
|
|
||||||
Activity parentActivity;
|
private Button mainBrowse;
|
||||||
Button mainBrowse;
|
private Button gameBrowse;
|
||||||
Button gameBrowse;
|
private OnClickListener mCallback;
|
||||||
Button mainLocale;
|
|
||||||
OnClickListener mCallback;
|
|
||||||
|
|
||||||
private SharedPreferences mPrefs;
|
private SharedPreferences mPrefs;
|
||||||
private File sdcard = Environment.getExternalStorageDirectory();
|
private File sdcard = Environment.getExternalStorageDirectory();
|
||||||
|
@ -62,9 +60,7 @@ public class OptionsFragment extends Fragment {
|
||||||
public void onViewCreated(View view, Bundle savedInstanceState) {
|
public void onViewCreated(View view, Bundle savedInstanceState) {
|
||||||
// setContentView(R.layout.activity_main);
|
// setContentView(R.layout.activity_main);
|
||||||
|
|
||||||
parentActivity = getActivity();
|
mPrefs = PreferenceManager.getDefaultSharedPreferences(getActivity());
|
||||||
|
|
||||||
mPrefs = PreferenceManager.getDefaultSharedPreferences(parentActivity);
|
|
||||||
home_directory = mPrefs.getString("home_directory", home_directory);
|
home_directory = mPrefs.getString("home_directory", home_directory);
|
||||||
|
|
||||||
mainBrowse = (Button) getView().findViewById(R.id.browse_main_path);
|
mainBrowse = (Button) getView().findViewById(R.id.browse_main_path);
|
||||||
|
@ -89,7 +85,7 @@ public class OptionsFragment extends Fragment {
|
||||||
home_directory = editBrowse.getText().toString();
|
home_directory = editBrowse.getText().toString();
|
||||||
if (home_directory.endsWith("/data")) {
|
if (home_directory.endsWith("/data")) {
|
||||||
home_directory.replace("/data", "");
|
home_directory.replace("/data", "");
|
||||||
Toast.makeText(parentActivity, R.string.data_folder,
|
Toast.makeText(getActivity(), R.string.data_folder,
|
||||||
Toast.LENGTH_SHORT).show();
|
Toast.LENGTH_SHORT).show();
|
||||||
}
|
}
|
||||||
mPrefs.edit().putString("home_directory", home_directory)
|
mPrefs.edit().putString("home_directory", home_directory)
|
||||||
|
@ -97,12 +93,10 @@ public class OptionsFragment extends Fragment {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void beforeTextChanged(CharSequence s, int start, int count,
|
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
|
||||||
int after) {
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onTextChanged(CharSequence s, int start, int before,
|
public void onTextChanged(CharSequence s, int start, int before, int count) {
|
||||||
int count) {
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -132,14 +126,11 @@ public class OptionsFragment extends Fragment {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void beforeTextChanged(CharSequence s, int start, int count,
|
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
|
||||||
int after) {
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onTextChanged(CharSequence s, int start, int before,
|
public void onTextChanged(CharSequence s, int start, int before, int count) {
|
||||||
int count) {
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,249 +0,0 @@
|
||||||
/* ====================================================================
|
|
||||||
* Copyright (c) 2012-2013 Lounge Katt Entertainment. All rights reserved.
|
|
||||||
*
|
|
||||||
* Redistribution and use in source and binary forms, with or without
|
|
||||||
* modification, are permitted provided that the following conditions
|
|
||||||
* are met:
|
|
||||||
*
|
|
||||||
* 1. Redistributions of source code must retain the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer.
|
|
||||||
*
|
|
||||||
* 2. Redistributions in binary form must reproduce the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer in
|
|
||||||
* the documentation and/or other materials provided with the
|
|
||||||
* distribution.
|
|
||||||
*
|
|
||||||
* 3. All advertising materials mentioning features or use of this
|
|
||||||
* software must display the following acknowledgment:
|
|
||||||
* "This product includes software developed by Lounge Katt" unless
|
|
||||||
* otherwise displayed by public repository entries.
|
|
||||||
*
|
|
||||||
* 4. The names "Lounge Katt", "TwistedUmbrella", and "LiveLog"
|
|
||||||
* must not be used to endorse or promote products derived from this
|
|
||||||
* software without prior written permission. For written permission,
|
|
||||||
* please contact admin@loungekatt.com.
|
|
||||||
*
|
|
||||||
* 5. Products derived from this software may not be called "LiveLog"
|
|
||||||
* nor may "LiveLog" appear in their names without prior written
|
|
||||||
* permission of Lounge Katt Entertainment.
|
|
||||||
*
|
|
||||||
* 6. Redistributions of any form whatsoever must retain the following
|
|
||||||
* acknowledgment:
|
|
||||||
* "This product includes software developed by Lounge Katt" unless
|
|
||||||
* otherwise displayed by tagged repository entries.
|
|
||||||
*
|
|
||||||
* THIS SOFTWARE IS PROVIDED BY Lounge Katt ``AS IS'' AND ANY
|
|
||||||
* EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
||||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
|
||||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
|
|
||||||
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
||||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
|
||||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
||||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
|
||||||
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
||||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
|
|
||||||
* OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
* ====================================================================
|
|
||||||
*
|
|
||||||
* The license and distribution terms for any publicly available version or
|
|
||||||
* derivative of this code cannot be changed. i.e. this code cannot simply be
|
|
||||||
* copied and put under another distribution license
|
|
||||||
* [including the GNU Public License.] Content not subject to these terms is
|
|
||||||
* subject to to the terms and conditions of the Apache License, Version 2.0.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package com.reicast.emulator.debug;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.HashMap;
|
|
||||||
|
|
||||||
import android.annotation.SuppressLint;
|
|
||||||
import android.annotation.TargetApi;
|
|
||||||
import android.app.Activity;
|
|
||||||
import android.app.AlertDialog;
|
|
||||||
import android.content.Context;
|
|
||||||
import android.content.DialogInterface;
|
|
||||||
import android.content.Intent;
|
|
||||||
import android.graphics.PorterDuff;
|
|
||||||
import android.os.Build;
|
|
||||||
import android.view.LayoutInflater;
|
|
||||||
import android.view.View;
|
|
||||||
import android.view.View.OnClickListener;
|
|
||||||
import android.view.ViewGroup;
|
|
||||||
import android.webkit.CookieManager;
|
|
||||||
import android.webkit.CookieSyncManager;
|
|
||||||
import android.webkit.WebSettings;
|
|
||||||
import android.webkit.WebSettings.PluginState;
|
|
||||||
import android.webkit.WebView;
|
|
||||||
import android.webkit.WebViewClient;
|
|
||||||
import android.widget.BaseAdapter;
|
|
||||||
import android.widget.ImageView;
|
|
||||||
import android.widget.RelativeLayout;
|
|
||||||
import android.widget.TextView;
|
|
||||||
|
|
||||||
import com.nostra13.universalimageloader.core.DisplayImageOptions;
|
|
||||||
import com.nostra13.universalimageloader.core.ImageLoader;
|
|
||||||
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
|
|
||||||
import com.nostra13.universalimageloader.core.assist.ImageScaleType;
|
|
||||||
import com.reicast.emulator.MainActivity;
|
|
||||||
import com.reicast.emulator.R;
|
|
||||||
|
|
||||||
public class GitAdapter extends BaseAdapter {
|
|
||||||
|
|
||||||
private static Activity activity;
|
|
||||||
private ArrayList<HashMap<String, String>> data;
|
|
||||||
private LayoutInflater inflater = null;
|
|
||||||
private DisplayImageOptions options;
|
|
||||||
|
|
||||||
public GitAdapter(Activity a, ArrayList<HashMap<String, String>> d) {
|
|
||||||
this.activity = a;
|
|
||||||
this.data = d;
|
|
||||||
this.inflater = (LayoutInflater) activity
|
|
||||||
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
|
|
||||||
ImageLoaderConfiguration configicon = new ImageLoaderConfiguration.Builder(
|
|
||||||
activity).memoryCacheExtraOptions(96, 96).build();
|
|
||||||
this.options = new DisplayImageOptions.Builder()
|
|
||||||
.showStubImage(R.drawable.ic_github)
|
|
||||||
.showImageForEmptyUri(R.drawable.ic_github)
|
|
||||||
.imageScaleType(ImageScaleType.EXACTLY_STRETCHED).build();
|
|
||||||
|
|
||||||
ImageLoader.getInstance().init(configicon);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getCount() {
|
|
||||||
return this.data.size();
|
|
||||||
}
|
|
||||||
|
|
||||||
public Object getItem(int position) {
|
|
||||||
return position;
|
|
||||||
}
|
|
||||||
|
|
||||||
public long getItemId(int position) {
|
|
||||||
return position;
|
|
||||||
}
|
|
||||||
|
|
||||||
public View getView(final int position, View convertView, ViewGroup parent) {
|
|
||||||
View vi = convertView;
|
|
||||||
if (convertView == null)
|
|
||||||
vi = this.inflater.inflate(R.layout.change_item, null);
|
|
||||||
TextView dateText = (TextView) vi.findViewById(R.id.date);
|
|
||||||
TextView committerText = (TextView) vi.findViewById(R.id.committer);
|
|
||||||
TextView titleText = (TextView) vi.findViewById(R.id.title);
|
|
||||||
ImageView avatarIcon = (ImageView) vi.findViewById(R.id.avatar);
|
|
||||||
|
|
||||||
final HashMap<String, String> commit = this.data.get(position);
|
|
||||||
final String date = commit.get("Date");
|
|
||||||
final String committer = commit.get("Committer");
|
|
||||||
final String title = commit.get("Title");
|
|
||||||
final String message = commit.get("Message");
|
|
||||||
final String sha = commit.get("Sha");
|
|
||||||
final String url = commit.get("Url");
|
|
||||||
final String author = commit.get("Author");
|
|
||||||
final String avatar = commit.get("Avatar");
|
|
||||||
final String current = commit.get("Build");
|
|
||||||
|
|
||||||
RelativeLayout item = (RelativeLayout) vi.findViewById(R.id.change);
|
|
||||||
if (current != null && !current.equals("") && current.equals(sha)) {
|
|
||||||
item.getBackground().setColorFilter(0xFF00FF00,
|
|
||||||
PorterDuff.Mode.MULTIPLY);
|
|
||||||
} else {
|
|
||||||
item.getBackground().setColorFilter(null);
|
|
||||||
}
|
|
||||||
|
|
||||||
dateText.setText(date);
|
|
||||||
committerText.setText(committer);
|
|
||||||
titleText.setText(title);
|
|
||||||
ImageLoader.getInstance()
|
|
||||||
.displayImage(avatar, avatarIcon, this.options);
|
|
||||||
|
|
||||||
vi.setOnClickListener(new OnClickListener() {
|
|
||||||
public void onClick(View v) {
|
|
||||||
System.gc();
|
|
||||||
String output = message + "\n\n" + " - " + author;
|
|
||||||
displayCommit(sha, output, url, v.getContext());
|
|
||||||
}
|
|
||||||
});
|
|
||||||
// Handle clicking individual item from list
|
|
||||||
|
|
||||||
return vi;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void callGithubVerification(String sha) {
|
|
||||||
String hash = sha.substring(0, 7);
|
|
||||||
Intent github = new Intent("com.reicast.emulator.debug.GitHash");
|
|
||||||
github.setAction("reicast.emulator.GITHUB");
|
|
||||||
github.putExtra("hashtag", hash);
|
|
||||||
activity.startActivity(github);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void displayCommit(final String title, String message, String url,
|
|
||||||
Context context) {
|
|
||||||
final AlertDialog.Builder builder = new AlertDialog.Builder(context);
|
|
||||||
builder.setCancelable(true);
|
|
||||||
builder.setTitle(title);
|
|
||||||
builder.setMessage(message);
|
|
||||||
LayoutInflater infalter = LayoutInflater.from(context);
|
|
||||||
final View popWebView = infalter.inflate(R.layout.webview, null);
|
|
||||||
WebView mWebView = (WebView) popWebView.findViewById(R.id.webframe);
|
|
||||||
mWebView = configureWebview(url, context, mWebView);
|
|
||||||
builder.setView(popWebView);
|
|
||||||
builder.setPositiveButton("Close",
|
|
||||||
new DialogInterface.OnClickListener() {
|
|
||||||
public void onClick(DialogInterface dialog, int which) {
|
|
||||||
dialog.dismiss();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
if (MainActivity.debugUser) {
|
|
||||||
builder.setNegativeButton("Download",
|
|
||||||
new DialogInterface.OnClickListener() {
|
|
||||||
public void onClick(DialogInterface dialog, int which) {
|
|
||||||
callGithubVerification(title);
|
|
||||||
dialog.dismiss();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
builder.create().show();
|
|
||||||
}
|
|
||||||
|
|
||||||
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
|
|
||||||
@SuppressLint("SetJavaScriptEnabled")
|
|
||||||
@SuppressWarnings("deprecation")
|
|
||||||
public static WebView configureWebview(String url, Context context,
|
|
||||||
WebView mWebView) {
|
|
||||||
mWebView.getSettings().setSupportZoom(true);
|
|
||||||
mWebView.getSettings().setBuiltInZoomControls(true);
|
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
|
|
||||||
mWebView.getSettings().setDisplayZoomControls(false);
|
|
||||||
}
|
|
||||||
mWebView.setInitialScale(1);
|
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ECLAIR) {
|
|
||||||
mWebView.getSettings().setUseWideViewPort(true);
|
|
||||||
}
|
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ECLAIR_MR1) {
|
|
||||||
mWebView.getSettings().setLoadWithOverviewMode(true);
|
|
||||||
}
|
|
||||||
mWebView.getSettings().setJavaScriptEnabled(true);
|
|
||||||
mWebView.getSettings().setPluginState(PluginState.ON);
|
|
||||||
mWebView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
|
|
||||||
mWebView.clearHistory();
|
|
||||||
mWebView.clearFormData();
|
|
||||||
mWebView.clearCache(true);
|
|
||||||
CookieSyncManager.createInstance(context);
|
|
||||||
CookieManager cookieManager = CookieManager.getInstance();
|
|
||||||
cookieManager.removeAllCookie();
|
|
||||||
CookieSyncManager.getInstance().stopSync();
|
|
||||||
mWebView.setWebViewClient(new WebViewClient() {
|
|
||||||
@Override
|
|
||||||
public boolean shouldOverrideUrlLoading(WebView view, String url) {
|
|
||||||
view.loadUrl(url);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
mWebView.loadUrl(url);
|
|
||||||
return mWebView;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -7,7 +7,6 @@ import javax.microedition.khronos.egl.EGLConfig;
|
||||||
import javax.microedition.khronos.opengles.GL10;
|
import javax.microedition.khronos.opengles.GL10;
|
||||||
|
|
||||||
import android.annotation.TargetApi;
|
import android.annotation.TargetApi;
|
||||||
import android.app.Activity;
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.SharedPreferences;
|
import android.content.SharedPreferences;
|
||||||
import android.content.res.Configuration;
|
import android.content.res.Configuration;
|
||||||
|
@ -60,6 +59,9 @@ public class GL2JNIView extends GLSurfaceView
|
||||||
{
|
{
|
||||||
public static final boolean DEBUG = false;
|
public static final boolean DEBUG = false;
|
||||||
|
|
||||||
|
public static final int LAYER_TYPE_SOFTWARE = 1;
|
||||||
|
public static final int LAYER_TYPE_HARDWARE = 2;
|
||||||
|
|
||||||
private static String fileName;
|
private static String fileName;
|
||||||
//private AudioThread audioThread;
|
//private AudioThread audioThread;
|
||||||
private EmuThread ethd;
|
private EmuThread ethd;
|
||||||
|
@ -148,7 +150,7 @@ public class GL2JNIView extends GLSurfaceView
|
||||||
|
|
||||||
touchVibrationEnabled = prefs.getBoolean(Config.pref_touchvibe, true);
|
touchVibrationEnabled = prefs.getBoolean(Config.pref_touchvibe, true);
|
||||||
|
|
||||||
int renderType = prefs.getInt(Config.pref_renderdepth, LAYER_TYPE_HARDWARE);
|
int renderType = prefs.getInt(Config.pref_rendertype, LAYER_TYPE_HARDWARE);
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
|
||||||
this.setLayerType(renderType, null);
|
this.setLayerType(renderType, null);
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -1,53 +1,53 @@
|
||||||
package com.reicast.emulator.emu;
|
package com.reicast.emulator.emu;
|
||||||
|
|
||||||
|
|
||||||
public class JNIdc
|
public final class JNIdc
|
||||||
{
|
{
|
||||||
static { System.loadLibrary("dc"); }
|
static { System.loadLibrary("dc"); }
|
||||||
|
|
||||||
public static native void config(String dirName);
|
public static native void config(String dirName);
|
||||||
public static native void init(String fileName);
|
public static native void init(String fileName);
|
||||||
public static native void run(Object track);
|
public static native void run(Object track);
|
||||||
public static native void stop();
|
public static native void stop();
|
||||||
|
|
||||||
public static native int send(int cmd, int opt);
|
public static native int send(int cmd, int opt);
|
||||||
public static native int data(int cmd, byte[] data);
|
public static native int data(int cmd, byte[] data);
|
||||||
|
|
||||||
public static native void rendinit(int w, int y);
|
public static native void rendinit(int w, int y);
|
||||||
public static native void rendframe();
|
public static native void rendframe();
|
||||||
|
|
||||||
public static native void kcode(int[] kcode, int[] lt, int[] rt, int[] jx, int[] jy);
|
public static native void kcode(int[] kcode, int[] lt, int[] rt, int[] jx, int[] jy);
|
||||||
|
|
||||||
public static native void vjoy(int id,float x, float y, float w, float h);
|
public static native void vjoy(int id,float x, float y, float w, float h);
|
||||||
//public static native int play(short result[],int size);
|
//public static native int play(short result[],int size);
|
||||||
|
|
||||||
public static native void initControllers(boolean[] controllers);
|
public static native void initControllers(boolean[] controllers);
|
||||||
|
|
||||||
public static native void setupMic(Object sip);
|
public static native void setupMic(Object sip);
|
||||||
public static native void vmuSwap();
|
public static native void vmuSwap();
|
||||||
public static native void setupVmu(Object sip);
|
public static native void setupVmu(Object sip);
|
||||||
public static native void dynarec(int dynarec);
|
public static native void dynarec(int dynarec);
|
||||||
public static native void idleskip(int idleskip);
|
public static native void idleskip(int idleskip);
|
||||||
public static native void unstable(int unstable);
|
public static native void unstable(int unstable);
|
||||||
public static native void cable(int cable);
|
public static native void cable(int cable);
|
||||||
public static native void region(int region);
|
public static native void region(int region);
|
||||||
public static native void broadcast(int broadcast);
|
public static native void broadcast(int broadcast);
|
||||||
public static native void limitfps(int limiter);
|
public static native void limitfps(int limiter);
|
||||||
public static native void nobatch(int nobatch);
|
public static native void nobatch(int nobatch);
|
||||||
public static native void nosound(int noaudio);
|
public static native void nosound(int noaudio);
|
||||||
public static native void mipmaps(int mipmaps);
|
public static native void mipmaps(int mipmaps);
|
||||||
public static native void widescreen(int stretch);
|
public static native void widescreen(int stretch);
|
||||||
public static native void subdivide(int subdivide);
|
public static native void subdivide(int subdivide);
|
||||||
public static native void frameskip(int frames);
|
public static native void frameskip(int frames);
|
||||||
public static native void pvrrender(int render);
|
public static native void pvrrender(int render);
|
||||||
public static native void cheatdisk(String disk);
|
public static native void cheatdisk(String disk);
|
||||||
public static native void dreamtime(long clock);
|
public static native void dreamtime(long clock);
|
||||||
|
|
||||||
public static void show_osd() {
|
public static void show_osd() {
|
||||||
JNIdc.vjoy(13, 1,0,0,0);
|
JNIdc.vjoy(13, 1,0,0,0);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void hide_osd() {
|
public static void hide_osd() {
|
||||||
JNIdc.vjoy(13, 0,0,0,0);
|
JNIdc.vjoy(13, 0,0,0,0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -73,100 +73,100 @@ public class Gamepad {
|
||||||
|
|
||||||
public static final int Xperia_Touchpad = 1048584;
|
public static final int Xperia_Touchpad = 1048584;
|
||||||
|
|
||||||
public static final int key_CONT_B = 0x0002;
|
public static final int key_CONT_B = 0x0002;
|
||||||
public static final int key_CONT_A = 0x0004;
|
public static final int key_CONT_A = 0x0004;
|
||||||
public static final int key_CONT_START = 0x0008;
|
public static final int key_CONT_START = 0x0008;
|
||||||
public static final int key_CONT_DPAD_UP = 0x0010;
|
public static final int key_CONT_DPAD_UP = 0x0010;
|
||||||
public static final int key_CONT_DPAD_DOWN = 0x0020;
|
public static final int key_CONT_DPAD_DOWN = 0x0020;
|
||||||
public static final int key_CONT_DPAD_LEFT = 0x0040;
|
public static final int key_CONT_DPAD_LEFT = 0x0040;
|
||||||
public static final int key_CONT_DPAD_RIGHT = 0x0080;
|
public static final int key_CONT_DPAD_RIGHT = 0x0080;
|
||||||
public static final int key_CONT_Y = 0x0200;
|
public static final int key_CONT_Y = 0x0200;
|
||||||
public static final int key_CONT_X = 0x0400;
|
public static final int key_CONT_X = 0x0400;
|
||||||
|
|
||||||
public int[] getConsoleController() {
|
public int[] getConsoleController() {
|
||||||
return new int[] {
|
return new int[] {
|
||||||
OuyaController.BUTTON_O, key_CONT_A,
|
OuyaController.BUTTON_O, key_CONT_A,
|
||||||
OuyaController.BUTTON_A, key_CONT_B,
|
OuyaController.BUTTON_A, key_CONT_B,
|
||||||
OuyaController.BUTTON_U, key_CONT_X,
|
OuyaController.BUTTON_U, key_CONT_X,
|
||||||
OuyaController.BUTTON_Y, key_CONT_Y,
|
OuyaController.BUTTON_Y, key_CONT_Y,
|
||||||
|
|
||||||
OuyaController.BUTTON_DPAD_UP, key_CONT_DPAD_UP,
|
OuyaController.BUTTON_DPAD_UP, key_CONT_DPAD_UP,
|
||||||
OuyaController.BUTTON_DPAD_DOWN, key_CONT_DPAD_DOWN,
|
OuyaController.BUTTON_DPAD_DOWN, key_CONT_DPAD_DOWN,
|
||||||
OuyaController.BUTTON_DPAD_LEFT, key_CONT_DPAD_LEFT,
|
OuyaController.BUTTON_DPAD_LEFT, key_CONT_DPAD_LEFT,
|
||||||
OuyaController.BUTTON_DPAD_RIGHT, key_CONT_DPAD_RIGHT,
|
OuyaController.BUTTON_DPAD_RIGHT, key_CONT_DPAD_RIGHT,
|
||||||
|
|
||||||
getStartButtonCode(), key_CONT_START,
|
getStartButtonCode(), key_CONT_START,
|
||||||
getSelectButtonCode(), getSelectButtonCode()
|
getSelectButtonCode(), getSelectButtonCode()
|
||||||
// Redundant, but verifies it is mapped properly
|
// Redundant, but verifies it is mapped properly
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
public int[] getXPlayController() {
|
public int[] getXPlayController() {
|
||||||
return new int[] {
|
return new int[] {
|
||||||
KeyEvent.KEYCODE_DPAD_CENTER, key_CONT_A,
|
KeyEvent.KEYCODE_DPAD_CENTER, key_CONT_A,
|
||||||
KeyEvent.KEYCODE_BACK, key_CONT_B,
|
KeyEvent.KEYCODE_BACK, key_CONT_B,
|
||||||
OuyaController.BUTTON_U, key_CONT_X,
|
OuyaController.BUTTON_U, key_CONT_X,
|
||||||
OuyaController.BUTTON_Y, key_CONT_Y,
|
OuyaController.BUTTON_Y, key_CONT_Y,
|
||||||
|
|
||||||
OuyaController.BUTTON_DPAD_UP, key_CONT_DPAD_UP,
|
OuyaController.BUTTON_DPAD_UP, key_CONT_DPAD_UP,
|
||||||
OuyaController.BUTTON_DPAD_DOWN, key_CONT_DPAD_DOWN,
|
OuyaController.BUTTON_DPAD_DOWN, key_CONT_DPAD_DOWN,
|
||||||
OuyaController.BUTTON_DPAD_LEFT, key_CONT_DPAD_LEFT,
|
OuyaController.BUTTON_DPAD_LEFT, key_CONT_DPAD_LEFT,
|
||||||
OuyaController.BUTTON_DPAD_RIGHT, key_CONT_DPAD_RIGHT,
|
OuyaController.BUTTON_DPAD_RIGHT, key_CONT_DPAD_RIGHT,
|
||||||
|
|
||||||
getStartButtonCode(), key_CONT_START,
|
getStartButtonCode(), key_CONT_START,
|
||||||
getSelectButtonCode(), getSelectButtonCode()
|
getSelectButtonCode(), getSelectButtonCode()
|
||||||
// Redundant, but verifies it is mapped properly
|
// Redundant, but verifies it is mapped properly
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
public int[] getOUYAController() {
|
public int[] getOUYAController() {
|
||||||
return new int[] {
|
return new int[] {
|
||||||
OuyaController.BUTTON_O, key_CONT_A,
|
OuyaController.BUTTON_O, key_CONT_A,
|
||||||
OuyaController.BUTTON_A, key_CONT_B,
|
OuyaController.BUTTON_A, key_CONT_B,
|
||||||
OuyaController.BUTTON_U, key_CONT_X,
|
OuyaController.BUTTON_U, key_CONT_X,
|
||||||
OuyaController.BUTTON_Y, key_CONT_Y,
|
OuyaController.BUTTON_Y, key_CONT_Y,
|
||||||
|
|
||||||
OuyaController.BUTTON_DPAD_UP, key_CONT_DPAD_UP,
|
OuyaController.BUTTON_DPAD_UP, key_CONT_DPAD_UP,
|
||||||
OuyaController.BUTTON_DPAD_DOWN, key_CONT_DPAD_DOWN,
|
OuyaController.BUTTON_DPAD_DOWN, key_CONT_DPAD_DOWN,
|
||||||
OuyaController.BUTTON_DPAD_LEFT, key_CONT_DPAD_LEFT,
|
OuyaController.BUTTON_DPAD_LEFT, key_CONT_DPAD_LEFT,
|
||||||
OuyaController.BUTTON_DPAD_RIGHT, key_CONT_DPAD_RIGHT,
|
OuyaController.BUTTON_DPAD_RIGHT, key_CONT_DPAD_RIGHT,
|
||||||
|
|
||||||
getStartButtonCode(), key_CONT_START,
|
getStartButtonCode(), key_CONT_START,
|
||||||
OuyaController.BUTTON_R3, key_CONT_START
|
OuyaController.BUTTON_R3, key_CONT_START
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
public int[] getMogaController() {
|
public int[] getMogaController() {
|
||||||
return new int[] {
|
return new int[] {
|
||||||
KeyEvent.KEYCODE_BUTTON_A, key_CONT_A,
|
KeyEvent.KEYCODE_BUTTON_A, key_CONT_A,
|
||||||
KeyEvent.KEYCODE_BUTTON_B, key_CONT_B,
|
KeyEvent.KEYCODE_BUTTON_B, key_CONT_B,
|
||||||
KeyEvent.KEYCODE_BUTTON_X, key_CONT_X,
|
KeyEvent.KEYCODE_BUTTON_X, key_CONT_X,
|
||||||
KeyEvent.KEYCODE_BUTTON_Y, key_CONT_Y,
|
KeyEvent.KEYCODE_BUTTON_Y, key_CONT_Y,
|
||||||
|
|
||||||
KeyEvent.KEYCODE_DPAD_UP, key_CONT_DPAD_UP,
|
KeyEvent.KEYCODE_DPAD_UP, key_CONT_DPAD_UP,
|
||||||
KeyEvent.KEYCODE_DPAD_DOWN, key_CONT_DPAD_DOWN,
|
KeyEvent.KEYCODE_DPAD_DOWN, key_CONT_DPAD_DOWN,
|
||||||
KeyEvent.KEYCODE_DPAD_LEFT, key_CONT_DPAD_LEFT,
|
KeyEvent.KEYCODE_DPAD_LEFT, key_CONT_DPAD_LEFT,
|
||||||
KeyEvent.KEYCODE_DPAD_RIGHT, key_CONT_DPAD_RIGHT,
|
KeyEvent.KEYCODE_DPAD_RIGHT, key_CONT_DPAD_RIGHT,
|
||||||
|
|
||||||
getStartButtonCode(), key_CONT_START,
|
getStartButtonCode(), key_CONT_START,
|
||||||
getSelectButtonCode(), getSelectButtonCode()
|
getSelectButtonCode(), getSelectButtonCode()
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
public int[] setModifiedKeys(String id, int playerNum, SharedPreferences mPrefs) {
|
public int[] setModifiedKeys(String id, int playerNum, SharedPreferences mPrefs) {
|
||||||
return new int[] {
|
return new int[] {
|
||||||
mPrefs.getInt(pref_button_a + id, OuyaController.BUTTON_O), key_CONT_A,
|
mPrefs.getInt(pref_button_a + id, OuyaController.BUTTON_O), key_CONT_A,
|
||||||
mPrefs.getInt(pref_button_b + id, OuyaController.BUTTON_A), key_CONT_B,
|
mPrefs.getInt(pref_button_b + id, OuyaController.BUTTON_A), key_CONT_B,
|
||||||
mPrefs.getInt(pref_button_x + id, OuyaController.BUTTON_U), key_CONT_X,
|
mPrefs.getInt(pref_button_x + id, OuyaController.BUTTON_U), key_CONT_X,
|
||||||
mPrefs.getInt(pref_button_y + id, OuyaController.BUTTON_Y), key_CONT_Y,
|
mPrefs.getInt(pref_button_y + id, OuyaController.BUTTON_Y), key_CONT_Y,
|
||||||
|
|
||||||
mPrefs.getInt(pref_dpad_up + id, OuyaController.BUTTON_DPAD_UP), key_CONT_DPAD_UP,
|
mPrefs.getInt(pref_dpad_up + id, OuyaController.BUTTON_DPAD_UP), key_CONT_DPAD_UP,
|
||||||
mPrefs.getInt(pref_dpad_down + id, OuyaController.BUTTON_DPAD_DOWN), key_CONT_DPAD_DOWN,
|
mPrefs.getInt(pref_dpad_down + id, OuyaController.BUTTON_DPAD_DOWN), key_CONT_DPAD_DOWN,
|
||||||
mPrefs.getInt(pref_dpad_left + id, OuyaController.BUTTON_DPAD_LEFT), key_CONT_DPAD_LEFT,
|
mPrefs.getInt(pref_dpad_left + id, OuyaController.BUTTON_DPAD_LEFT), key_CONT_DPAD_LEFT,
|
||||||
mPrefs.getInt(pref_dpad_right + id, OuyaController.BUTTON_DPAD_RIGHT), key_CONT_DPAD_RIGHT,
|
mPrefs.getInt(pref_dpad_right + id, OuyaController.BUTTON_DPAD_RIGHT), key_CONT_DPAD_RIGHT,
|
||||||
|
|
||||||
mPrefs.getInt(pref_button_start + id, getStartButtonCode()), key_CONT_START,
|
mPrefs.getInt(pref_button_start + id, getStartButtonCode()), key_CONT_START,
|
||||||
mPrefs.getInt(pref_button_select + id, getSelectButtonCode()), getSelectButtonCode()
|
mPrefs.getInt(pref_button_select + id, getSelectButtonCode()), getSelectButtonCode()
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,6 @@ import android.os.Build;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.preference.PreferenceManager;
|
import android.preference.PreferenceManager;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.widget.Toast;
|
|
||||||
|
|
||||||
import com.bda.controller.Controller;
|
import com.bda.controller.Controller;
|
||||||
import com.bda.controller.ControllerListener;
|
import com.bda.controller.ControllerListener;
|
||||||
|
@ -19,14 +18,13 @@ import com.bda.controller.KeyEvent;
|
||||||
import com.bda.controller.MotionEvent;
|
import com.bda.controller.MotionEvent;
|
||||||
import com.bda.controller.StateEvent;
|
import com.bda.controller.StateEvent;
|
||||||
import com.reicast.emulator.R;
|
import com.reicast.emulator.R;
|
||||||
import com.reicast.emulator.emu.JNIdc;
|
|
||||||
|
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
||||||
*/
|
*/
|
||||||
public class MOGAInput
|
public final class MOGAInput
|
||||||
{
|
{
|
||||||
private SharedPreferences prefs;
|
private SharedPreferences prefs;
|
||||||
|
|
||||||
|
@ -41,7 +39,8 @@ public class MOGAInput
|
||||||
private String notify;
|
private String notify;
|
||||||
private Gamepad pad;
|
private Gamepad pad;
|
||||||
|
|
||||||
Activity act;
|
private Activity act;
|
||||||
|
|
||||||
public MOGAInput()
|
public MOGAInput()
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
|
@ -181,19 +180,19 @@ public class MOGAInput
|
||||||
}
|
}
|
||||||
|
|
||||||
if (event.getState() == StateEvent.STATE_CONNECTION && event.getAction() == ACTION_CONNECTED) {
|
if (event.getState() == StateEvent.STATE_CONNECTION && event.getAction() == ACTION_CONNECTED) {
|
||||||
int mControllerVersion = mController.getState(Controller.STATE_CURRENT_PRODUCT_VERSION);
|
int mControllerVersion = mController.getState(Controller.STATE_CURRENT_PRODUCT_VERSION);
|
||||||
if (mControllerVersion == Controller.ACTION_VERSION_MOGAPRO) {
|
if (mControllerVersion == Controller.ACTION_VERSION_MOGAPRO) {
|
||||||
pad.isMogaPro[playerNum] = true;
|
pad.isMogaPro[playerNum] = true;
|
||||||
pad.isActiveMoga[playerNum] = true;
|
pad.isActiveMoga[playerNum] = true;
|
||||||
Log.d("com.reicast.emulator", act.getApplicationContext().getString(R.string.moga_pro_connect));
|
Log.d("com.reicast.emulator", act.getString(R.string.moga_pro_connect));
|
||||||
} else if (mControllerVersion == Controller.ACTION_VERSION_MOGA) {
|
} else if (mControllerVersion == Controller.ACTION_VERSION_MOGA) {
|
||||||
pad.isMogaPro[playerNum] = false;
|
pad.isMogaPro[playerNum] = false;
|
||||||
pad.isActiveMoga[playerNum] = true;
|
pad.isActiveMoga[playerNum] = true;
|
||||||
Log.d("com.reicast.emulator", act.getApplicationContext().getString(R.string.moga_connect));
|
Log.d("com.reicast.emulator", act.getString(R.string.moga_connect));
|
||||||
}
|
}
|
||||||
if (pad.isActiveMoga[playerNum]) {
|
if (pad.isActiveMoga[playerNum]) {
|
||||||
notifyMogaConnected(notify, playerNum);
|
notifyMogaConnected(notify, playerNum);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -105,30 +105,30 @@ public class VJoy {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void resetCustomVjoyValues(Context context) {
|
public static void resetCustomVjoyValues(Context context) {
|
||||||
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
|
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
|
||||||
|
|
||||||
prefs.edit().remove("touch_x_shift_dpad").commit();
|
prefs.edit().remove("touch_x_shift_dpad").commit();
|
||||||
prefs.edit().remove("touch_y_shift_dpad").commit();
|
prefs.edit().remove("touch_y_shift_dpad").commit();
|
||||||
prefs.edit().remove("touch_scale_dpad").commit();
|
prefs.edit().remove("touch_scale_dpad").commit();
|
||||||
|
|
||||||
prefs.edit().remove("touch_x_shift_buttons").commit();
|
prefs.edit().remove("touch_x_shift_buttons").commit();
|
||||||
prefs.edit().remove("touch_y_shift_buttons").commit();
|
prefs.edit().remove("touch_y_shift_buttons").commit();
|
||||||
prefs.edit().remove("touch_scale_buttons").commit();
|
prefs.edit().remove("touch_scale_buttons").commit();
|
||||||
|
|
||||||
prefs.edit().remove("touch_x_shift_start").commit();
|
prefs.edit().remove("touch_x_shift_start").commit();
|
||||||
prefs.edit().remove("touch_y_shift_start").commit();
|
prefs.edit().remove("touch_y_shift_start").commit();
|
||||||
prefs.edit().remove("touch_scale_start").commit();
|
prefs.edit().remove("touch_scale_start").commit();
|
||||||
|
|
||||||
prefs.edit().remove("touch_x_shift_left_trigger").commit();
|
prefs.edit().remove("touch_x_shift_left_trigger").commit();
|
||||||
prefs.edit().remove("touch_y_shift_left_trigger").commit();
|
prefs.edit().remove("touch_y_shift_left_trigger").commit();
|
||||||
prefs.edit().remove("touch_scale_left_trigger").commit();
|
prefs.edit().remove("touch_scale_left_trigger").commit();
|
||||||
|
|
||||||
prefs.edit().remove("touch_x_shift_right_trigger").commit();
|
prefs.edit().remove("touch_x_shift_right_trigger").commit();
|
||||||
prefs.edit().remove("touch_y_shift_right_trigger").commit();
|
prefs.edit().remove("touch_y_shift_right_trigger").commit();
|
||||||
prefs.edit().remove("touch_scale_right_trigger").commit();
|
prefs.edit().remove("touch_scale_right_trigger").commit();
|
||||||
|
|
||||||
prefs.edit().remove("touch_x_shift_analog").commit();
|
prefs.edit().remove("touch_x_shift_analog").commit();
|
||||||
prefs.edit().remove("touch_y_shift_analog").commit();
|
prefs.edit().remove("touch_y_shift_analog").commit();
|
||||||
prefs.edit().remove("touch_scale_analog").commit();
|
prefs.edit().remove("touch_scale_analog").commit();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,9 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<classpath>
|
|
||||||
<classpathentry kind="src" path="src"/>
|
|
||||||
<classpathentry kind="src" path="gen"/>
|
|
||||||
<classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
|
|
||||||
<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
|
|
||||||
<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.DEPENDENCIES"/>
|
|
||||||
<classpathentry kind="output" path="bin/classes"/>
|
|
||||||
</classpath>
|
|
|
@ -1,33 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<projectDescription>
|
|
||||||
<name>ReicastDebug</name>
|
|
||||||
<comment></comment>
|
|
||||||
<projects>
|
|
||||||
</projects>
|
|
||||||
<buildSpec>
|
|
||||||
<buildCommand>
|
|
||||||
<name>com.android.ide.eclipse.adt.ResourceManagerBuilder</name>
|
|
||||||
<arguments>
|
|
||||||
</arguments>
|
|
||||||
</buildCommand>
|
|
||||||
<buildCommand>
|
|
||||||
<name>com.android.ide.eclipse.adt.PreCompilerBuilder</name>
|
|
||||||
<arguments>
|
|
||||||
</arguments>
|
|
||||||
</buildCommand>
|
|
||||||
<buildCommand>
|
|
||||||
<name>org.eclipse.jdt.core.javabuilder</name>
|
|
||||||
<arguments>
|
|
||||||
</arguments>
|
|
||||||
</buildCommand>
|
|
||||||
<buildCommand>
|
|
||||||
<name>com.android.ide.eclipse.adt.ApkBuilder</name>
|
|
||||||
<arguments>
|
|
||||||
</arguments>
|
|
||||||
</buildCommand>
|
|
||||||
</buildSpec>
|
|
||||||
<natures>
|
|
||||||
<nature>com.android.ide.eclipse.adt.AndroidNature</nature>
|
|
||||||
<nature>org.eclipse.jdt.core.javanature</nature>
|
|
||||||
</natures>
|
|
||||||
</projectDescription>
|
|
|
@ -1,4 +0,0 @@
|
||||||
eclipse.preferences.version=1
|
|
||||||
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
|
|
||||||
org.eclipse.jdt.core.compiler.compliance=1.6
|
|
||||||
org.eclipse.jdt.core.compiler.source=1.6
|
|
|
@ -1,57 +0,0 @@
|
||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
package="com.reicast.emulator.debug"
|
|
||||||
android:sharedUserId="android.uid.reicast"
|
|
||||||
android:versionCode="1"
|
|
||||||
android:versionName="1.0" >
|
|
||||||
|
|
||||||
<uses-sdk
|
|
||||||
android:minSdkVersion="8"
|
|
||||||
android:targetSdkVersion="18" />
|
|
||||||
|
|
||||||
<uses-permission android:name="android.permission.VIBRATE" />
|
|
||||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
|
|
||||||
<uses-permission android:name="android.permission.INTERNET" />
|
|
||||||
<uses-permission android:name="android.permission.READ_LOGS" />
|
|
||||||
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
|
|
||||||
<uses-permission android:name="android.permission.WAKE_LOCK" />
|
|
||||||
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
|
|
||||||
<permission
|
|
||||||
android:name="com.reicast.emulator.debug.permission.C2D_MESSAGE"
|
|
||||||
android:protectionLevel="signature" />
|
|
||||||
<uses-permission android:name="com.reicast.emulator.debug.permission.C2D_MESSAGE" />
|
|
||||||
|
|
||||||
<application
|
|
||||||
android:allowBackup="true"
|
|
||||||
android:icon="@drawable/ic_launcher"
|
|
||||||
android:label="@string/app_name">
|
|
||||||
<activity android:name=".Debug"
|
|
||||||
android:excludeFromRecents="true"
|
|
||||||
android:theme="@style/Theme.PanelTheme" >
|
|
||||||
<intent-filter>
|
|
||||||
<action android:name="reicast.emulator.DEBUG" />
|
|
||||||
<action android:name="reicast.emulator.NOTIFY" />
|
|
||||||
|
|
||||||
<category android:name="android.intent.category.DEFAULT" />
|
|
||||||
</intent-filter>
|
|
||||||
</activity>
|
|
||||||
<activity android:name=".GitHash"
|
|
||||||
android:excludeFromRecents="true"
|
|
||||||
android:theme="@style/Theme.PanelTheme" >
|
|
||||||
<intent-filter>
|
|
||||||
<action android:name="reicast.emulator.GITHUB" />
|
|
||||||
|
|
||||||
<category android:name="android.intent.category.DEFAULT" />
|
|
||||||
</intent-filter>
|
|
||||||
</activity>
|
|
||||||
<receiver
|
|
||||||
android:name=".GcmBroadcastReceiver"
|
|
||||||
android:permission="com.google.android.c2dm.permission.SEND" >
|
|
||||||
<intent-filter>
|
|
||||||
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
|
|
||||||
|
|
||||||
<category android:name="com.reicast.emulator.debug" />
|
|
||||||
</intent-filter>
|
|
||||||
</receiver>
|
|
||||||
</application>
|
|
||||||
|
|
||||||
</manifest>
|
|
|
@ -1,95 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project name="reicast-debug" default="help">
|
|
||||||
|
|
||||||
<!-- The local.properties file is created and updated by the 'android' tool.
|
|
||||||
It contains the path to the SDK. It should *NOT* be checked into
|
|
||||||
Version Control Systems. -->
|
|
||||||
<property file="local.properties" />
|
|
||||||
|
|
||||||
<!-- The ant.properties file can be created by you. It is only edited by the
|
|
||||||
'android' tool to add properties to it.
|
|
||||||
This is the place to change some Ant specific build properties.
|
|
||||||
Here are some properties you may want to change/update:
|
|
||||||
|
|
||||||
source.dir
|
|
||||||
The name of the source directory. Default is 'src'.
|
|
||||||
out.dir
|
|
||||||
The name of the output directory. Default is 'bin'.
|
|
||||||
|
|
||||||
For other overridable properties, look at the beginning of the rules
|
|
||||||
files in the SDK, at tools/ant/build.xml
|
|
||||||
|
|
||||||
Properties related to the SDK location or the project target should
|
|
||||||
be updated using the 'android' tool with the 'update' action.
|
|
||||||
|
|
||||||
This file is an integral part of the build system for your
|
|
||||||
application and should be checked into Version Control Systems.
|
|
||||||
|
|
||||||
-->
|
|
||||||
<property file="ant.properties" />
|
|
||||||
|
|
||||||
<!-- if sdk.dir was not set from one of the property file, then
|
|
||||||
get it from the ANDROID_HOME env var.
|
|
||||||
This must be done before we load project.properties since
|
|
||||||
the proguard config can use sdk.dir -->
|
|
||||||
<property environment="env" />
|
|
||||||
<condition property="sdk.dir" value="${env.ANDROID_HOME}">
|
|
||||||
<isset property="env.ANDROID_HOME" />
|
|
||||||
</condition>
|
|
||||||
<condition property="ndk.dir" value="${env.ANDROID_NDK}">
|
|
||||||
<isset property="env.ANDROID_NDK" />
|
|
||||||
</condition>
|
|
||||||
|
|
||||||
<!-- The project.properties file is created and updated by the 'android'
|
|
||||||
tool, as well as ADT.
|
|
||||||
|
|
||||||
This contains project specific properties such as project target, and library
|
|
||||||
dependencies. Lower level build properties are stored in ant.properties
|
|
||||||
(or in .classpath for Eclipse projects).
|
|
||||||
|
|
||||||
This file is an integral part of the build system for your
|
|
||||||
application and should be checked into Version Control Systems. -->
|
|
||||||
<loadproperties srcFile="project.properties" />
|
|
||||||
|
|
||||||
<!-- quick check on sdk.dir -->
|
|
||||||
<fail
|
|
||||||
message="sdk.dir is missing. Make sure to generate local.properties using 'android update project' or to inject it through the ANDROID_HOME environment variable."
|
|
||||||
unless="sdk.dir"
|
|
||||||
/>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
Import per project custom build rules if present at the root of the project.
|
|
||||||
This is the place to put custom intermediary targets such as:
|
|
||||||
-pre-build
|
|
||||||
-pre-compile
|
|
||||||
-post-compile (This is typically used for code obfuscation.
|
|
||||||
Compiled code location: ${out.classes.absolute.dir}
|
|
||||||
If this is not done in place, override ${out.dex.input.absolute.dir})
|
|
||||||
-post-package
|
|
||||||
-post-build
|
|
||||||
-pre-clean
|
|
||||||
-->
|
|
||||||
<import file="custom_rules.xml" optional="true" />
|
|
||||||
|
|
||||||
<!-- Import the actual build file.
|
|
||||||
|
|
||||||
To customize existing targets, there are two options:
|
|
||||||
- Customize only one target:
|
|
||||||
- copy/paste the target into this file, *before* the
|
|
||||||
<import> task.
|
|
||||||
- customize it to your needs.
|
|
||||||
- Customize the whole content of build.xml
|
|
||||||
- copy/paste the content of the rules files (minus the top node)
|
|
||||||
into this file, replacing the <import> task.
|
|
||||||
- customize to your needs.
|
|
||||||
|
|
||||||
***********************
|
|
||||||
****** IMPORTANT ******
|
|
||||||
***********************
|
|
||||||
In all cases you must update the value of version-tag below to read 'custom' instead of an integer,
|
|
||||||
in order to avoid having your file be overridden by tools such as "android update project"
|
|
||||||
-->
|
|
||||||
<!-- version-tag: 1 -->
|
|
||||||
<import file="${sdk.dir}/tools/ant/build.xml" />
|
|
||||||
|
|
||||||
</project>
|
|
|
@ -1,9 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<classpath>
|
|
||||||
<classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
|
|
||||||
<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
|
|
||||||
<classpathentry kind="src" path="src"/>
|
|
||||||
<classpathentry kind="src" path="gen"/>
|
|
||||||
<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.DEPENDENCIES"/>
|
|
||||||
<classpathentry kind="output" path="bin/classes"/>
|
|
||||||
</classpath>
|
|
|
@ -1,33 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<projectDescription>
|
|
||||||
<name>google-services</name>
|
|
||||||
<comment></comment>
|
|
||||||
<projects>
|
|
||||||
</projects>
|
|
||||||
<buildSpec>
|
|
||||||
<buildCommand>
|
|
||||||
<name>com.android.ide.eclipse.adt.ResourceManagerBuilder</name>
|
|
||||||
<arguments>
|
|
||||||
</arguments>
|
|
||||||
</buildCommand>
|
|
||||||
<buildCommand>
|
|
||||||
<name>com.android.ide.eclipse.adt.PreCompilerBuilder</name>
|
|
||||||
<arguments>
|
|
||||||
</arguments>
|
|
||||||
</buildCommand>
|
|
||||||
<buildCommand>
|
|
||||||
<name>org.eclipse.jdt.core.javabuilder</name>
|
|
||||||
<arguments>
|
|
||||||
</arguments>
|
|
||||||
</buildCommand>
|
|
||||||
<buildCommand>
|
|
||||||
<name>com.android.ide.eclipse.adt.ApkBuilder</name>
|
|
||||||
<arguments>
|
|
||||||
</arguments>
|
|
||||||
</buildCommand>
|
|
||||||
</buildSpec>
|
|
||||||
<natures>
|
|
||||||
<nature>com.android.ide.eclipse.adt.AndroidNature</nature>
|
|
||||||
<nature>org.eclipse.jdt.core.javanature</nature>
|
|
||||||
</natures>
|
|
||||||
</projectDescription>
|
|
|
@ -1,4 +0,0 @@
|
||||||
eclipse.preferences.version=1
|
|
||||||
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
|
|
||||||
org.eclipse.jdt.core.compiler.compliance=1.6
|
|
||||||
org.eclipse.jdt.core.compiler.source=1.6
|
|
|
@ -1,9 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
package="com.google.android.gms"
|
|
||||||
android:versionCode="3136110"
|
|
||||||
android:versionName="3.1.36 (673201-10)" >
|
|
||||||
|
|
||||||
<uses-sdk android:minSdkVersion="8"/>
|
|
||||||
|
|
||||||
</manifest>
|
|
|
@ -1,14 +0,0 @@
|
||||||
Library Project including Google Play services client jar.
|
|
||||||
|
|
||||||
This can be used by an Android project to use the API's provided
|
|
||||||
by Google Play services.
|
|
||||||
|
|
||||||
There is technically no source, but the src folder is necessary
|
|
||||||
to ensure that the build system works. The content is actually
|
|
||||||
located in the libs/ directory.
|
|
||||||
|
|
||||||
|
|
||||||
USAGE:
|
|
||||||
|
|
||||||
Make sure you import this Android library project into your IDE
|
|
||||||
and set this project as a dependency.
|
|
|
@ -1,83 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project name="google-services" default="help">
|
|
||||||
|
|
||||||
<!-- The local.properties file is created and updated by the 'android' tool.
|
|
||||||
It contains the path to the SDK. It should *NOT* be checked into
|
|
||||||
Version Control Systems. -->
|
|
||||||
<property file="local.properties" />
|
|
||||||
|
|
||||||
<!-- The ant.properties file can be created by you. It is only edited by the
|
|
||||||
'android' tool to add properties to it.
|
|
||||||
This is the place to change some Ant specific build properties.
|
|
||||||
Here are some properties you may want to change/update:
|
|
||||||
|
|
||||||
source.dir
|
|
||||||
The name of the source directory. Default is 'src'.
|
|
||||||
out.dir
|
|
||||||
The name of the output directory. Default is 'bin'.
|
|
||||||
|
|
||||||
For other overridable properties, look at the beginning of the rules
|
|
||||||
files in the SDK, at tools/ant/build.xml
|
|
||||||
|
|
||||||
Properties related to the SDK location or the project target should
|
|
||||||
be updated using the 'android' tool with the 'update' action.
|
|
||||||
|
|
||||||
This file is an integral part of the build system for your
|
|
||||||
application and should be checked into Version Control Systems.
|
|
||||||
|
|
||||||
-->
|
|
||||||
<property file="ant.properties" />
|
|
||||||
|
|
||||||
<!-- The project.properties file is created and updated by the 'android'
|
|
||||||
tool, as well as ADT.
|
|
||||||
|
|
||||||
This contains project specific properties such as project target, and library
|
|
||||||
dependencies. Lower level build properties are stored in ant.properties
|
|
||||||
(or in .classpath for Eclipse projects).
|
|
||||||
|
|
||||||
This file is an integral part of the build system for your
|
|
||||||
application and should be checked into Version Control Systems. -->
|
|
||||||
<loadproperties srcFile="project.properties" />
|
|
||||||
|
|
||||||
<!-- quick check on sdk.dir -->
|
|
||||||
<fail
|
|
||||||
message="sdk.dir is missing. Make sure to generate local.properties using 'android update project' or to inject it through an env var"
|
|
||||||
unless="sdk.dir"
|
|
||||||
/>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
Import per project custom build rules if present at the root of the project.
|
|
||||||
This is the place to put custom intermediary targets such as:
|
|
||||||
-pre-build
|
|
||||||
-pre-compile
|
|
||||||
-post-compile (This is typically used for code obfuscation.
|
|
||||||
Compiled code location: ${out.classes.absolute.dir}
|
|
||||||
If this is not done in place, override ${out.dex.input.absolute.dir})
|
|
||||||
-post-package
|
|
||||||
-post-build
|
|
||||||
-pre-clean
|
|
||||||
-->
|
|
||||||
<import file="custom_rules.xml" optional="true" />
|
|
||||||
|
|
||||||
<!-- Import the actual build file.
|
|
||||||
|
|
||||||
To customize existing targets, there are two options:
|
|
||||||
- Customize only one target:
|
|
||||||
- copy/paste the target into this file, *before* the
|
|
||||||
<import> task.
|
|
||||||
- customize it to your needs.
|
|
||||||
- Customize the whole content of build.xml
|
|
||||||
- copy/paste the content of the rules files (minus the top node)
|
|
||||||
into this file, replacing the <import> task.
|
|
||||||
- customize to your needs.
|
|
||||||
|
|
||||||
***********************
|
|
||||||
****** IMPORTANT ******
|
|
||||||
***********************
|
|
||||||
In all cases you must update the value of version-tag below to read 'custom' instead of an integer,
|
|
||||||
in order to avoid having your file be overridden by tools such as "android update project"
|
|
||||||
-->
|
|
||||||
<!-- version-tag: 1 -->
|
|
||||||
<import file="${sdk.dir}/tools/ant/build.xml" />
|
|
||||||
|
|
||||||
</project>
|
|
|
@ -1 +0,0 @@
|
||||||
doc=../../../docs/reference
|
|
|
@ -1,15 +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-9
|
|
||||||
android.library=true
|
|
|
@ -1,18 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
|
||||||
<item
|
|
||||||
android:state_pressed="true"
|
|
||||||
android:color="@color/common_signin_btn_dark_text_pressed" />
|
|
||||||
<item
|
|
||||||
android:state_enabled="false"
|
|
||||||
android:state_focused="true"
|
|
||||||
android:color="@color/common_signin_btn_dark_text_disabled" />
|
|
||||||
<item
|
|
||||||
android:state_focused="true"
|
|
||||||
android:color="@color/common_signin_btn_dark_text_focused" />
|
|
||||||
<item
|
|
||||||
android:state_enabled="false"
|
|
||||||
android:color="@color/common_signin_btn_dark_text_disabled" />
|
|
||||||
<item
|
|
||||||
android:color="@color/common_signin_btn_dark_text_default" />
|
|
||||||
</selector>
|
|
|
@ -1,18 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
|
||||||
<item
|
|
||||||
android:state_pressed="true"
|
|
||||||
android:color="@color/common_signin_btn_light_text_pressed" />
|
|
||||||
<item
|
|
||||||
android:state_enabled="false"
|
|
||||||
android:state_focused="true"
|
|
||||||
android:color="@color/common_signin_btn_light_text_disabled" />
|
|
||||||
<item
|
|
||||||
android:state_focused="true"
|
|
||||||
android:color="@color/common_signin_btn_light_text_focused" />
|
|
||||||
<item
|
|
||||||
android:state_enabled="false"
|
|
||||||
android:color="@color/common_signin_btn_light_text_disabled" />
|
|
||||||
<item
|
|
||||||
android:color="@color/common_signin_btn_light_text_default" />
|
|
||||||
</selector>
|
|
Before Width: | Height: | Size: 1.8 KiB |
Before Width: | Height: | Size: 1.8 KiB |
Before Width: | Height: | Size: 1.8 KiB |
Before Width: | Height: | Size: 1.8 KiB |
Before Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 2.0 KiB |
Before Width: | Height: | Size: 2.0 KiB |
Before Width: | Height: | Size: 2.0 KiB |
Before Width: | Height: | Size: 2.2 KiB |
Before Width: | Height: | Size: 2.3 KiB |
Before Width: | Height: | Size: 1.9 KiB |
Before Width: | Height: | Size: 1.9 KiB |
Before Width: | Height: | Size: 1.9 KiB |
Before Width: | Height: | Size: 1.9 KiB |
Before Width: | Height: | Size: 2.2 KiB |
Before Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 2.3 KiB |
Before Width: | Height: | Size: 2.4 KiB |
Before Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 2.4 KiB |
Before Width: | Height: | Size: 2.4 KiB |
Before Width: | Height: | Size: 2.4 KiB |
Before Width: | Height: | Size: 2.4 KiB |
Before Width: | Height: | Size: 2.8 KiB |
Before Width: | Height: | Size: 2.8 KiB |
Before Width: | Height: | Size: 2.8 KiB |
Before Width: | Height: | Size: 2.8 KiB |
Before Width: | Height: | Size: 3.1 KiB |
Before Width: | Height: | Size: 3.2 KiB |
Before Width: | Height: | Size: 2.5 KiB |
Before Width: | Height: | Size: 2.5 KiB |
Before Width: | Height: | Size: 2.5 KiB |
Before Width: | Height: | Size: 2.5 KiB |