Skip to content

Commit 6a39562

Browse files
author
davidgraeff
committed
Implement missing functionality, refactor package structure
* New package "datastructure" and "network" * Add icons for refresh,show hidden, hide hidden * Outlets can be renamed, can be hidden, can be reordered * Scenes can be created again (fix) * New concept for widgets * Fix lint warnings Still missing: * Save scenes and configured devices as json files * Renamed outlets are not persistent (json files necessary) * NFC (json files necessary) * Widgets do not work * Device test before saving as configured device # Please enter the commit message for your changes. Lines starting # with '#' will be ignored, and an empty message aborts the commit. # Auf Zweig master # Your branch is up-to-date with 'origin/master'. # # zum Eintragen bereitgestellte Änderungen: # gelöscht: .classpath # neue Datei: .gradle/1.9/taskArtifacts/cache.properties # neue Datei: .gradle/1.9/taskArtifacts/cache.properties.lock # neue Datei: .gradle/1.9/taskArtifacts/fileHashes.bin # neue Datei: .gradle/1.9/taskArtifacts/fileSnapshots.bin # neue Datei: .gradle/1.9/taskArtifacts/outputFileStates.bin # neue Datei: .gradle/1.9/taskArtifacts/taskArtifacts.bin # neue Datei: .idea/.name # neue Datei: .idea/compiler.xml # neue Datei: .idea/copyright/profiles_settings.xml # neue Datei: .idea/encodings.xml # neue Datei: .idea/gradle.xml # neue Datei: .idea/libraries/net_simonvt_menudrawer_menudrawer_3_0_4.xml # neue Datei: .idea/libraries/support_v4_19_0_0.xml # neue Datei: .idea/misc.xml # neue Datei: .idea/modules.xml # neue Datei: .idea/scopes/scope_settings.xml # neue Datei: .idea/vcs.xml # neue Datei: .idea/workspace.xml # gelöscht: .project # gelöscht: .settings/org.eclipse.jdt.core.prefs # neue Datei: Android-NetPowerctrl12.iml # neue Datei: app/app.apk # neue Datei: app/app.iml # neue Datei: app/build.gradle # umbenannt: AndroidManifest.xml -> app/src/main/AndroidManifest.xml # umbenannt: src/oly/netpowerctrl/devicecontrol/DeviceControlActivity.java -> app/src/main/java/oly/netpowerctrl/devicecontrol/DeviceControlActivity.java # neue Datei: app/src/main/java/oly/netpowerctrl/listadapter/AdapterUpdateManager.java # umbenannt: src/oly/netpowerctrl/listadapter/DeviceListAdapter.java -> app/src/main/java/oly/netpowerctrl/listadapter/DeviceListAdapter.java # neue Datei: app/src/main/java/oly/netpowerctrl/listadapter/DrawerAdapter.java # umbenannt: src/oly/netpowerctrl/listadapter/GroupListAdapter.java -> app/src/main/java/oly/netpowerctrl/listadapter/GroupListAdapter.java # umbenannt: src/oly/netpowerctrl/listadapter/OutledListAdapter.java -> app/src/main/java/oly/netpowerctrl/listadapter/OutledListAdapter.java # umbenannt: src/oly/netpowerctrl/listadapter/OutledSwitchListAdapter.java -> app/src/main/java/oly/netpowerctrl/listadapter/OutledSwitchListAdapter.java # neue Datei: app/src/main/java/oly/netpowerctrl/main/AboutDialog.java # neue Datei: app/src/main/java/oly/netpowerctrl/main/ConfiguredDevicesListFragment.java # neue Datei: app/src/main/java/oly/netpowerctrl/main/GroupListFragment.java # neue Datei: app/src/main/java/oly/netpowerctrl/main/HelpFragment.java # neue Datei: app/src/main/java/oly/netpowerctrl/main/NetpowerctrlActivity.java # neue Datei: app/src/main/java/oly/netpowerctrl/main/NewDevicesListFragment.java # neue Datei: app/src/main/java/oly/netpowerctrl/main/OutletsListFragment.java # neue Datei: app/src/main/java/oly/netpowerctrl/preferences/DevicePreferencesDialog.java # umbenannt: src/oly/netpowerctrl/preferences/PreferencesActivity.java -> app/src/main/java/oly/netpowerctrl/preferences/PreferencesFragment.java # umbenannt: src/oly/netpowerctrl/service/DeviceQuery.java -> app/src/main/java/oly/netpowerctrl/service/DeviceQuery.java # umbenannt: src/oly/netpowerctrl/service/DiscoveryThread.java -> app/src/main/java/oly/netpowerctrl/service/DiscoveryThread.java # umbenannt: src/oly/netpowerctrl/service/NetpowerctrlService.java -> app/src/main/java/oly/netpowerctrl/service/NetpowerctrlService.java # umbenannt: src/oly/netpowerctrl/service/ShortcutCreatorActivity.java -> app/src/main/java/oly/netpowerctrl/service/ShortcutCreatorActivity.java # umbenannt: src/oly/netpowerctrl/service/ShortcutExecutionActivity.java -> app/src/main/java/oly/netpowerctrl/service/ShortcutExecutionActivity.java # umbenannt: src/oly/netpowerctrl/utils/AfterSentHandler.java -> app/src/main/java/oly/netpowerctrl/utils/AfterSentHandler.java # umbenannt: src/oly/netpowerctrl/utils/DeviceConfigureEvent.java -> app/src/main/java/oly/netpowerctrl/utils/DeviceConfigureEvent.java # umbenannt: src/oly/netpowerctrl/utils/DeviceInfo.java -> app/src/main/java/oly/netpowerctrl/utils/DeviceInfo.java # umbenannt: src/oly/netpowerctrl/utils/GreenFlasher.java -> app/src/main/java/oly/netpowerctrl/utils/GreenFlasher.java # umbenannt: src/oly/netpowerctrl/utils/OutletCommand.java -> app/src/main/java/oly/netpowerctrl/utils/OutletCommand.java # umbenannt: src/oly/netpowerctrl/utils/OutletCommandGroup.java -> app/src/main/java/oly/netpowerctrl/utils/OutletCommandGroup.java # umbenannt: src/oly/netpowerctrl/utils/OutletInfo.java -> app/src/main/java/oly/netpowerctrl/utils/OutletInfo.java # umbenannt: src/oly/netpowerctrl/utils/SharedPrefs.java -> app/src/main/java/oly/netpowerctrl/utils/SharedPrefs.java # umbenannt: src/oly/netpowerctrl/utils/UDPSendToDevice.java -> app/src/main/java/oly/netpowerctrl/utils/UDPSendToDevice.java # umbenannt: src/oly/netpowerctrl/widget/DeviceWidgetProvider.java -> app/src/main/java/oly/netpowerctrl/widget/DeviceWidgetProvider.java # umbenannt: src/oly/netpowerctrl/widget/WidgetConfig.java -> app/src/main/java/oly/netpowerctrl/widget/WidgetConfig.java # neue Datei: app/src/main/res/drawable-hdpi/action_search.png # neue Datei: app/src/main/res/drawable-hdpi/drawer_shadow.9.png # neue Datei: app/src/main/res/drawable-hdpi/ic_drawer.png # umbenannt: res/drawable-hdpi/ic_menu_add.png -> app/src/main/res/drawable-hdpi/ic_menu_add.png # umbenannt: res/drawable-hdpi/ic_menu_close_clear_cancel.png -> app/src/main/res/drawable-hdpi/ic_menu_close_clear_cancel.png # umbenannt: res/drawable-hdpi/ic_menu_delete.png -> app/src/main/res/drawable-hdpi/ic_menu_delete.png # umbenannt: res/drawable-hdpi/ic_menu_edit.png -> app/src/main/res/drawable-hdpi/ic_menu_edit.png # umbenannt: res/drawable-hdpi/ic_menu_info_details.png -> app/src/main/res/drawable-hdpi/ic_menu_info_details.png # umbenannt: res/drawable-hdpi/ic_menu_preferences.png -> app/src/main/res/drawable-hdpi/ic_menu_preferences.png # umbenannt: res/drawable-hdpi/ic_menu_refresh.png -> app/src/main/res/drawable-hdpi/ic_menu_refresh.png # neue Datei: app/src/main/res/drawable-hdpi/md__category_background.png # umbenannt: res/drawable-hdpi/netpowerctrl.png -> app/src/main/res/drawable-hdpi/netpowerctrl.png # umbenannt: res/drawable-hdpi/perm_group_network.png -> app/src/main/res/drawable-hdpi/perm_group_network.png # umbenannt: res/drawable-hdpi/widget.png -> app/src/main/res/drawable-hdpi/widget.png # umbenannt: res/drawable-ldpi/ic_menu_add.png -> app/src/main/res/drawable-ldpi/ic_menu_add.png # umbenannt: res/drawable-ldpi/ic_menu_close_clear_cancel.png -> app/src/main/res/drawable-ldpi/ic_menu_close_clear_cancel.png # umbenannt: res/drawable-ldpi/ic_menu_delete.png -> app/src/main/res/drawable-ldpi/ic_menu_delete.png # umbenannt: res/drawable-ldpi/ic_menu_edit.png -> app/src/main/res/drawable-ldpi/ic_menu_edit.png # umbenannt: res/drawable-ldpi/ic_menu_info_details.png -> app/src/main/res/drawable-ldpi/ic_menu_info_details.png # umbenannt: res/drawable-ldpi/ic_menu_preferences.png -> app/src/main/res/drawable-ldpi/ic_menu_preferences.png # umbenannt: res/drawable-ldpi/ic_menu_refresh.png -> app/src/main/res/drawable-ldpi/ic_menu_refresh.png # umbenannt: res/drawable-ldpi/netpowerctrl.png -> app/src/main/res/drawable-ldpi/netpowerctrl.png # umbenannt: res/drawable-ldpi/perm_group_network.png -> app/src/main/res/drawable-ldpi/perm_group_network.png # umbenannt: res/drawable-ldpi/widget.png -> app/src/main/res/drawable-ldpi/widget.png # neue Datei: app/src/main/res/drawable-mdpi/action_search.png # neue Datei: app/src/main/res/drawable-mdpi/drawer_shadow.9.png # neue Datei: app/src/main/res/drawable-mdpi/ic_drawer.png # umbenannt: res/drawable-mdpi/ic_menu_add.png -> app/src/main/res/drawable-mdpi/ic_menu_add.png # umbenannt: res/drawable-mdpi/ic_menu_close_clear_cancel.png -> app/src/main/res/drawable-mdpi/ic_menu_close_clear_cancel.png # umbenannt: res/drawable-mdpi/ic_menu_delete.png -> app/src/main/res/drawable-mdpi/ic_menu_delete.png # umbenannt: res/drawable-mdpi/ic_menu_edit.png -> app/src/main/res/drawable-mdpi/ic_menu_edit.png # umbenannt: res/drawable-mdpi/ic_menu_info_details.png -> app/src/main/res/drawable-mdpi/ic_menu_info_details.png # umbenannt: res/drawable-mdpi/ic_menu_preferences.png -> app/src/main/res/drawable-mdpi/ic_menu_preferences.png # umbenannt: res/drawable-mdpi/ic_menu_refresh.png -> app/src/main/res/drawable-mdpi/ic_menu_refresh.png # umbenannt: res/drawable-mdpi/netpowerctrl.png -> app/src/main/res/drawable-mdpi/netpowerctrl.png # umbenannt: res/drawable-mdpi/perm_group_network.png -> app/src/main/res/drawable-mdpi/perm_group_network.png # umbenannt: res/drawable-mdpi/widget.png -> app/src/main/res/drawable-mdpi/widget.png # neue Datei: app/src/main/res/drawable-xhdpi/action_search.png # neue Datei: app/src/main/res/drawable-xhdpi/drawer_shadow.9.png # neue Datei: app/src/main/res/drawable-xhdpi/ic_drawer.png # umbenannt: res/drawable-xhdpi/ic_menu_add.png -> app/src/main/res/drawable-xhdpi/ic_menu_add.png # umbenannt: res/drawable-xhdpi/ic_menu_close_clear_cancel.png -> app/src/main/res/drawable-xhdpi/ic_menu_close_clear_cancel.png # umbenannt: res/drawable-xhdpi/ic_menu_delete.png -> app/src/main/res/drawable-xhdpi/ic_menu_delete.png # umbenannt: res/drawable-xhdpi/ic_menu_edit.png -> app/src/main/res/drawable-xhdpi/ic_menu_edit.png # umbenannt: res/drawable-xhdpi/ic_menu_info_details.png -> app/src/main/res/drawable-xhdpi/ic_menu_info_details.png # umbenannt: res/drawable-xhdpi/ic_menu_preferences.png -> app/src/main/res/drawable-xhdpi/ic_menu_preferences.png # umbenannt: res/drawable-xhdpi/ic_menu_refresh.png -> app/src/main/res/drawable-xhdpi/ic_menu_refresh.png # umbenannt: res/drawable-xhdpi/netpowerctrl.png -> app/src/main/res/drawable-xhdpi/netpowerctrl.png # umbenannt: res/drawable-xhdpi/perm_group_network.png -> app/src/main/res/drawable-xhdpi/perm_group_network.png # umbenannt: res/drawable-xhdpi/widget.png -> app/src/main/res/drawable-xhdpi/widget.png # umbenannt: res/drawable/outlet_bg.png -> app/src/main/res/drawable/outlet_bg.png # umbenannt: res/layout/about.xml -> app/src/main/res/layout/about.xml # neue Datei: app/src/main/res/layout/activity_main.xml # umbenannt: res/layout/device_control.xml -> app/src/main/res/layout/device_control.xml # umbenannt: res/layout/device_list_item.xml -> app/src/main/res/layout/device_list_item.xml # neue Datei: app/src/main/res/layout/drawer_list_header.xml # neue Datei: app/src/main/res/layout/drawer_list_item.xml # neue Datei: app/src/main/res/layout/fragment_item_grid.xml # neue Datei: app/src/main/res/layout/fragment_item_list.xml # neue Datei: app/src/main/res/layout/fragment_planet.xml # umbenannt: res/layout/group_list_item.xml -> app/src/main/res/layout/group_list_item.xml # neue Datei: app/src/main/res/layout/main_activity.xml # umbenannt: res/layout/outlet_config.xml -> app/src/main/res/layout/outlet_config.xml # umbenannt: res/layout/outlet_config_item.xml -> app/src/main/res/layout/outlet_config_item.xml # umbenannt: res/layout/outlet_list_item.xml -> app/src/main/res/layout/outlet_list_item.xml # umbenannt: res/layout/outlet_list_switch.xml -> app/src/main/res/layout/outlet_list_switch.xml # umbenannt: res/layout/shortcut_activity.xml -> app/src/main/res/layout/shortcut_activity.xml # umbenannt: res/layout/widget.xml -> app/src/main/res/layout/widget.xml # neue Datei: app/src/main/res/menu/configured_device.xml # umbenannt: res/menu/configured_device_menu.xml -> app/src/main/res/menu/configured_device_item.xml # neue Datei: app/src/main/res/menu/device_preferences.xml # neue Datei: app/src/main/res/menu/outlets.xml # neue Datei: app/src/main/res/menu/scenes.xml # neue Datei: app/src/main/res/menu/unconfigured_device.xml # umbenannt: res/raw/about.txt -> app/src/main/res/raw-de/about.txt # neue Datei: app/src/main/res/raw-de/help.txt # neue Datei: app/src/main/res/raw/about.txt # neue Datei: app/src/main/res/raw/help.txt # umbenannt: res/values-de/strings.xml -> app/src/main/res/values-de/strings.xml # neue Datei: app/src/main/res/values-large/refs.xml # neue Datei: app/src/main/res/values-sw600dp/refs.xml # umbenannt: res/values-v14/dimens.xml -> app/src/main/res/values-v14/dimens.xml # umbenannt: res/values-v14/theme.xml -> app/src/main/res/values-v14/theme.xml # umbenannt: res/values/dimens.xml -> app/src/main/res/values/dimens.xml # neue Datei: app/src/main/res/values/refs.xml # umbenannt: res/values/resources.xml -> app/src/main/res/values/resources.xml # umbenannt: res/values/strings.xml -> app/src/main/res/values/strings.xml # neue Datei: app/src/main/res/values/theme.xml # umbenannt: res/xml/appwidget_provider.xml -> app/src/main/res/xml/appwidget_provider.xml # umbenannt: res/xml/device_preferences.xml -> app/src/main/res/xml/device_preferences.xml # umbenannt: res/xml/preferences.xml -> app/src/main/res/xml/preferences.xml # neue Datei: build.gradle # neue Datei: gradle/wrapper/gradle-wrapper.jar # neue Datei: gradle/wrapper/gradle-wrapper.properties # neue Datei: gradlew # neue Datei: gradlew.bat # gelöscht: libs/android-support-v4.jar # neue Datei: local.properties # gelöscht: project.properties # gelöscht: res/layout/main_activity.xml # gelöscht: res/menu/unconfigured_device_menu.xml # gelöscht: res/values/theme.xml # neue Datei: settings.gradle # gelöscht: src/oly/netpowerctrl/main/AboutDialog.java # gelöscht: src/oly/netpowerctrl/main/NetpowerctrlActivity.java # gelöscht: src/oly/netpowerctrl/outletconfig/OutletConfig.java # gelöscht: src/oly/netpowerctrl/outletconfig/OutletConfigAdapter.java # gelöscht: src/oly/netpowerctrl/preferences/DevicePreferencesActivity.java # umbenannt: res/raw/make_drawables.sh -> tools/make_drawables.sh # umbenannt: res/raw/outlet.svg -> tools/outlet.svg # umbenannt: res/raw/outlet_bg.svg -> tools/outlet_bg.svg # umbenannt: res/raw/widget.svg -> tools/widget.svg # # Änderungen, die nicht zum Eintragen bereitgestellt sind: # geändert: .idea/workspace.xml # # Nicht überwachte Dateien: # app/build/ #
1 parent 4b513df commit 6a39562

File tree

60 files changed

+2627
-2837
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

60 files changed

+2627
-2837
lines changed

.idea/workspace.xml

Lines changed: 561 additions & 388 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/src/main/AndroidManifest.xml

Lines changed: 51 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -2,99 +2,83 @@
22
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
33
package="oly.netpowerctrl"
44
android:versionCode="4"
5-
android:versionName="1.3" >
5+
android:versionName="1.3">
66

7-
<uses-sdk android:minSdkVersion="16"
8-
android:targetSdkVersion="17" />
9-
10-
<uses-permission android:name="android.permission.INTERNET"/>
11-
<uses-permission android:name="android.permission.NFC"/>
7+
<uses-sdk
8+
android:minSdkVersion="16"
9+
android:targetSdkVersion="17" />
10+
11+
<uses-permission android:name="android.permission.INTERNET" />
12+
<uses-permission android:name="android.permission.NFC" />
1213

1314
<application
1415
android:icon="@drawable/netpowerctrl"
15-
android:label="@string/app_name" android:allowBackup="true">
16+
android:label="@string/app_name"
17+
android:allowBackup="true">
1618
<activity
1719
android:name="oly.netpowerctrl.main.NetpowerctrlActivity"
1820
android:label="@string/app_name"
19-
android:launchMode="singleInstance"
21+
android:launchMode="singleTask"
2022
android:configChanges="keyboardHidden|orientation|screenSize"
2123
android:theme="@style/Theme.CustomLightTheme">
2224
<intent-filter>
2325
<action android:name="android.intent.action.MAIN" />
2426
<category android:name="android.intent.category.LAUNCHER" />
2527
</intent-filter>
2628
</activity>
27-
28-
<activity
29-
android:name="oly.netpowerctrl.preferences.DevicePreferencesActivity"
30-
android:configChanges="keyboardHidden|orientation|screenSize">
31-
</activity>
32-
33-
<activity
34-
android:name="oly.netpowerctrl.preferences.PreferencesActivity"
35-
android:configChanges="keyboardHidden|orientation|screenSize">
36-
</activity>
37-
29+
3830
<activity
39-
android:name="oly.netpowerctrl.outletconfig.OutletConfig"
40-
android:configChanges="keyboardHidden|orientation|screenSize"
41-
android:windowSoftInputMode="adjustPan"> <!-- needed for focusable EditText inside ListView -->
42-
</activity>
43-
44-
<activity
45-
android:name="oly.netpowerctrl.devicecontrol.DeviceControlActivity"
46-
android:configChanges="keyboardHidden|orientation|screenSize"
47-
android:theme="@style/Theme.CustomLightTheme">
48-
</activity>
49-
50-
<activity
51-
android:name="oly.netpowerctrl.service.ShortcutExecutionActivity"
31+
android:name=".shortcut.ShortcutExecutionActivity"
5232
android:label="@string/app_name"
5333
android:icon="@drawable/netpowerctrl"
5434
android:theme="@style/Theme.Transparent"
5535
android:exported="true">
56-
<intent-filter>
57-
<action android:name="android.intent.action.MAIN"/>
58-
</intent-filter>
36+
<intent-filter>
37+
<action android:name="android.intent.action.MAIN" />
38+
</intent-filter>
5939
</activity>
6040

61-
<activity android:name="oly.netpowerctrl.widget.WidgetConfig">
62-
<intent-filter>
63-
<action android:name="android.appwidget.action.APPWIDGET_CONFIGURE"/>
64-
</intent-filter>
65-
</activity>
66-
67-
<activity
68-
android:icon="@drawable/netpowerctrl"
69-
android:label="@string/app_name"
70-
android:name="oly.netpowerctrl.service.ShortcutCreatorActivity">
71-
<intent-filter>
72-
<action android:name="android.intent.action.CREATE_SHORTCUT" />
73-
<category android:name="android.intent.category.DEFAULT" />
74-
</intent-filter>
75-
</activity>
41+
<activity
42+
android:name="oly.netpowerctrl.widget.WidgetConfig"
43+
android:label="@string/app_name"
44+
android:theme="@style/Theme.CustomLightTheme">
45+
<intent-filter>
46+
<action android:name="android.appwidget.action.APPWIDGET_CONFIGURE" />
47+
</intent-filter>
48+
</activity>
49+
50+
<activity
51+
android:icon="@drawable/netpowerctrl"
52+
android:label="@string/app_name"
53+
android:launchMode="standard"
54+
android:theme="@style/Theme.CustomLightTheme"
55+
android:name=".shortcut.ShortcutCreatorActivity">
56+
<intent-filter>
57+
<action android:name="android.intent.action.CREATE_SHORTCUT" />
58+
<category android:name="android.intent.category.DEFAULT" />
59+
</intent-filter>
60+
</activity>
7661

7762
<receiver
78-
android:icon="@drawable/netpowerctrl"
79-
android:label="@string/app_name"
80-
android:name="oly.netpowerctrl.widget.DeviceWidgetProvider" >
81-
<intent-filter >
82-
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
83-
</intent-filter>
84-
85-
<meta-data
86-
android:name="android.appwidget.provider"
87-
android:resource="@xml/appwidget_provider" />
88-
</receiver>
89-
90-
<service
63+
android:icon="@drawable/netpowerctrl"
64+
android:label="@string/app_name"
65+
android:name="oly.netpowerctrl.widget.DeviceWidgetProvider">
66+
<intent-filter>
67+
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
68+
</intent-filter>
69+
70+
<meta-data
71+
android:name="android.appwidget.provider"
72+
android:resource="@xml/appwidget_provider" />
73+
</receiver>
74+
75+
<service
9176
android:label="@string/app_name"
9277
android:icon="@drawable/netpowerctrl"
9378
android:name="oly.netpowerctrl.service.NetpowerctrlService"
94-
android:permission="android.permission.INTERNET">
95-
</service>
79+
android:permission="android.permission.INTERNET" />
80+
81+
</application>
9682

97-
</application>
9883

99-
10084
</manifest>
Lines changed: 142 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,142 @@
1+
package oly.netpowerctrl.datastructure;
2+
3+
import android.content.Context;
4+
import android.os.Parcel;
5+
import android.os.Parcelable;
6+
7+
import java.util.ArrayList;
8+
import java.util.List;
9+
import java.util.UUID;
10+
11+
import oly.netpowerctrl.R;
12+
import oly.netpowerctrl.service.DeviceQuery;
13+
14+
// this class holds all the info about one device
15+
public class DeviceInfo implements Parcelable {
16+
17+
public UUID uuid;
18+
19+
public String DeviceName; // name of the device as reported by UDP or configured by the user
20+
public String HostName; // the hostname or ip address used to reach the device
21+
public String MacAddress; // the mac address as sent from the device
22+
23+
public String UserName;
24+
public String Password;
25+
26+
public boolean DefaultPorts;
27+
public int SendPort;
28+
public int RecvPort;
29+
30+
public boolean Configured;
31+
32+
public List<OutletInfo> Outlets;
33+
34+
public static String makePrefname(UUID uuid) {
35+
return uuid.toString().replace(":", "-");
36+
}
37+
38+
39+
public DeviceInfo() {
40+
uuid = UUID.randomUUID();
41+
DeviceName = "";
42+
HostName = "";
43+
MacAddress = "";
44+
UserName = "";
45+
Password = "";
46+
DefaultPorts = true;
47+
SendPort = -1;
48+
RecvPort = -1;
49+
Configured = false;
50+
Outlets = new ArrayList<OutletInfo>();
51+
}
52+
53+
public DeviceInfo(Context cx) {
54+
this();
55+
DeviceName = cx.getResources().getString(R.string.default_device_name);
56+
SendPort = DeviceQuery.getDefaultSendPort(cx);
57+
RecvPort = DeviceQuery.getDefaultRecvPort(cx);
58+
}
59+
60+
public DeviceInfo(DeviceInfo other) {
61+
uuid = UUID.randomUUID();
62+
DeviceName = other.DeviceName;
63+
HostName = other.HostName;
64+
MacAddress = other.MacAddress;
65+
UserName = other.UserName;
66+
Password = other.Password;
67+
DefaultPorts = other.DefaultPorts;
68+
SendPort = other.SendPort;
69+
RecvPort = other.RecvPort;
70+
Configured = other.Configured;
71+
Outlets = new ArrayList<OutletInfo>();
72+
for (OutletInfo oi : other.Outlets)
73+
Outlets.add(new OutletInfo(oi));
74+
}
75+
76+
@SuppressWarnings("unused")
77+
public boolean equals(DeviceInfo other) {
78+
return uuid.equals(other.uuid);
79+
}
80+
81+
@SuppressWarnings("unused")
82+
public boolean equals(UUID uuid) {
83+
return uuid.equals(uuid);
84+
}
85+
86+
public String getPrefname() {
87+
return makePrefname(uuid);
88+
}
89+
90+
public int describeContents() {
91+
return 0;
92+
}
93+
94+
public void writeToParcel(Parcel dest, int flags) {
95+
dest.writeString(uuid.toString());
96+
dest.writeString(DeviceName);
97+
dest.writeString(HostName);
98+
dest.writeString(MacAddress);
99+
dest.writeString(UserName);
100+
dest.writeString(Password);
101+
dest.writeInt(DefaultPorts ? 1 : 0);
102+
dest.writeInt(SendPort);
103+
dest.writeInt(RecvPort);
104+
dest.writeTypedList(Outlets);
105+
}
106+
107+
// this is used to regenerate your object. All Parcelables must have a CREATOR that implements these two methods
108+
public static final Parcelable.Creator<DeviceInfo> CREATOR = new Parcelable.Creator<DeviceInfo>() {
109+
public DeviceInfo createFromParcel(Parcel in) {
110+
return new DeviceInfo(in);
111+
}
112+
113+
public DeviceInfo[] newArray(int size) {
114+
return new DeviceInfo[size];
115+
}
116+
};
117+
118+
// example constructor that takes a Parcel and gives you an object populated with it's values
119+
private DeviceInfo(Parcel in) {
120+
this();
121+
uuid = UUID.fromString(in.readString());
122+
DeviceName = in.readString();
123+
HostName = in.readString();
124+
MacAddress = in.readString();
125+
UserName = in.readString();
126+
Password = in.readString();
127+
DefaultPorts = in.readInt() != 0;
128+
SendPort = in.readInt();
129+
RecvPort = in.readInt();
130+
Configured = true;
131+
in.readTypedList(Outlets, OutletInfo.CREATOR);
132+
}
133+
134+
public void setConfigured(boolean b) {
135+
Configured = b;
136+
}
137+
138+
public boolean isConfigured() {
139+
return Configured;
140+
}
141+
142+
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package oly.netpowerctrl.datastructure;
2+
3+
public class OutletCommand {
4+
// This field is not saved and is filled by fromOutletInfo for cache purposes only
5+
public String description;
6+
7+
public String device_mac;
8+
public int outletNumber;
9+
public int state; //0:off;1:on;2:toggle
10+
public boolean enabled = false;
11+
12+
public String toString() {
13+
if (device_mac.isEmpty())
14+
return "";
15+
return description.replace("§", "$") + "§" + device_mac +
16+
"§" + Integer.valueOf(outletNumber).toString() + "§" + Integer.valueOf(state).toString();
17+
}
18+
19+
public static OutletCommand fromString(String source) {
20+
OutletCommand c = new OutletCommand();
21+
String src[] = source.split("§");
22+
if (src.length < 3)
23+
return null;
24+
c.description = src[0];
25+
c.device_mac = src[1];
26+
c.outletNumber = Integer.valueOf(src[2]);
27+
c.state = Integer.valueOf(src[3]);
28+
return c;
29+
}
30+
31+
public static OutletCommand fromOutletInfo(OutletInfo info, boolean enabled) {
32+
OutletCommand c = new OutletCommand();
33+
c.enabled = enabled;
34+
c.description = info.device.DeviceName + ": " + (info.UserDescription.isEmpty() ? info.Description : info.UserDescription);
35+
c.device_mac = info.device.MacAddress;
36+
c.outletNumber = info.OutletNumber;
37+
c.state = info.State ? 1 : 0;
38+
return c;
39+
}
40+
}

0 commit comments

Comments
 (0)