[Galaxy Note GT-N7000 Android Development] majdinj:
Continue moddings!!

Browser Edge Zoom Enabling

<<This mod will make you able to zoom in and out in internet browser by scrolling down and up respectively from the right or left screen edge>>​

- Baksmali framework.jar

- Navigate to classout\android\view\ folder and open ScaleGestureDetector.smali

- Search for this method ".method public onTouchEvent(Landroid/view/MotionEvent;)Z" and change the entire method to:

[B][COLOR="Blue"].method public onTouchEvent(Landroid/view/MotionEvent;)Z
.registers 28
.param p1, "event" # Landroid/view/MotionEvent;

.prologue
.line 207
move-object/from16 v0, p0

iget-object v0, v0, Landroid/view/ScaleGestureDetector;->mInputEventConsistencyVerifier:Landroid/view/InputEventConsistencyVerifier;

move-object/from16 v24, v0

if-eqz v24, :cond_19

.line 208
move-object/from16 v0, p0

iget-object v0, v0, Landroid/view/ScaleGestureDetector;->mInputEventConsistencyVerifier:Landroid/view/InputEventConsistencyVerifier;

move-object/from16 v24, v0

const/16 v25, 0x0

move-object/from16 v0, v24

move-object/from16 v1, p1

move/from16 v2, v25

invoke-virtual {v0, v1, v2}, Landroid/view/InputEventConsistencyVerifier;->onTouchEvent(Landroid/view/MotionEvent;I)V

.line 211
:cond_19
move-object/from16 v0, p0

iget-boolean v0, v0, Landroid/view/ScaleGestureDetector;->mValidPackage:Z

move/from16 v24, v0

if-eqz v24, :cond_2a

invoke-direct/range {p0 .. p1}, Landroid/view/ScaleGestureDetector;->onEdgeTouchEvent(Landroid/view/MotionEvent;)Z

move-result v24

if-eqz v24, :cond_2a

const/16 v24, 0x1

.line 310
:goto_29
return v24

.line 213
:cond_2a
invoke-virtual/range {p1 .. p1}, Landroid/view/MotionEvent;->getActionMasked()I

move-result v3

.line 215
.local v3, "action":I
const/16 v24, 0x1

move/from16 v0, v24

if-eq v3, v0, :cond_3a

const/16 v24, 0x3

move/from16 v0, v24

if-ne v3, v0, :cond_6a

:cond_3a
const/16 v19, 0x1

.line 217
.local v19, "streamComplete":Z
:goto_3c
if-eqz v3, :cond_40

if-eqz v19, :cond_6d

.line 221
:cond_40
move-object/from16 v0, p0

iget-boolean v0, v0, Landroid/view/ScaleGestureDetector;->mInProgress:Z

move/from16 v24, v0

if-eqz v24, :cond_65

.line 222
move-object/from16 v0, p0

iget-object v0, v0, Landroid/view/ScaleGestureDetector;->mListener:Landroid/view/ScaleGestureDetector$OnScaleGestureListener;

move-object/from16 v24, v0

move-object/from16 v0, v24

move-object/from16 v1, p0

invoke-interface {v0, v1}, Landroid/view/ScaleGestureDetector$OnScaleGestureListener;->onScaleEnd(Landroid/view/ScaleGestureDetector;)V

.line 223
const/16 v24, 0x0

move/from16 v0, v24

move-object/from16 v1, p0

iput-boolean v0, v1, Landroid/view/ScaleGestureDetector;->mInProgress:Z

.line 224
const/16 v24, 0x0

move/from16 v0, v24

move-object/from16 v1, p0

iput v0, v1, Landroid/view/ScaleGestureDetector;->mInitialSpan:F

.line 227
:cond_65
if-eqz v19, :cond_6d

.line 228
const/16 v24, 0x1

goto :goto_29

.line 215
.end local v19 # "streamComplete":Z
:cond_6a
const/16 v19, 0x0

goto :goto_3c

.line 232
.restart local v19 # "streamComplete":Z
:cond_6d
const/16 v24, 0x6

move/from16 v0, v24

if-eq v3, v0, :cond_79

const/16 v24, 0x5

move/from16 v0, v24

if-ne v3, v0, :cond_97

:cond_79
const/4 v4, 0x1

.line 235
.local v4, "configChanged":Z
:goto_7a
const/16 v24, 0x6

move/from16 v0, v24

if-ne v3, v0, :cond_99

const/4 v14, 0x1

.line 236
.local v14, "pointerUp":Z
:goto_81
if-eqz v14, :cond_9b

invoke-virtual/range {p1 .. p1}, Landroid/view/MotionEvent;->getActionIndex()I

move-result v15

.line 239
.local v15, "skipIndex":I
:goto_87
const/16 v20, 0x0

.local v20, "sumX":F
const/16 v21, 0x0

.line 240
.local v21, "sumY":F
invoke-virtual/range {p1 .. p1}, Landroid/view/MotionEvent;->getPointerCount()I

move-result v5

.line 241
.local v5, "count":I
const/4 v13, 0x0

.local v13, "i":I
:goto_90
if-ge v13, v5, :cond_ae

.line 242
if-ne v15, v13, :cond_9d

.line 241
:goto_94
add-int/lit8 v13, v13, 0x1

goto :goto_90

.line 232
.end local v4 # "configChanged":Z
.end local v5 # "count":I
.end local v13 # "i":I
.end local v14 # "pointerUp":Z
.end local v15 # "skipIndex":I
.end local v20 # "sumX":F
.end local v21 # "sumY":F
:cond_97
const/4 v4, 0x0

goto :goto_7a

.line 235
.restart local v4 # "configChanged":Z
:cond_99
const/4 v14, 0x0

goto :goto_81

.line 236
.restart local v14 # "pointerUp":Z
:cond_9b
const/4 v15, -0x1

goto :goto_87

.line 243
.restart local v5 # "count":I
.restart local v13 # "i":I
.restart local v15 # "skipIndex":I
.restart local v20 # "sumX":F
.restart local v21 # "sumY":F

:cond_9d
move-object/from16 v0, p1

invoke-virtual {v0, v13}, Landroid/view/MotionEvent;->getX(I)F

move-result v24

add-float v20, v20, v24

.line 244
move-object/from16 v0, p1

invoke-virtual {v0, v13}, Landroid/view/MotionEvent;->getY(I)F

move-result v24

add-float v21, v21, v24

goto :goto_94

.line 246

:cond_ae
if-eqz v14, :cond_c6

add-int/lit8 v10, v5, -0x1

.line 247
.local v10, "div":I

:goto_b2
int-to-float v0, v10

move/from16 v24, v0

div-float v11, v20, v24

.line 248
.local v11, "focusX":F
int-to-float v0, v10

move/from16 v24, v0

div-float v12, v21, v24

.line 251
.local v12, "focusY":F
const/4 v6, 0x0

.local v6, "devSumX":F
const/4 v7, 0x0

.line 252
.local v7, "devSumY":F
const/4 v13, 0x0

:goto_bf
if-ge v13, v5, :cond_e5

.line 253
if-ne v15, v13, :cond_c8

.line 252

:goto_c3
add-int/lit8 v13, v13, 0x1

goto :goto_bf

.end local v6 # "devSumX":F
.end local v7 # "devSumY":F
.end local v10 # "div":I
.end local v11 # "focusX":F
.end local v12 # "focusY":F
:cond_c6
move v10, v5

.line 246

goto :goto_b2

.line 254
.restart local v6 # "devSumX":F
.restart local v7 # "devSumY":F
.restart local v10 # "div":I
.restart local v11 # "focusX":F
.restart local v12 # "focusY":F
:cond_c8
move-object/from16 v0, p1

invoke-virtual {v0, v13}, Landroid/view/MotionEvent;->getX(I)F

move-result v24

sub-float v24, v24, v11

invoke-static/range {v24 .. v24}, Ljava/lang/Math;->abs(F)F

move-result v24

add-float v6, v6, v24

.line 255
move-object/from16 v0, p1

invoke-virtual {v0, v13}, Landroid/view/MotionEvent;->getY(I)F

move-result v24

sub-float v24, v24, v12

invoke-static/range {v24 .. v24}, Ljava/lang/Math;->abs(F)F

move-result v24

add-float v7, v7, v24

goto :goto_c3

.line 257
:cond_e5
int-to-float v0, v10

move/from16 v24, v0

div-float v8, v6, v24

.line 258
.local v8, "devX":F
int-to-float v0, v10

move/from16 v24, v0

div-float v9, v7, v24

.line 263
.local v9, "devY":F
const/high16 v24, 0x40000000

mul-float v17, v8, v24

.line 264
.local v17, "spanX":F
const/high16 v24, 0x40000000

mul-float v18, v9, v24

.line 265
.local v18, "spanY":F
mul-float v24, v17, v17

mul-float v25, v18, v18

add-float v24, v24, v25

invoke-static/range {v24 .. v24}, Landroid/util/FloatMath;->sqrt(F)F

move-result v16

.line 270
.local v16, "span":F
move-object/from16 v0, p0

iget-boolean v0, v0, Landroid/view/ScaleGestureDetector;->mInProgress:Z

move/from16 v23, v0

.line 271
.local v23, "wasInProgress":Z
move-object/from16 v0, p0

iput v11, v0, Landroid/view/ScaleGestureDetector;->mFocusX:F

.line 272
move-object/from16 v0, p0

iput v12, v0, Landroid/view/ScaleGestureDetector;->mFocusY:F

.line 273
move-object/from16 v0, p0

iget-boolean v0, v0, Landroid/view/ScaleGestureDetector;->mInProgress:Z

move/from16 v24, v0

if-eqz v24, :cond_13a

const/16 v24, 0x0

cmpl-float v24, v16, v24

if-eqz v24, :cond_11f

if-eqz v4, :cond_13a

.line 274
:cond_11f
move-object/from16 v0, p0

iget-object v0, v0, Landroid/view/ScaleGestureDetector;->mListener:Landroid/view/ScaleGestureDetector$OnScaleGestureListener;

move-object/from16 v24, v0

move-object/from16 v0, v24

move-object/from16 v1, p0

invoke-interface {v0, v1}, Landroid/view/ScaleGestureDetector$OnScaleGestureListener;->onScaleEnd(Landroid/view/ScaleGestureDetector;)V

.line 275
const/16 v24, 0x0

move/from16 v0, v24

move-object/from16 v1, p0

iput-boolean v0, v1, Landroid/view/ScaleGestureDetector;->mInProgress:Z

.line 276
move/from16 v0, v16

move-object/from16 v1, p0

iput v0, v1, Landroid/view/ScaleGestureDetector;->mInitialSpan:F

.line 278
:cond_13a
if-eqz v4, :cond_166

.line 279
move/from16 v0, v17

move-object/from16 v1, p0

iput v0, v1, Landroid/view/ScaleGestureDetector;->mCurrSpanX:F

move/from16 v0, v17

move-object/from16 v1, p0

iput v0, v1, Landroid/view/ScaleGestureDetector;->mPrevSpanX:F

.line 280
move/from16 v0, v18

move-object/from16 v1, p0

iput v0, v1, Landroid/view/ScaleGestureDetector;->mCurrSpanY:F

move/from16 v0, v18

move-object/from16 v1, p0

iput v0, v1, Landroid/view/ScaleGestureDetector;->mPrevSpanY:F

.line 281
move/from16 v0, v16

move-object/from16 v1, p0

iput v0, v1, Landroid/view/ScaleGestureDetector;->mCurrSpan:F

move/from16 v0, v16

move-object/from16 v1, p0

iput v0, v1, Landroid/view/ScaleGestureDetector;->mPrevSpan:F

move/from16 v0, v16

move-object/from16 v1, p0

iput v0, v1, Landroid/view/ScaleGestureDetector;->mInitialSpan:F

.line 283
:cond_166
move-object/from16 v0, p0

iget-boolean v0, v0, Landroid/view/ScaleGestureDetector;->mInProgress:Z

move/from16 v24, v0

if-nez v24, :cond_1d0

const/16 v24, 0x0

cmpl-float v24, v16, v24

if-eqz v24, :cond_1d0

if-nez v23, :cond_191

move-object/from16 v0, p0

iget v0, v0, Landroid/view/ScaleGestureDetector;->mInitialSpan:F

move/from16 v24, v0

sub-float v24, v16, v24

invoke-static/range {v24 .. v24}, Ljava/lang/Math;->abs(F)F

move-result v24

move-object/from16 v0, p0

iget v0, v0, Landroid/view/ScaleGestureDetector;->mSpanSlop:I

move/from16 v25, v0

move/from16 v0, v25

int-to-float v0, v0

move/from16 v25, v0

cmpl-float v24, v24, v25

if-lez v24, :cond_1d0

.line 285
:cond_191
move/from16 v0, v17

move-object/from16 v1, p0

iput v0, v1, Landroid/view/ScaleGestureDetector;->mCurrSpanX:F

move/from16 v0, v17

move-object/from16 v1, p0

iput v0, v1, Landroid/view/ScaleGestureDetector;->mPrevSpanX:F

.line 286
move/from16 v0, v18

move-object/from16 v1, p0

iput v0, v1, Landroid/view/ScaleGestureDetector;->mCurrSpanY:F

move/from16 v0, v18

move-object/from16 v1, p0

iput v0, v1, Landroid/view/ScaleGestureDetector;->mPrevSpanY:F

.line 287
move/from16 v0, v16

move-object/from16 v1, p0

iput v0, v1, Landroid/view/ScaleGestureDetector;->mCurrSpan:F

move/from16 v0, v16

move-object/from16 v1, p0

iput v0, v1, Landroid/view/ScaleGestureDetector;->mPrevSpan:F

.line 288
move-object/from16 v0, p0

iget-object v0, v0, Landroid/view/ScaleGestureDetector;->mListener:Landroid/view/ScaleGestureDetector$OnScaleGestureListener;

move-object/from16 v24, v0

move-object/from16 v0, v24

move-object/from16 v1, p0

invoke-interface {v0, v1}, Landroid/view/ScaleGestureDetector$OnScaleGestureListener;->onScaleBegin(Landroid/view/ScaleGestureDetector;)Z

move-result v24

move/from16 v0, v24

move-object/from16 v1, p0

iput-boolean v0, v1, Landroid/view/ScaleGestureDetector;->mInProgress:Z

.line 289
const-string v24, "ScaleGestureDetector"

const-string v25, "SGD"

invoke-static/range {v24 .. v25}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I

.line 293
:cond_1d0
const/16 v24, 0x2

move/from16 v0, v24

if-ne v3, v0, :cond_226

.line 294
move/from16 v0, v17

move-object/from16 v1, p0

iput v0, v1, Landroid/view/ScaleGestureDetector;->mCurrSpanX:F

.line 295
move/from16 v0, v18

move-object/from16 v1, p0

iput v0, v1, Landroid/view/ScaleGestureDetector;->mCurrSpanY:F

.line 296
move/from16 v0, v16

move-object/from16 v1, p0

iput v0, v1, Landroid/view/ScaleGestureDetector;->mCurrSpan:F

.line 298
const/16 v22, 0x1

.line 299
.local v22, "updatePrev":Z
move-object/from16 v0, p0

iget-boolean v0, v0, Landroid/view/ScaleGestureDetector;->mInProgress:Z

move/from16 v24, v0

if-eqz v24, :cond_200

.line 300
move-object/from16 v0, p0

iget-object v0, v0, Landroid/view/ScaleGestureDetector;->mListener:Landroid/view/ScaleGestureDetector$OnScaleGestureListener;

move-object/from16 v24, v0

move-object/from16 v0, v24

move-object/from16 v1, p0

invoke-interface {v0, v1}, Landroid/view/ScaleGestureDetector$OnScaleGestureListener;->onScale(Landroid/view/ScaleGestureDetector;)Z

move-result v22

.line 303
:cond_200
if-eqz v22, :cond_226

.line 304
move-object/from16 v0, p0

iget v0, v0, Landroid/view/ScaleGestureDetector;->mCurrSpanX:F

move/from16 v24, v0

move/from16 v0, v24

move-object/from16 v1, p0

iput v0, v1, Landroid/view/ScaleGestureDetector;->mPrevSpanX:F

.line 305
move-object/from16 v0, p0

iget v0, v0, Landroid/view/ScaleGestureDetector;->mCurrSpanY:F

move/from16 v24, v0

move/from16 v0, v24

move-object/from16 v1, p0

iput v0, v1, Landroid/view/ScaleGestureDetector;->mPrevSpanY:F

.line 306
move-object/from16 v0, p0

iget v0, v0, Landroid/view/ScaleGestureDetector;->mCurrSpan:F

move/from16 v24, v0

move/from16 v0, v24

move-object/from16 v1, p0

iput v0, v1, Landroid/view/ScaleGestureDetector;->mPrevSpan:F

.line 310
.end local v22 # "updatePrev":Z
:cond_226
const/16 v24, 0x1

goto/16 :goto_29
.end method[/COLOR][/B]

- Save changes and smali your framework.jar and push it to device.

Airview Enabling + Control Panel + S Pen Gesture

[Section A] Enabling app Air view:

Part: One

1. Just add this file to /system/etc/permissions in your phone.

2. Fix permission to rw-r--r-- and reboot

Part: Two

(thanks to eybee1970 and Robbie Hood)

1. Decompile SecGallary2_Galaxy.apk

2. Go to res\values folder and open bools.xml file and do these changes:

<bool name="isEspresso">[B][COLOR="Blue"]true[/COLOR][/B]</bool>
<bool name="isTablet">[B][COLOR="Blue"]true[/COLOR][/B]</bool>

3. Save changes, recompile and push to your phone.

Part: Three

1. Decompile SecLauncher2.apk

2. Go to res\values folder and open bools.xml file and do these changes:

<bool name="config_FolderHovering">[B][COLOR="Blue"]true[/COLOR][/B]</bool>

[Section B] Enabling Air view Control Panel and SPen Gesture in settings menu:

Special thanks to [MENTION=4503214]not-i[/MENTION] for helping in porting pen gesture.

- Baksmali SecSettings.apk

- Navigate to classout\com\android\settings folder and open PenSettingsMenu.smali

- In the method ".method public onCreate(Landroid/os/Bundle;)V", locate this section and delete all colored text (don't delete the defined condition.!!):

.line 198
:cond_209

[B][COLOR="Red"] invoke-virtual {p0}, Lcom/android/settings/PenSettingsMenu;->getPreferenceScreen()Landroid/preference/PreferenceScreen;

move-result-object v0

const-string v1, "pen_hover"

invoke-virtual {p0, v1}, Lcom/android/settings/PenSettingsMenu;->findPreference(Ljava/lang/CharSequence;)Landroid/preference/Preference;

move-result-object v1

invoke-virtual {v0, v1}, Landroid/preference/PreferenceScreen;->removePreference(Landroid/preference/Preference;)Z[/COLOR][/B]

.line 199

[B][COLOR="Blue"]invoke-virtual {p0}, Lcom/android/settings/PenSettingsMenu;->getPreferenceScreen()Landroid/preference/PreferenceScreen;

move-result-object v0

iget-object v1, p0, Lcom/android/settings/PenSettingsMenu;->mPenHovering:Landroid/preference/SwitchPreferenceScreen;

invoke-virtual {v0, v1}, Landroid/preference/PreferenceScreen;->removePreference(Landroid/preference/Preference;)Z[/COLOR][/B]

.line 200

[B][COLOR="Green"]invoke-virtual {p0}, Lcom/android/settings/PenSettingsMenu;->getPreferenceScreen()Landroid/preference/PreferenceScreen;

move-result-object v0

iget-object v1, p0, Lcom/android/settings/PenSettingsMenu;->mPenHoveringSound:Landroid/preference/CheckBoxPreference;

invoke-virtual {v0, v1}, Landroid/preference/PreferenceScreen;->removePreference(Landroid/preference/Preference;)Z[/COLOR][/B]

.line 206
[B][COLOR="DarkOrange"]invoke-virtual {p0}, Lcom/android/settings/PenSettingsMenu;->getPreferenceScreen()Landroid/preference/PreferenceScreen;

move-result-object v0

const-string v1, "pen_gesture_category"

invoke-virtual {p0, v1}, Lcom/android/settings/PenSettingsMenu;->findPreference(Ljava/lang/CharSequence;)Landroid/preference/Preference;

move-result-object v1

invoke-virtual {v0, v1}, Landroid/preference/PreferenceScreen;->removePreference(Landroid/preference/Preference;)Z[/COLOR][/B]

.line 207
[B][COLOR="Magenta"]invoke-virtual {p0}, Lcom/android/settings/PenSettingsMenu;->getPreferenceScreen()Landroid/preference/PreferenceScreen;

move-result-object v0

const-string v1, "pen_quick_command"

invoke-virtual {p0, v1}, Lcom/android/settings/PenSettingsMenu;->findPreference(Ljava/lang/CharSequence;)Landroid/preference/Preference;

move-result-object v1

invoke-virtual {v0, v1}, Landroid/preference/PreferenceScreen;->removePreference(Landroid/preference/Preference;)Z[/COLOR][/B]

Legend:

Deleting red codes: This will enable Air View header.

Deleting blue codes: This will enable Air View switch with control panel.

Deleting green codes: This will enable Air View haptic feedback.

Deleting orange codes: This will enable Pen gestures header.

Deleting purple codes: This will enable Quick command main action in Pen gestures category.

You can delete or keep ".line xxx" debugging; it is up to you.!!.

- Save changes.. smali SecSettings.apk, push it to your phone and fix permissions to rw-r--r-- (644).

- Push "SPenGesturePad.apk" to your phone and fix permissions to rw-r--r-- (644).

- Reboot the phone into recovery mode and flash SGNII_VODB.zip file.

Results:

Adding Extra About Info to Your ROM to Suit Your Ego

- Decompile SecSettings.apk

- Navigate to res\values\ folder and open strings.xml file by Notepad++ and keep it open, we will need it later.

- Navigate to res\xml\ folder and open device_info_settings.xml file by Notepad++.

Now, I will divide the tutorial into 2 sections..

Section One: Adding header category for about device menu.

​

- In device_info_settings.xml, at the top, do these changes (remove the red > and add blue lines):

before:

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen android:title="@string/about_settings" android:key="about_device"
xmlns:android="http://schemas.android.com/apk/res/android"[B][COLOR="Red"]>[/COLOR][/B]
<PreferenceScreen android:title="@string/help_title" android:key="help" android:summary="@string/help_title_summary">

after:

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen android:title="@string/about_settings" android:key="about_device"
xmlns:android="http://schemas.android.com/apk/res/android"
[B][COLOR="Blue"]xmlns:settings="http://schemas.android.com/apk/res/com.android.settings">
<PreferenceCategory android:title="@string/about_gen" android:key="dummy_gen" />[/COLOR][/B]
<PreferenceScreen android:title="@string/help_title" android:key="help" android:summary="@string/help_title_summary">

Explaination:

we added header category with dummy key reference.

- Now we need to add strings resources, open strings.xml and add this line string resource before </resources> line:

<string name="about_gen">[B][COLOR="Green"]General information[/COLOR][/B]</string>

- We have finished from section one.

Section Two: Adding About ROM new information.

​

- In device_info_settings.xml, go to the end and add these lines before </PreferenceScreen> line:

<PreferenceCategory android:title="@string/rom_info" android:key="dummy_key">
<Preference android:title="@string/rom_name" android:key="rom_name" android:summary="@string/rom_name_details" style="?android:preferenceInformationStyle" />
<Preference android:title="@string/rom_ver" android:key="rom_ver" android:summary="@string/rom_ver_details" style="?android:preferenceInformationStyle" />
<Preference android:title="@string/rom_date" android:key="rom_date" android:summary="@string/rom_date_details" style="?android:preferenceInformationStyle" />
<Preference android:title="@string/rom_developer" android:key="rom_developer" android:summary="@string/rom_developer_name" style="?android:preferenceInformationStyle" />
<Preference android:title="@string/dev_thanks" android:key="dev_thanks" android:summary="@string/dev_thanks_name" style="?android:preferenceInformationStyle" />
</PreferenceCategory>

- Now we need to add strings resources, open strings.xml and add these lines string resources before </resources> line:

<string name="rom_info">[B][COLOR="Green"]About ROM[/COLOR][/B]</string>
<string name="rom_name">[B][COLOR="Green"]ROM name[/COLOR][/B]</string>
<string name="rom_name_details">[B][COLOR="Green"]GloryROM[/COLOR][/B]</string>
<string name="rom_ver">[B][COLOR="Green"]ROM version[/COLOR][/B]</string>
<string name="rom_ver_details">[B][COLOR="Green"]v4.5 with Multi-Languages and Multi-CSC[/COLOR][/B]</string>
<string name="rom_date">[B][COLOR="Green"]Release date[/COLOR][/B]</string>
<string name="rom_date_details">[B][COLOR="Green"]March 2013[/COLOR][/B]</string>
<string name="rom_developer">[B][COLOR="Green"]ROM developer[/COLOR][/B]</string>
<string name="rom_developer_name">[B][COLOR="Green"]majdinj - xda.developers.com[/COLOR][/B]</string>
<string name="dev_thanks">[B][COLOR="Green"]Thanks to[/COLOR][/B]</string>
<string name="dev_thanks_name">[B][COLOR="Green"]ThaiDai for his ML ROM base[/COLOR][/B]</string>

- We have finished from section two.

- Save changes.

Now recompile your SecSettings.apk, push it to your phone, fix permissions (644) and reboot.

Enable TW Launcher Rotation

- Decompile SecLauncher2.apk

- Go to \res\values folder and open integers.xml

- Search for this line:

<integer name="config_screenOrientation">[B][COLOR="Red"]1[/COLOR][/B]</integer>

- Change the integer number to one of actions bellow:

1 = Disabled

2 = Enabled when Screen Rotation is switched on (270 degree)

3 = As same as 2

4 = Always enabled even if Screen Rotation is switched off (270 degree)

5 = Always default position

6 = Always in landscape mode (to the left)

7 = As same as 5

8 = Always in landscape mode (to the right)

9 = Upside down portrait when Screen Rotation is switched on

10= As same as 4 but for all directions (360 degree)

- Save changes.. recompile, push it to your device and fix permissions to 644 and reboot.

Results:

​

Enable LockScreen Rotation

- Decompile framework-res.apk

- Go to \res\values folder and open bools.xml

- Change false to true in this line:

<bool name="config_enableLockScreenRotation">[B][COLOR="Blue"]true[/COLOR][/B]</bool>

- Save changes.. recompile, push it to your device and fix permissions to 644 and reboot.

Results:

We haven't finished our tutorials,,, Please go ahead to post #393 until #402 (some are reserved post in the moment..!)