Ver código fonte

Merge branch 'master' of https://git.tk.informatik.tu-darmstadt.de/scm-ssi-student-hostagev2

Julien Clauter 10 anos atrás
pai
commit
bf2e64035a

+ 0 - 2
src/de/tudarmstadt/informatik/hostage/ui2/activity/MainActivity.java

@@ -489,8 +489,6 @@ public class MainActivity extends Activity {
 				this.mCloseWarning = true;
 			}
 			//}
-		} else if (MainMenuItem.hasClass(mDisplayedFragment.getClass())){
-			injectFragment(rootFragment);
 		} else {
 			super.onBackPressed();
 			this.mDisplayedFragment = getFragmentManager().findFragmentById(R.id.content_frame);

+ 51 - 24
src/de/tudarmstadt/informatik/hostage/ui2/adapter/ServicesListAdapter.java

@@ -105,19 +105,22 @@ public class ServicesListAdapter extends ArrayAdapter<ServicesListItem> {
                         ServicesListItem item = (ServicesListItem) buttonView.getTag();
                         mProfile = ProfileManager.getInstance().getCurrentActivatedProfile();
                         if (!HelperUtils.isNetworkAvailable(mActivity)) {
-                            new AlertDialog.Builder(mActivity)
-                                    .setTitle(R.string.information)
-                                    .setMessage(R.string.wifi_not_connected_msg)
-                                    .setPositiveButton(android.R.string.ok,
-                                            new DialogInterface.OnClickListener() {
-                                                public void onClick(DialogInterface dialog,
-                                                                    int which) {
+                            if(!MainActivity.getInstance().getHostageService().hasRunningListeners()) {
+                                new AlertDialog.Builder(mActivity)
+                                        .setTitle(R.string.information)
+                                        .setMessage(R.string.wifi_not_connected_msg)
+                                        .setPositiveButton(android.R.string.ok,
+                                                new DialogInterface.OnClickListener() {
+                                                    public void onClick(DialogInterface dialog,
+                                                                        int which) {
+                                                    }
                                                 }
-                                            }
-                                    )
-                                    .setIcon(android.R.drawable.ic_dialog_info).show();
-
-                            buttonView.setChecked(false);
+                                        )
+                                        .setIcon(android.R.drawable.ic_dialog_info).show();
+                                if (buttonView.isChecked()) {
+                                    buttonView.setChecked(false);
+                                }
+                            }
                         } else {
                             //check if switch is set to ON and start the concrete listener for the protocol
                             if (isChecked) {
@@ -136,11 +139,15 @@ public class ServicesListAdapter extends ArrayAdapter<ServicesListItem> {
                                             mServicesSwitch.setChecked(true);
                                             mServicesSwitch.setOnCheckedChangeListener(mListener);
 
-                                            buttonView.setChecked(true);
+                                            if(!buttonView.isChecked()) {
+                                                buttonView.setChecked(true);
+                                            }
                                         }
                                     }
                                     else {
-                                        buttonView.setChecked(false);
+                                        if(buttonView.isChecked()) {
+                                            buttonView.setChecked(false);
+                                        }
                                     }
                                 }
                                 else if (!MainActivity.getInstance().getHostageService().isRunning(item.protocol)) {
@@ -150,9 +157,13 @@ public class ServicesListAdapter extends ArrayAdapter<ServicesListItem> {
                                     mServicesSwitch.setOnCheckedChangeListener(null);
                                     mServicesSwitch.setChecked(true);
                                     mServicesSwitch.setOnCheckedChangeListener(mListener);
-                                    buttonView.setChecked(true);
+                                    if(!buttonView.isChecked()) {
+                                        buttonView.setChecked(true);
+                                    }
                                 } else {
-                                    buttonView.setChecked(true);
+                                    if(!buttonView.isChecked()) {
+                                        buttonView.setChecked(true);
+                                    }
                                 }
                             } else {
                                    if(item.protocol.equals("GHOST")) {
@@ -164,12 +175,16 @@ public class ServicesListAdapter extends ArrayAdapter<ServicesListItem> {
                                                }
                                            }
                                        }
-                                       buttonView.setChecked(false);
+                                       if(buttonView.isChecked()) {
+                                           buttonView.setChecked(false);
+                                       }
                                    }
                                    else if (MainActivity.getInstance().getHostageService().isRunning(item.protocol)) {
                                         MainActivity.getInstance().getHostageService().stopListener(item.protocol);
                                     }
-                                    buttonView.setChecked(false);
+                                    if(buttonView.isChecked()) {
+                                        buttonView.setChecked(false);
+                                    }
                             }
                         }
                     }
@@ -200,7 +215,9 @@ public class ServicesListAdapter extends ArrayAdapter<ServicesListItem> {
                 }
             }
             if(ghostActive){
-                holder.activated.setChecked(true);
+                if(!holder.activated.isChecked()) {
+                    holder.activated.setChecked(true);
+                }
 
                 if (!MainActivity.getInstance().getHostageService().hasProtocolActiveAttacks(item.protocol)) {
                     if (item.attacks > 0) {
@@ -216,10 +233,14 @@ public class ServicesListAdapter extends ArrayAdapter<ServicesListItem> {
                 }
 
             } else if (item.attacks > 0) {
-                holder.activated.setChecked(false);
+                if(holder.activated.isChecked()) {
+                    holder.activated.setChecked(false);
+                }
                 setBackground(holder, R.drawable.services_circle_yellow);
             } else {
-                holder.activated.setChecked(false);
+                if(holder.activated.isChecked()) {
+                    holder.activated.setChecked(false);
+                }
                 setBackground(holder, R.drawable.services_circle);
             }
 
@@ -228,7 +249,9 @@ public class ServicesListAdapter extends ArrayAdapter<ServicesListItem> {
 
         }
         else if (MainActivity.getInstance().getHostageService().isRunning(item.protocol)) {
-            holder.activated.setChecked(true);
+            if(!holder.activated.isChecked()) {
+                holder.activated.setChecked(true);
+            }
             if (!MainActivity.getInstance().getHostageService().hasProtocolActiveAttacks(item.protocol)) {
                 if (item.attacks > 0) {
                     setBackground(holder, R.drawable.services_circle_yellow);
@@ -242,10 +265,14 @@ public class ServicesListAdapter extends ArrayAdapter<ServicesListItem> {
                 }
             }
         } else if (item.attacks > 0) {
-            holder.activated.setChecked(false);
+            if(holder.activated.isChecked()) {
+                holder.activated.setChecked(false);
+            }
             setBackground(holder, R.drawable.services_circle_yellow);
         } else {
-            holder.activated.setChecked(false);
+            if(holder.activated.isChecked()) {
+                holder.activated.setChecked(false);
+            }
             setBackground(holder, R.drawable.services_circle);
         }
         holder.recordedAttacks

+ 15 - 6
src/de/tudarmstadt/informatik/hostage/ui2/fragment/ProfileEditFragment.java

@@ -251,14 +251,23 @@ public class ProfileEditFragment extends PreferenceFragment implements
 
 			assert selectedImage != null;
 
-			Cursor cursor = getActivity().getContentResolver().query(selectedImage, filePathColumn, null, null, null);
+			Cursor cursor = getActivity().getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
+					new String[]{
+							MediaStore.Images.Media.DATA,
+							MediaStore.Images.Media.DATE_ADDED,
+							MediaStore.Images.ImageColumns.ORIENTATION
+					},
+			MediaStore.Images.Media.DATE_ADDED, null, "date_added ASC");
 
 			assert cursor != null;
-			cursor.moveToFirst();
-
-			int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
-			String filePath = cursor.getString(columnIndex);
-			cursor.close();
+			String filePath = "";
+			if(cursor != null && cursor.moveToFirst())
+			{
+				do {
+					filePath = Uri.parse(cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DATA))).toString();
+				} while(cursor.moveToNext());
+				cursor.close();
+			}
 
 			Preference pref = findPreference("pref_profile_general_image");
 

+ 50 - 34
src/de/tudarmstadt/informatik/hostage/ui2/fragment/ServicesFragment.java

@@ -85,17 +85,26 @@ public class ServicesFragment extends Fragment {
      * in detail: the main switch and the textField mServicesTextName
      */
     public void updateUI() {
-        if (!HelperUtils.isWifiConnected(getActivity())) {
-            mServicesSwitchService.setOnCheckedChangeListener(null);
-            setStateNotConnected();
-            setStateNotActive();
-            mServicesSwitchService.setOnCheckedChangeListener(switchChangeListener);
+        if (!HelperUtils.isNetworkAvailable(getActivity())) {
+            if(!MainActivity.getInstance().getHostageService().hasRunningListeners()) {
+                mServicesSwitchService.setOnCheckedChangeListener(null);
+                setStateNotConnected();
+                setStateNotActive();
+                mServicesSwitchService.setOnCheckedChangeListener(switchChangeListener);
+            }
+            else{
+                mServicesSwitchService.setOnCheckedChangeListener(null);
+                setStateNotConnected();
+                mServicesSwitchService.setChecked(true);
+                mServicesSwitchService.setOnCheckedChangeListener(switchChangeListener);
+            }
         } else {
             if (MainActivity.getInstance().getHostageService().hasRunningListeners()) {
                 setStateActive();
             }
+            String ssid = mConnectionInfo.getString(getString(R.string.connection_info_ssid), "");
 
-            mServicesTextName.setText(HelperUtils.getSSID(getActivity()));
+            mServicesTextName.setText(ssid.substring(1,ssid.length()-1));
         }
 
     }
@@ -125,7 +134,7 @@ public class ServicesFragment extends Fragment {
                     } else {
                         setStateActive();
                     }
-
+                    updateUI();
                     adapter.notifyDataSetChanged();
                 }
             };
@@ -173,38 +182,43 @@ public class ServicesFragment extends Fragment {
             switchChangeListener = new CompoundButton.OnCheckedChangeListener() {
                 public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                     mProfile = ProfileManager.getInstance().getCurrentActivatedProfile();
-                    if (!HelperUtils.isNetworkAvailable(getActivity())) {
-                        new AlertDialog.Builder(getActivity())
-                                .setTitle(R.string.information)
-                                .setMessage(R.string.wifi_not_connected_msg)
-                                .setPositiveButton(android.R.string.ok,
-                                        new DialogInterface.OnClickListener() {
-                                            public void onClick(DialogInterface dialog, int which) {
-
-                                            }
-                                        }
-                                )
-                                .setIcon(android.R.drawable.ic_dialog_info)
-                                .show();
+                        if (!HelperUtils.isNetworkAvailable(getActivity())) {
+                            if(!MainActivity.getInstance().getHostageService().hasRunningListeners()) {
+                                new AlertDialog.Builder(getActivity())
+                                        .setTitle(R.string.information)
+                                        .setMessage(R.string.wifi_not_connected_msg)
+                                        .setPositiveButton(android.R.string.ok,
+                                                new DialogInterface.OnClickListener() {
+                                                    public void onClick(DialogInterface dialog, int which) {
 
-                        setStateNotActive();
-                        setStateNotConnected();
+                                                    }
+                                                }
+                                        )
+                                        .setIcon(android.R.drawable.ic_dialog_info)
+                                        .show();
+                                if(mServicesSwitchService.isChecked()) {
+                                    setStateNotActive();
+                                }
+                                setStateNotConnected();
+                            }
+                            else{
+                                setStateActive();
+                            }
                     } else {
                         if (MainActivity.getInstance().isServiceBound()) {
                             if (isChecked) {
                                 for (String protocol : protocols) {
-                                    if(!protocol.equals("GHOST")) {
-                                         if (!MainActivity.getInstance().getHostageService().isRunning(protocol)) {
-                                             MainActivity.getInstance().getHostageService().startListener(protocol);
-                                         }
-                                    }
-                                    else {
-                                        if(mProfile.mGhostActive){
+                                    if (!protocol.equals("GHOST")) {
+                                        if (!MainActivity.getInstance().getHostageService().isRunning(protocol)) {
+                                            MainActivity.getInstance().getHostageService().startListener(protocol);
+                                        }
+                                    } else {
+                                        if (mProfile.mGhostActive) {
 
                                             mGhostPorts = mProfile.getGhostPorts();
-                                            if (mGhostPorts.length != 0)  {
+                                            if (mGhostPorts.length != 0) {
                                                 for (Integer port : mGhostPorts) {
-                                                    if(!MainActivity.getInstance().getHostageService().isRunning("GHOST", port)) {
+                                                    if (!MainActivity.getInstance().getHostageService().isRunning("GHOST", port)) {
                                                         MainActivity.getInstance().getHostageService().startListener("GHOST", port);
                                                     }
                                                 }
@@ -215,7 +229,7 @@ public class ServicesFragment extends Fragment {
                                     }
                                 }
                                 setStateActive();
-                            } else {
+                            } else{
                                 MainActivity.getInstance().getHostageService().stopListeners();
                                 MainActivity.getInstance().stopAndUnbind();
                                 setStateNotActive();
@@ -263,7 +277,7 @@ public class ServicesFragment extends Fragment {
      * sets main switch to true
      */
     private void setStateActive() {
-        mServicesSwitchService.setChecked(true);
+            mServicesSwitchService.setChecked(true);
     }
 
     /**
@@ -277,7 +291,9 @@ public class ServicesFragment extends Fragment {
      * sets main switch to false
      */
     private void setStateNotActive() {
-        mServicesSwitchService.setChecked(false);
+        if (mServicesSwitchService.isChecked()) {
+            mServicesSwitchService.setChecked(false);
+        }
     }
 
     /**

+ 1 - 0
src/de/tudarmstadt/informatik/hostage/ui2/fragment/ThreatMapFragment.java

@@ -105,6 +105,7 @@ public class ThreatMapFragment extends Fragment implements GoogleMap.OnInfoWindo
 		RecordOverviewFragment recordOverviewFragment = new RecordOverviewFragment();
 		recordOverviewFragment.setFilter(filter);
 		recordOverviewFragment.setGroupKey("ESSID");
+		recordOverviewFragment.setAllowBack(true);
 
 		MainActivity.getInstance().injectFragment(recordOverviewFragment, false);
 		//recordOverviewFragment.showDetailsForSSID(getActivity(), ssid);

+ 10 - 0
src/de/tudarmstadt/informatik/hostage/ui2/fragment/UpNavigatibleFragment.java

@@ -10,6 +10,8 @@ public abstract class UpNavigatibleFragment extends Fragment {
 	private Class<?> mUpFragment;
 	private boolean mIsUpNavigatible = false;
 
+	private boolean mAllowBack = false;
+
 	public Class<?> getUpFragment(){
 		return mUpFragment;
 	}
@@ -25,4 +27,12 @@ public abstract class UpNavigatibleFragment extends Fragment {
 	public void setUpNavigatible(boolean isUpNavigatible){
 		this.mIsUpNavigatible = isUpNavigatible;
 	}
+
+	public boolean getAllowBack(){
+		return mAllowBack;
+	}
+
+	public void setAllowBack(boolean allowBack){
+		this.mAllowBack = allowBack;
+	}
 }