From 42649e02eabddc7edb62030b42a47e8060bcc1cf Mon Sep 17 00:00:00 2001 From: str4d <str4d@mail.i2p> Date: Fri, 6 Dec 2013 02:20:32 +0000 Subject: [PATCH] Replaced logo with status images, combined start and stop buttons --- res/drawable/start_router_icon.png | Bin 1938 -> 0 bytes res/drawable/stop_router_icon.png | Bin 1946 -> 0 bytes res/layout-land/fragment_main.xml | 56 ++++++++++++ res/layout/fragment_main.xml | 80 +++++++----------- res/values/strings.xml | 3 + .../android/router/fragment/MainFragment.java | 56 ++++-------- 6 files changed, 109 insertions(+), 86 deletions(-) delete mode 100644 res/drawable/start_router_icon.png delete mode 100644 res/drawable/stop_router_icon.png create mode 100644 res/layout-land/fragment_main.xml diff --git a/res/drawable/start_router_icon.png b/res/drawable/start_router_icon.png deleted file mode 100644 index 0fbe32818406471c6358d778d02605a4fc8dce3a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1938 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 Y0D~i}*sSzW{Qv*}07*qoM6N<$g1mB}9RL6T diff --git a/res/drawable/stop_router_icon.png b/res/drawable/stop_router_icon.png deleted file mode 100644 index 9253d673240423740ba66e0d9c62d6bb228ff7c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1946 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 diff --git a/res/layout-land/fragment_main.xml b/res/layout-land/fragment_main.xml new file mode 100644 index 000000000..882c0f6bd --- /dev/null +++ b/res/layout-land/fragment_main.xml @@ -0,0 +1,56 @@ +<?xml version="1.0" encoding="utf-8"?> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:orientation="horizontal" + android:baselineAligned="false" > + + <LinearLayout + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:orientation="vertical" > + + <ImageView + android:id="@+id/main_lights" + android:src="@drawable/routerled_r" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:scaleType="centerInside" + android:contentDescription="@string/desc_i2p_logo" /> + + <ToggleButton + android:id="@+id/router_onoff_button" + android:layout_width="match_parent" + android:layout_height="68dp" + android:textOff="@string/button_router_off" + android:textOn="@string/button_router_on" /> + </LinearLayout> + + <ScrollView + android:layout_width="0dp" + android:layout_height="fill_parent" + android:layout_weight="2" + android:fillViewport="true" + android:padding="10dp" + android:scrollbarStyle="outsideInset" > + + <LinearLayout + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:orientation="vertical" > + + <TextView + android:id="@+id/textView4" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@string/label_statistics" + android:textAppearance="?android:attr/textAppearanceLarge" /> + + <TextView + android:id="@+id/main_status_text" + android:layout_width="fill_parent" + android:layout_height="wrap_content" /> + </LinearLayout> + </ScrollView> +</LinearLayout> \ No newline at end of file diff --git a/res/layout/fragment_main.xml b/res/layout/fragment_main.xml index 695f74454..92df3c01d 100644 --- a/res/layout/fragment_main.xml +++ b/res/layout/fragment_main.xml @@ -1,63 +1,47 @@ <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" - > + android:orientation="vertical" > <ImageView - android:contentDescription="@string/desc_i2p_logo" + android:id="@+id/main_lights" android:layout_width="fill_parent" android:layout_height="wrap_content" - android:src="@drawable/i2plogo" /> + android:contentDescription="@string/desc_i2p_logo" + android:scaleType="centerInside" + android:src="@drawable/routerled_r" /> - <Button - android:id="@+id/router_start_button" + <ToggleButton + android:id="@+id/router_onoff_button" android:layout_width="match_parent" android:layout_height="68dp" - android:text="@string/action_router_start" - android:drawableLeft="@drawable/start_router_icon" /> + android:textOff="@string/button_router_off" + android:textOn="@string/button_router_on" /> - <Button - android:id="@+id/router_quit_button" - android:layout_width="match_parent" - android:layout_height="68dp" - android:text="@string/action_router_stop" - android:drawableLeft="@drawable/stop_router_icon" /> -<!-- -<Button - android:id="@+id/router_stop_button" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:text="OLD STOP" - android:drawableLeft="@drawable/stop_router_icon" /> ---> - -<ScrollView - android:layout_width="fill_parent" - android:layout_height="fill_parent" - android:fillViewport="true" - android:padding="10dp" - android:scrollbarStyle="outsideInset" - > -<LinearLayout - android:orientation="vertical" - android:layout_width="fill_parent" - android:layout_height="wrap_content" - > + <ScrollView + android:layout_width="fill_parent" + android:layout_height="fill_parent" + android:fillViewport="true" + android:padding="10dp" + android:scrollbarStyle="outsideInset" > - <TextView - android:id="@+id/textView4" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="@string/label_statistics" - android:textAppearance="?android:attr/textAppearanceLarge" /> + <LinearLayout + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:orientation="vertical" > - <TextView - android:id="@+id/main_status_text" - android:layout_width="fill_parent" - android:layout_height="wrap_content" /> + <TextView + android:id="@+id/textView4" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@string/label_statistics" + android:textAppearance="?android:attr/textAppearanceLarge" /> -</LinearLayout> -</ScrollView> -</LinearLayout> + <TextView + android:id="@+id/main_status_text" + android:layout_width="fill_parent" + android:layout_height="wrap_content" /> + </LinearLayout> + </ScrollView> +</LinearLayout> \ No newline at end of file diff --git a/res/values/strings.xml b/res/values/strings.xml index 061e3d296..18653b227 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -29,6 +29,9 @@ <string name="label_browse">Browse</string> <string name="label_graphs">Graphs</string> + <string name="button_router_off">Press to start I2P</string> + <string name="button_router_on">I2P is running (press to stop)</string> + <string name="drawer_open">Open nav</string> <string name="drawer_close">Close nav</string> <string name="action_search">Search</string> diff --git a/src/net/i2p/android/router/fragment/MainFragment.java b/src/net/i2p/android/router/fragment/MainFragment.java index 8dd16a920..374776390 100644 --- a/src/net/i2p/android/router/fragment/MainFragment.java +++ b/src/net/i2p/android/router/fragment/MainFragment.java @@ -1,12 +1,14 @@ package net.i2p.android.router.fragment; import android.app.Activity; +import android.graphics.drawable.AnimationDrawable; import android.os.Bundle; import android.os.Handler; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import android.widget.Button; +import android.widget.ToggleButton; +import android.widget.ImageView; import android.widget.TextView; import java.text.DecimalFormat; import net.i2p.android.router.R; @@ -78,32 +80,26 @@ public class MainFragment extends I2PFragmentBase { Bundle savedInstanceState) { View v = inflater.inflate(R.layout.fragment_main, container, false); - Button b; + final ImageView lightImage = (ImageView) v.findViewById(R.id.main_lights); + lightImage.setImageResource(R.drawable.routerled_r); - /* - * hidden, unused b = (Button) v.findViewById(R.id.router_stop_button); - * b.setOnClickListener(new View.OnClickListener() { public void - * onClick(View view) { RouterService svc = _routerService; if (svc != - * null && _isBound) { setPref(PREF_AUTO_START, false); - * svc.manualStop(); updateOneShot(); } } }); - */ - - b = (Button) v.findViewById(R.id.router_start_button); + ToggleButton b = (ToggleButton) v.findViewById(R.id.router_onoff_button); b.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { - _startPressed = true; - mCallback.onStartRouterClicked(); - updateOneShot(); - } - }); - - b = (Button) v.findViewById(R.id.router_quit_button); - b.setOnClickListener(new View.OnClickListener() { - - public void onClick(View view) { - if(mCallback.onStopRouterClicked()) { + boolean on = ((ToggleButton) view).isChecked(); + if (on) { + _startPressed = true; + lightImage.setImageResource(R.drawable.routerled_ry); + ((AnimationDrawable) lightImage.getDrawable()).start(); + mCallback.onStartRouterClicked(); updateOneShot(); + } else { + if(mCallback.onStopRouterClicked()) { + lightImage.setImageResource(R.drawable.routerled_ry); + ((AnimationDrawable) lightImage.getDrawable()).start(); + updateOneShot(); + } } } }); @@ -152,7 +148,6 @@ public class MainFragment extends I2PFragmentBase { private class OneShotUpdate implements Runnable { public void run() { - updateVisibility(); updateStatus(); } } @@ -163,7 +158,6 @@ public class MainFragment extends I2PFragmentBase { private final int delay = 1000; private final int toloop = delay / 500; public void run() { - updateVisibility(); if(counter++ % toloop == 0) { updateStatus(); } @@ -172,20 +166,6 @@ public class MainFragment extends I2PFragmentBase { } } - private void updateVisibility() { - boolean showStart = mCallback.shouldShowStart(); - Button start = (Button) getActivity().findViewById(R.id.router_start_button); - start.setVisibility(showStart ? View.VISIBLE : View.INVISIBLE); - - boolean showStop = mCallback.shouldShowStop(); - // Old stop but leave in memory. Always hide for now. - // Button stop = (Button) findViewById(R.id.router_stop_button); - // stop.setVisibility( /* showStop ? View.VISIBLE : */ View.INVISIBLE); - - Button quit = (Button) getActivity().findViewById(R.id.router_quit_button); - quit.setVisibility(showStop ? View.VISIBLE : View.INVISIBLE); - } - public boolean onBackPressed() { RouterContext ctx = getRouterContext(); // RouterService svc = _routerService; Which is better to use?! -- GitLab