Eric Kok
11 years ago
20 changed files with 501 additions and 22 deletions
@ -0,0 +1,293 @@ |
|||||||
|
<?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="match_parent" |
||||||
|
android:layout_height="match_parent" |
||||||
|
android:orientation="vertical" > |
||||||
|
|
||||||
|
<LinearLayout |
||||||
|
android:layout_width="match_parent" |
||||||
|
android:layout_height="wrap_content" |
||||||
|
android:layout_marginLeft="@dimen/margin_half" |
||||||
|
android:layout_marginRight="@dimen/margin_half" |
||||||
|
android:orientation="horizontal" > |
||||||
|
|
||||||
|
<TextView |
||||||
|
android:layout_width="wrap_content" |
||||||
|
android:layout_height="wrap_content" |
||||||
|
android:layout_marginRight="@dimen/margin_half" |
||||||
|
android:text="@string/status_maxspeed_down" |
||||||
|
android:textAllCaps="true" /> |
||||||
|
|
||||||
|
<TextView |
||||||
|
android:id="@+id/maxspeeddown_text" |
||||||
|
style="@style/BigNumberButton" |
||||||
|
android:layout_width="0dip" |
||||||
|
android:layout_height="wrap_content" |
||||||
|
android:layout_weight="1" |
||||||
|
android:gravity="right" |
||||||
|
android:singleLine="true" |
||||||
|
android:text="-" |
||||||
|
tools:ignore="HardcodedText" /> |
||||||
|
|
||||||
|
<TextView |
||||||
|
android:layout_width="wrap_content" |
||||||
|
android:layout_height="wrap_content" |
||||||
|
android:layout_marginRight="@dimen/margin_half" |
||||||
|
android:text="@string/status_maxspeed_unit" |
||||||
|
android:textAllCaps="true" /> |
||||||
|
</LinearLayout> |
||||||
|
|
||||||
|
<View |
||||||
|
android:layout_width="match_parent" |
||||||
|
android:layout_height="1dip" |
||||||
|
android:background="#28000000" /> |
||||||
|
|
||||||
|
<LinearLayout |
||||||
|
android:layout_width="match_parent" |
||||||
|
android:layout_height="wrap_content" |
||||||
|
android:orientation="horizontal" > |
||||||
|
|
||||||
|
<Button |
||||||
|
android:id="@+id/down1Button" |
||||||
|
style="@style/BigNumberButton" |
||||||
|
android:layout_width="0dip" |
||||||
|
android:layout_height="wrap_content" |
||||||
|
android:layout_weight="1" |
||||||
|
android:text="1" |
||||||
|
tools:ignore="HardcodedText" /> |
||||||
|
|
||||||
|
<Button |
||||||
|
android:id="@+id/down2Button" |
||||||
|
style="@style/BigNumberButton" |
||||||
|
android:layout_width="0dip" |
||||||
|
android:layout_height="wrap_content" |
||||||
|
android:layout_weight="1" |
||||||
|
android:text="2" |
||||||
|
tools:ignore="HardcodedText" /> |
||||||
|
|
||||||
|
<Button |
||||||
|
android:id="@+id/down3Button" |
||||||
|
style="@style/BigNumberButton" |
||||||
|
android:layout_width="0dip" |
||||||
|
android:layout_height="wrap_content" |
||||||
|
android:layout_weight="1" |
||||||
|
android:text="3" |
||||||
|
tools:ignore="HardcodedText" /> |
||||||
|
|
||||||
|
<Button |
||||||
|
android:id="@+id/down4Button" |
||||||
|
style="@style/BigNumberButton" |
||||||
|
android:layout_width="0dip" |
||||||
|
android:layout_height="wrap_content" |
||||||
|
android:layout_weight="1" |
||||||
|
android:text="4" |
||||||
|
tools:ignore="HardcodedText" /> |
||||||
|
|
||||||
|
<Button |
||||||
|
android:id="@+id/down5Button" |
||||||
|
style="@style/BigNumberButton" |
||||||
|
android:layout_width="0dip" |
||||||
|
android:layout_height="wrap_content" |
||||||
|
android:layout_weight="1" |
||||||
|
android:text="5" |
||||||
|
tools:ignore="HardcodedText" /> |
||||||
|
</LinearLayout> |
||||||
|
|
||||||
|
<LinearLayout |
||||||
|
android:layout_width="match_parent" |
||||||
|
android:layout_height="wrap_content" |
||||||
|
android:orientation="horizontal" > |
||||||
|
|
||||||
|
<Button |
||||||
|
android:id="@+id/down6Button" |
||||||
|
style="@style/BigNumberButton" |
||||||
|
android:layout_width="0dip" |
||||||
|
android:layout_height="wrap_content" |
||||||
|
android:layout_weight="1" |
||||||
|
android:text="6" |
||||||
|
tools:ignore="HardcodedText" /> |
||||||
|
|
||||||
|
<Button |
||||||
|
android:id="@+id/down7Button" |
||||||
|
style="@style/BigNumberButton" |
||||||
|
android:layout_width="0dip" |
||||||
|
android:layout_height="wrap_content" |
||||||
|
android:layout_weight="1" |
||||||
|
android:text="7" |
||||||
|
tools:ignore="HardcodedText" /> |
||||||
|
|
||||||
|
<Button |
||||||
|
android:id="@+id/down8Button" |
||||||
|
style="@style/BigNumberButton" |
||||||
|
android:layout_width="0dip" |
||||||
|
android:layout_height="wrap_content" |
||||||
|
android:layout_weight="1" |
||||||
|
android:text="8" |
||||||
|
tools:ignore="HardcodedText" /> |
||||||
|
|
||||||
|
<Button |
||||||
|
android:id="@+id/down9Button" |
||||||
|
style="@style/BigNumberButton" |
||||||
|
android:layout_width="0dip" |
||||||
|
android:layout_height="wrap_content" |
||||||
|
android:layout_weight="1" |
||||||
|
android:text="9" |
||||||
|
tools:ignore="HardcodedText" /> |
||||||
|
|
||||||
|
<Button |
||||||
|
android:id="@+id/down0Button" |
||||||
|
style="@style/BigNumberButton" |
||||||
|
android:layout_width="0dip" |
||||||
|
android:layout_height="wrap_content" |
||||||
|
android:layout_weight="1" |
||||||
|
android:text="0" |
||||||
|
tools:ignore="HardcodedText" /> |
||||||
|
</LinearLayout> |
||||||
|
|
||||||
|
<View |
||||||
|
android:layout_width="match_parent" |
||||||
|
android:layout_height="1dip" |
||||||
|
android:background="#28000000" /> |
||||||
|
|
||||||
|
<LinearLayout |
||||||
|
android:layout_width="match_parent" |
||||||
|
android:layout_height="wrap_content" |
||||||
|
android:layout_marginLeft="@dimen/margin_half" |
||||||
|
android:layout_marginRight="@dimen/margin_half" |
||||||
|
android:orientation="horizontal" > |
||||||
|
|
||||||
|
<TextView |
||||||
|
android:layout_width="wrap_content" |
||||||
|
android:layout_height="wrap_content" |
||||||
|
android:layout_marginRight="@dimen/margin_half" |
||||||
|
android:text="@string/status_maxspeed_up" |
||||||
|
android:textAllCaps="true" /> |
||||||
|
|
||||||
|
<TextView |
||||||
|
android:id="@+id/maxspeedup_text" |
||||||
|
style="@style/BigNumberButton" |
||||||
|
android:layout_width="0dip" |
||||||
|
android:layout_height="wrap_content" |
||||||
|
android:layout_weight="1" |
||||||
|
android:gravity="right" |
||||||
|
android:singleLine="true" |
||||||
|
android:text="-" |
||||||
|
tools:ignore="HardcodedText" /> |
||||||
|
|
||||||
|
<TextView |
||||||
|
android:layout_width="wrap_content" |
||||||
|
android:layout_height="wrap_content" |
||||||
|
android:layout_marginRight="@dimen/margin_half" |
||||||
|
android:text="@string/status_maxspeed_unit" |
||||||
|
android:textAllCaps="true" /> |
||||||
|
</LinearLayout> |
||||||
|
|
||||||
|
<View |
||||||
|
android:layout_width="match_parent" |
||||||
|
android:layout_height="1dip" |
||||||
|
android:background="#28000000" /> |
||||||
|
|
||||||
|
<LinearLayout |
||||||
|
android:layout_width="match_parent" |
||||||
|
android:layout_height="wrap_content" |
||||||
|
android:orientation="horizontal" > |
||||||
|
|
||||||
|
<Button |
||||||
|
android:id="@+id/up1Button" |
||||||
|
style="@style/BigNumberButton" |
||||||
|
android:layout_width="0dip" |
||||||
|
android:layout_height="wrap_content" |
||||||
|
android:layout_weight="1" |
||||||
|
android:text="1" |
||||||
|
tools:ignore="HardcodedText" /> |
||||||
|
|
||||||
|
<Button |
||||||
|
android:id="@+id/up2Button" |
||||||
|
style="@style/BigNumberButton" |
||||||
|
android:layout_width="0dip" |
||||||
|
android:layout_height="wrap_content" |
||||||
|
android:layout_weight="1" |
||||||
|
android:text="2" |
||||||
|
tools:ignore="HardcodedText" /> |
||||||
|
|
||||||
|
<Button |
||||||
|
android:id="@+id/up3Button" |
||||||
|
style="@style/BigNumberButton" |
||||||
|
android:layout_width="0dip" |
||||||
|
android:layout_height="wrap_content" |
||||||
|
android:layout_weight="1" |
||||||
|
android:text="3" |
||||||
|
tools:ignore="HardcodedText" /> |
||||||
|
|
||||||
|
<Button |
||||||
|
android:id="@+id/up4Button" |
||||||
|
style="@style/BigNumberButton" |
||||||
|
android:layout_width="0dip" |
||||||
|
android:layout_height="wrap_content" |
||||||
|
android:layout_weight="1" |
||||||
|
android:text="4" |
||||||
|
tools:ignore="HardcodedText" /> |
||||||
|
|
||||||
|
<Button |
||||||
|
android:id="@+id/up5Button" |
||||||
|
style="@style/BigNumberButton" |
||||||
|
android:layout_width="0dip" |
||||||
|
android:layout_height="wrap_content" |
||||||
|
android:layout_weight="1" |
||||||
|
android:text="5" |
||||||
|
tools:ignore="HardcodedText" /> |
||||||
|
</LinearLayout> |
||||||
|
|
||||||
|
<LinearLayout |
||||||
|
android:layout_width="match_parent" |
||||||
|
android:layout_height="wrap_content" |
||||||
|
android:orientation="horizontal" > |
||||||
|
|
||||||
|
<Button |
||||||
|
android:id="@+id/up6Button" |
||||||
|
style="@style/BigNumberButton" |
||||||
|
android:layout_width="0dip" |
||||||
|
android:layout_height="wrap_content" |
||||||
|
android:layout_weight="1" |
||||||
|
android:text="6" |
||||||
|
tools:ignore="HardcodedText" /> |
||||||
|
|
||||||
|
<Button |
||||||
|
android:id="@+id/up7Button" |
||||||
|
style="@style/BigNumberButton" |
||||||
|
android:layout_width="0dip" |
||||||
|
android:layout_height="wrap_content" |
||||||
|
android:layout_weight="1" |
||||||
|
android:text="7" |
||||||
|
tools:ignore="HardcodedText" /> |
||||||
|
|
||||||
|
<Button |
||||||
|
android:id="@+id/up8Button" |
||||||
|
style="@style/BigNumberButton" |
||||||
|
android:layout_width="0dip" |
||||||
|
android:layout_height="wrap_content" |
||||||
|
android:layout_weight="1" |
||||||
|
android:text="8" |
||||||
|
tools:ignore="HardcodedText" /> |
||||||
|
|
||||||
|
<Button |
||||||
|
android:id="@+id/up9Button" |
||||||
|
style="@style/BigNumberButton" |
||||||
|
android:layout_width="0dip" |
||||||
|
android:layout_height="wrap_content" |
||||||
|
android:layout_weight="1" |
||||||
|
android:text="9" |
||||||
|
tools:ignore="HardcodedText" /> |
||||||
|
|
||||||
|
<Button |
||||||
|
android:id="@+id/up0Button" |
||||||
|
style="@style/BigNumberButton" |
||||||
|
android:layout_width="0dip" |
||||||
|
android:layout_height="wrap_content" |
||||||
|
android:layout_weight="1" |
||||||
|
android:text="0" |
||||||
|
tools:ignore="HardcodedText" /> |
||||||
|
</LinearLayout> |
||||||
|
|
||||||
|
</LinearLayout> |
@ -0,0 +1,103 @@ |
|||||||
|
package org.transdroid.core.gui.navigation; |
||||||
|
|
||||||
|
import org.transdroid.core.R; |
||||||
|
|
||||||
|
import android.annotation.TargetApi; |
||||||
|
import android.app.AlertDialog; |
||||||
|
import android.app.Dialog; |
||||||
|
import android.content.DialogInterface; |
||||||
|
import android.content.DialogInterface.OnClickListener; |
||||||
|
import android.os.Bundle; |
||||||
|
import android.support.v4.app.DialogFragment; |
||||||
|
import android.view.View; |
||||||
|
import android.widget.Button; |
||||||
|
import android.widget.TextView; |
||||||
|
|
||||||
|
/** |
||||||
|
* A dialog fragment that allow picking of maximum download and upload transfer rates as well as the resetting of these |
||||||
|
* values. |
||||||
|
* @author Eric Kok |
||||||
|
*/ |
||||||
|
public class SetTransferRatesDialog extends DialogFragment { |
||||||
|
|
||||||
|
private OnRatesPickedListener onRatesPicked; |
||||||
|
private TextView maxSpeedDown, maxSpeedUp; |
||||||
|
|
||||||
|
public SetTransferRatesDialog() { |
||||||
|
setRetainInstance(true); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Sets the callback for results in this dialog (with newly selected values or a reset). |
||||||
|
* @param onRatesPicked The event listener to this dialog |
||||||
|
* @return This dialog, for method chaining |
||||||
|
*/ |
||||||
|
public SetTransferRatesDialog setOnRatesPicked(OnRatesPickedListener onRatesPicked) { |
||||||
|
this.onRatesPicked = onRatesPicked; |
||||||
|
return this; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public Dialog onCreateDialog(Bundle savedInstanceState) { |
||||||
|
final View transferRatesContent = getActivity().getLayoutInflater().inflate(R.layout.dialog_transferrates, |
||||||
|
null, false); |
||||||
|
maxSpeedDown = (TextView) transferRatesContent.findViewById(R.id.maxspeeddown_text); |
||||||
|
maxSpeedUp = (TextView) transferRatesContent.findViewById(R.id.maxspeedup_text); |
||||||
|
bindButtons(transferRatesContent, maxSpeedDown, R.id.down1Button, R.id.down2Button, R.id.down3Button, |
||||||
|
R.id.down4Button, R.id.down5Button, R.id.down6Button, R.id.down7Button, R.id.down8Button, |
||||||
|
R.id.down9Button, R.id.down0Button); |
||||||
|
bindButtons(transferRatesContent, maxSpeedUp, R.id.up1Button, R.id.up2Button, R.id.up3Button, R.id.up4Button, |
||||||
|
R.id.up5Button, R.id.up6Button, R.id.up7Button, R.id.up8Button, R.id.up9Button, R.id.up0Button); |
||||||
|
return new AlertDialog.Builder(getActivity()).setTitle(R.string.status_maxspeed).setView(transferRatesContent) |
||||||
|
.setPositiveButton(android.R.string.ok, new OnClickListener() { |
||||||
|
@Override |
||||||
|
public void onClick(DialogInterface dialog, int which) { |
||||||
|
int maxDown = -1, maxUp = -1; |
||||||
|
try { |
||||||
|
maxDown = Integer.parseInt(maxSpeedDown.getText().toString()); |
||||||
|
maxUp = Integer.parseInt(maxSpeedUp.getText().toString()); |
||||||
|
} catch (NumberFormatException e) { |
||||||
|
} |
||||||
|
if (maxDown <= 0 || maxUp <= 0) { |
||||||
|
onRatesPicked.onInvalidNumber(); |
||||||
|
} |
||||||
|
onRatesPicked.onRatesPicked(maxDown, maxUp); |
||||||
|
} |
||||||
|
}).setNeutralButton(R.string.status_maxspeed_reset, new OnClickListener() { |
||||||
|
@Override |
||||||
|
public void onClick(DialogInterface dialog, int which) { |
||||||
|
onRatesPicked.resetRates(); |
||||||
|
} |
||||||
|
}).setNegativeButton(android.R.string.cancel, null).create(); |
||||||
|
} |
||||||
|
|
||||||
|
private void bindButtons(View transferRatesContent, View numberView, int... buttonResource) { |
||||||
|
for (int i : buttonResource) { |
||||||
|
// Keep the relevant number as reference in the view tag and bind the click listerner
|
||||||
|
transferRatesContent.findViewById(i).setTag(numberView); |
||||||
|
transferRatesContent.findViewById(i).setOnClickListener(onNumberClicked); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
private android.view.View.OnClickListener onNumberClicked = new android.view.View.OnClickListener() { |
||||||
|
@Override |
||||||
|
public void onClick(View v) { |
||||||
|
// Append the text contents of the button itself as text to the current number (as reference in the view's
|
||||||
|
// tag)
|
||||||
|
TextView numberView = (TextView) v.getTag(); |
||||||
|
if (numberView.getText().equals("-")) |
||||||
|
numberView.setText(""); |
||||||
|
numberView.setText(numberView.getText().toString() + ((Button) v).getText().toString()); |
||||||
|
} |
||||||
|
}; |
||||||
|
|
||||||
|
/** |
||||||
|
* Listener interface to the user having picked or wanting to resets the current maximum transfer speeds; |
||||||
|
*/ |
||||||
|
public interface OnRatesPickedListener { |
||||||
|
public void onRatesPicked(int maxDownloadSpeed, int maxUploadSpeed); |
||||||
|
public void resetRates(); |
||||||
|
public void onInvalidNumber(); |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -1,6 +1,6 @@ |
|||||||
<?xml version="1.0" encoding="utf-8"?> |
<?xml version="1.0" encoding="utf-8"?> |
||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="100" android:versionName="4.2.0" package="com.actionbarsherlock"> |
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="100" android:versionName="4.2.0" package="com.actionbarsherlock"> |
||||||
|
|
||||||
<uses-sdk android:minSdkVersion="7" android:targetSdkVersion="16"/> |
<uses-sdk android:minSdkVersion="7" android:targetSdkVersion="18"/> |
||||||
|
|
||||||
</manifest> |
</manifest> |
||||||
|
Loading…
Reference in new issue