Kore/app/src/main/java/org/xbmc/kore/ui/sections/hosts/AddHostActivity.java

168 lines
5.9 KiB
Java

/*
* Copyright 2015 Synced Synapse. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.xbmc.kore.ui.sections.hosts;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import androidx.appcompat.widget.Toolbar;
import androidx.fragment.app.Fragment;
import org.xbmc.kore.R;
import org.xbmc.kore.host.HostInfo;
import org.xbmc.kore.host.HostManager;
import org.xbmc.kore.ui.BaseActivity;
import org.xbmc.kore.ui.sections.remote.RemoteActivity;
/**
* Add host wizard.
* Controls the wizard steps fragments.
*/
public class AddHostActivity extends BaseActivity
implements AddHostFragmentWelcome.AddHostWelcomeListener,
AddHostFragmentZeroconf.AddHostZeroconfListener,
HostFragmentManualConfiguration.HostManualConfigurationListener,
AddHostFragmentFinish.AddHostFinishListener {
private Fragment previousFragment = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_host_wizard);
// Only load first fragment if we're starting the activity
if (savedInstanceState == null) {
AddHostFragmentWelcome firstStep = new AddHostFragmentWelcome();
getSupportFragmentManager()
.beginTransaction()
.add(R.id.fragment_container, firstStep)
.commit();
}
// setupActionBar();
// // Setup system bars and content padding
// setupSystemBarsColors();
// UIUtils.setPaddingForSystemBars(this, findViewById(android.R.id.content), true, true, true);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
// Respond to the action bar's Up/Home button
case android.R.id.home:
finish();
return true;
}
return super.onOptionsItemSelected(item);
}
private void setupActionBar() {
Toolbar toolbar = (Toolbar) findViewById(R.id.default_toolbar);
toolbar.setTitle(R.string.add_xbmc);
setSupportActionBar(toolbar);
}
/**
* Welcome fragment callbacks
*/
public void onAddHostWelcomeNext() {
switchToFragment(new AddHostFragmentZeroconf());
}
public void onAddHostWelcomeCancel() {
finish();
}
/**
* Search hosts fragment callbacks
*/
public void onAddHostZeroconfNoHost() {
HostFragmentManualConfiguration fragment = new HostFragmentManualConfiguration();
Bundle args = new Bundle();
args.putString(HostFragmentManualConfiguration.CANCEL_BUTTON_LABEL_ARG,
getString(R.string.previous));
fragment.setArguments(args);
switchToFragment(fragment);
}
public void onAddHostZeroconfFoundHost(HostInfo hostInfo) {
HostFragmentManualConfiguration fragment = new HostFragmentManualConfiguration();
Bundle args = new Bundle();
if (hostInfo != null) {
args.putString(HostFragmentManualConfiguration.HOST_NAME, hostInfo.getName());
args.putString(HostFragmentManualConfiguration.HOST_ADDRESS, hostInfo.getAddress());
args.putInt(HostFragmentManualConfiguration.HOST_HTTP_PORT, hostInfo.getHttpPort());
args.putInt(HostFragmentManualConfiguration.HOST_TCP_PORT, hostInfo.getTcpPort());
args.putString(HostFragmentManualConfiguration.HOST_USERNAME, hostInfo.getUsername());
args.putString(HostFragmentManualConfiguration.HOST_PASSWORD, hostInfo.getPassword());
args.putInt(HostFragmentManualConfiguration.HOST_PROTOCOL, hostInfo.getProtocol());
// Ignore Mac Address and Wol Port
args.putBoolean(HostFragmentManualConfiguration.HOST_USE_EVENT_SERVER, hostInfo.getUseEventServer());
args.putInt(HostFragmentManualConfiguration.HOST_EVENT_SERVER_PORT, hostInfo.getEventServerPort());
// Send this fragment straight to test
args.putBoolean(HostFragmentManualConfiguration.GO_STRAIGHT_TO_TEST, true);
fragment.setArguments(args);
}
args.putString(HostFragmentManualConfiguration.CANCEL_BUTTON_LABEL_ARG,
getString(R.string.previous));
fragment.setArguments(args);
switchToFragment(fragment);
}
/**
* Manual configuration/review fragment callbacks
*/
public void onHostManualConfigurationNext(HostInfo hostInfo) {
HostManager hostManager = HostManager.getInstance(this);
HostInfo newHostInfo = hostManager.addHost(hostInfo);
hostManager.switchHost(newHostInfo);
switchToFragment(new AddHostFragmentFinish());
}
public void onHostManualConfigurationCancel() {
switchToFragment(new AddHostFragmentZeroconf());
}
/**
* Finish fragment callbacks
*/
public void onAddHostFinish() {
Intent intent = new Intent(this, RemoteActivity.class)
.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
}
private void switchToFragment(Fragment fragment) {
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.fragment_container, fragment)
.commit();
}
}