[Nexus 5 Original Android Development] linqdesires:
I fixed the LTE tile on my build in this way:

frameworks/base/packages/SystemUI/src/com/android/systemui/quicksettings/MobileNetworkTypeTile.java

private static final int STATE_LTE = 7;

mOnClick = new OnClickListener() {
@Override
public void onClick(View v) {
int currentMode = getCurrentCMMode();
ConnectivityManager mCm = (ConnectivityManager) mContext.getSystemService(Context.CONNECTIVITY_SERVICE);

Intent intent = new Intent(ACTION_MODIFY_NETWORK_MODE);
switch (mMode) {
case Phone.NT_MODE_WCDMA_PREF:
case Phone.NT_MODE_GSM_UMTS:
intent.putExtra(EXTRA_NETWORK_MODE, Phone.NT_MODE_GSM_ONLY);
mInternalState = STATE_TURNING_OFF;
mIntendedMode = Phone.NT_MODE_GSM_ONLY;
mCm.setMobileDataEnabled(false);
break;
case Phone.NT_MODE_WCDMA_ONLY:
intent.putExtra(EXTRA_NETWORK_MODE, Phone.NT_MODE_LTE_GSM_WCDMA);
mIntendedMode = Phone.NT_MODE_LTE_GSM_WCDMA;
mInternalState = STATE_TURNING_ON;
mCm.setMobileDataEnabled(true);
break;
case Phone.NT_MODE_LTE_GSM_WCDMA:
// if (currentMode == CM_MODE_3GONLY) {
intent.putExtra(EXTRA_NETWORK_MODE, Phone.NT_MODE_GSM_ONLY);
mInternalState = STATE_TURNING_OFF;
mIntendedMode = Phone.NT_MODE_GSM_ONLY;
mCm.setMobileDataEnabled(false);
// } else {
// intent.putExtra(EXTRA_NETWORK_MODE, Phone.NT_MODE_WCDMA_PREF);
// mInternalState = STATE_TURNING_ON;
// mIntendedMode = Phone.NT_MODE_WCDMA_PREF;
// }
break;
case Phone.NT_MODE_GSM_ONLY:
if (currentMode == CM_MODE_3GONLY || currentMode == CM_MODE_BOTH) {
intent.putExtra(EXTRA_NETWORK_MODE, Phone.NT_MODE_WCDMA_ONLY);
mInternalState = STATE_TURNING_ON;
mIntendedMode = Phone.NT_MODE_WCDMA_ONLY;
} else {
intent.putExtra(EXTRA_NETWORK_MODE, Phone.NT_MODE_WCDMA_PREF);
mInternalState = STATE_TURNING_ON;
mIntendedMode = Phone.NT_MODE_WCDMA_PREF;
}
mCm.setMobileDataEnabled(true);
break;
}

mMode = NETWORK_MODE_UNKNOWN;
mContext.sendBroadcast(intent);
}
};

private synchronized void updateTile() {
mMode = get2G3G(mContext);
mState = networkModeToState();

mLabel = mContext.getString(R.string.quick_settings_network_type);

switch (mState) {
case STATE_UNEXPECTED:
mDrawable = R.drawable.ic_qs_unexpected_network;
break;
case STATE_2G_ONLY:
mDrawable = R.drawable.ic_qs_2g_on;
break;
case STATE_2G_AND_3G:
if (mMode == Phone.NT_MODE_WCDMA_ONLY) {
mDrawable = R.drawable.ic_qs_3g_on;
} else {
mDrawable = R.drawable.ic_qs_2g3g_on;
}
break;
case STATE_LTE:
mDrawable = R.drawable.ic_qs_lte_on;
case STATE_INTERMEDIATE:
if (mInternalState == STATE_TURNING_ON) {
if (mIntendedMode == Phone.NT_MODE_WCDMA_ONLY) {
mDrawable = R.drawable.ic_qs_3g_on;
} else {
mDrawable = R.drawable.ic_qs_2g3g_on;
}
} else {
mDrawable = R.drawable.ic_qs_2g_on;
}
break;
}
}

private int networkModeToState() {
if (mInternalState == STATE_TURNING_ON || mInternalState == STATE_TURNING_OFF) {
return STATE_INTERMEDIATE;
}

switch (mMode) {
case Phone.NT_MODE_WCDMA_PREF:
case Phone.NT_MODE_WCDMA_ONLY:
case Phone.NT_MODE_GSM_UMTS:
return STATE_2G_AND_3G;
case Phone.NT_MODE_GSM_ONLY:
return STATE_2G_ONLY;
case Phone.NT_MODE_LTE_GSM_WCDMA:
return STATE_LTE;
case Phone.NT_MODE_CDMA:
case Phone.NT_MODE_CDMA_NO_EVDO:
case Phone.NT_MODE_EVDO_NO_CDMA:
case Phone.NT_MODE_GLOBAL:
// need to check what is going on
Log.d(TAG, "Unexpected network mode (" + mMode + ")");
return STATE_UNEXPECTED;
}
return STATE_INTERMEDIATE;
}

As you can see I disable data connection while on 2G, this is my own need. It switch between 2G only, 3G only and 4G/3G.

This is a bad fix and is a very private fix, is carved on my needs... I'm sorry I've got no time in this period for testing and making the fix "public" pushing in the slimrom git.

Anyway this works, hope it can help to fix it on the Slimrom repo. :good: