/* * Copyright (C) 2013 - 2014 Alexander "Evisceration" Martinz * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. * */ package org.namelessrom.devicecontrol.modules.tools; import android.content.Intent; import android.os.Bundle; import android.os.Handler; import android.preference.Preference; import org.namelessrom.devicecontrol.DeviceConstants; import org.namelessrom.devicecontrol.R; import org.namelessrom.devicecontrol.models.WebServerConfig; import org.namelessrom.devicecontrol.net.NetworkInfo; import org.namelessrom.devicecontrol.services.WebServerService; import org.namelessrom.devicecontrol.preferences.CustomEditTextPreference; import org.namelessrom.devicecontrol.preferences.CustomTogglePreference; import org.namelessrom.devicecontrol.views.AttachPreferenceFragment; import org.namelessrom.devicecontrol.utils.AppHelper; import org.namelessrom.devicecontrol.utils.Utils; public class WirelessFileManagerFragment extends AttachPreferenceFragment implements Preference.OnPreferenceChangeListener, Preference.OnPreferenceClickListener { private CustomTogglePreference mWirelessFileManager; private CustomTogglePreference mBrowseRoot; private CustomEditTextPreference mPort; private CustomTogglePreference mUseAuth; private CustomEditTextPreference mUsername; private CustomEditTextPreference mPassword; private final Handler mHandler = new Handler(); private WebServerConfig webServerConfig; @Override protected int getFragmentId() { return DeviceConstants.ID_TOOLS_WIRELESS_FM; } @Override public void onResume() { super.onResume(); if (mWirelessFileManager != null) { updateWebServerPreference(); } } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.tools_wireless_file_manager); webServerConfig = WebServerConfig.get(); mWirelessFileManager = (CustomTogglePreference) findPreference("wireless_file_manager"); updateWebServerPreference(); mWirelessFileManager.setOnPreferenceClickListener(this); mBrowseRoot = (CustomTogglePreference) findPreference(WebServerConfig.ROOT); mBrowseRoot.setChecked(webServerConfig.root); mBrowseRoot.setOnPreferenceChangeListener(this); mPort = (CustomEditTextPreference) findPreference(WebServerConfig.PORT); mPort.setSummary(String.valueOf(webServerConfig.port)); mPort.setText(String.valueOf(webServerConfig.port)); mPort.setOnPreferenceChangeListener(this); mUseAuth = (CustomTogglePreference) findPreference(WebServerConfig.USE_AUTH); mUseAuth.setChecked(webServerConfig.useAuth); mUseAuth.setOnPreferenceChangeListener(this); mUsername = (CustomEditTextPreference) findPreference(WebServerConfig.USERNAME); mUsername.setSummary(webServerConfig.username); mUsername.setText(webServerConfig.username); mUsername.setOnPreferenceChangeListener(this); mPassword = (CustomEditTextPreference) findPreference(WebServerConfig.PASSWORD); mPassword.setSummary("******"); mPassword.setText(webServerConfig.password); mPassword.setOnPreferenceChangeListener(this); } @Override public boolean onPreferenceChange(final Preference preference, final Object o) { if (mBrowseRoot == preference) { webServerConfig.root = (Boolean) o; webServerConfig.save(); return true; } else if (mPort == preference) { final String value = String.valueOf(o); webServerConfig.port = Utils.parseInt(value, 8080); webServerConfig.save(); mPort.setText(value); mPort.setSummary(value); return true; } else if (mUseAuth == preference) { webServerConfig.useAuth = (Boolean) o; webServerConfig.save(); return true; } else if (mUsername == preference) { final String value = String.valueOf(o); webServerConfig.username = value; webServerConfig.save(); mUsername.setText(value); mUsername.setSummary(value); return true; } else if (mPassword == preference) { final String value = String.valueOf(o); webServerConfig.password = value; webServerConfig.save(); mPassword.setText(value); mPassword.setSummary("******"); return true; } return false; } @Override public boolean onPreferenceClick(final Preference preference) { if (mWirelessFileManager == preference) { final Intent i = new Intent(getActivity(), WebServerService.class); if (AppHelper.isServiceRunning(WebServerService.class.getName())) { i.setAction(WebServerService.ACTION_STOP); mWirelessFileManager.setSummary(R.string.web_server_not_running); } else { i.setAction(WebServerService.ACTION_START); i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); } getActivity().startService(i); mWirelessFileManager.setEnabled(false); mHandler.postDelayed(new Runnable() { @Override public void run() { if (mWirelessFileManager != null) { updateWebServerPreference(); mWirelessFileManager.setEnabled(true); } } }, 1000); return true; } return false; } public void updateWebServerPreference() { final boolean isRunning = AppHelper.isServiceRunning(WebServerService.class.getName()); final String text; if (isRunning) { final String ip = NetworkInfo.getAnyIpAddress(); final String port = String.valueOf(WebServerConfig.get().port); text = getString(R.string.web_server_running, String.format("http://%s:%s", ip, port)); } else { text = getString(R.string.web_server_not_running); } mWirelessFileManager.setSummary(text); mWirelessFileManager.setChecked(isRunning); } }