Change menu to a nice one.

This commit is contained in:
Chteufleur 2018-10-07 20:54:42 +02:00
parent 7a4fe41d02
commit 0585fb3eb1
31 changed files with 291 additions and 430 deletions

View File

@ -1,11 +0,0 @@
<component name="libraryTable">
<library name="Gradle: android.arch.core:common:1.0.0@jar">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/android.arch.core/common/1.0.0/a2d487452376193fc8c103dd2b9bd5f2b1b44563/common-1.0.0.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/android.arch.core/common/1.0.0/a41fa3b9a66f3bdd41f98013a1688e969072aaf2/common-1.0.0-sources.jar!/" />
</SOURCES>
</library>
</component>

View File

@ -1,11 +0,0 @@
<component name="libraryTable">
<library name="Gradle: android.arch.lifecycle:common:1.0.0@jar">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/android.arch.lifecycle/common/1.0.0/e414a4cb28434e25c4f6aa71426eb20cf4874ae9/common-1.0.0.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/android.arch.lifecycle/common/1.0.0/39ce4055689b4b766478265a8c661f4165f26dc3/common-1.0.0-sources.jar!/" />
</SOURCES>
</library>
</component>

View File

@ -1,12 +0,0 @@
<component name="libraryTable">
<library name="Gradle: android.arch.lifecycle:runtime-1.0.0">
<CLASSES>
<root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/runtime-1.0.0.aar/e4b8d6849b4f747ac306163e75cdb5cf/res" />
<root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/runtime-1.0.0.aar/e4b8d6849b4f747ac306163e75cdb5cf/jars/classes.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/android.arch.lifecycle/runtime/1.0.0/1dd0298d8c45d8dfa4d038270247327f23df7a3a/runtime-1.0.0-sources.jar!/" />
</SOURCES>
</library>
</component>

View File

@ -1,12 +0,0 @@
<component name="libraryTable">
<library name="Gradle: com.android.support:animated-vector-drawable-26.1.0">
<CLASSES>
<root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/animated-vector-drawable-26.1.0.aar/03a266d7b1fdabf9751d50209abfef27/res" />
<root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/animated-vector-drawable-26.1.0.aar/03a266d7b1fdabf9751d50209abfef27/jars/classes.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.support/animated-vector-drawable/26.1.0/91743e9b07667784f471a3c4748e6883cd810084/animated-vector-drawable-26.1.0-sources.jar!/" />
</SOURCES>
</library>
</component>

View File

@ -1,12 +0,0 @@
<component name="libraryTable">
<library name="Gradle: com.android.support:appcompat-v7-26.1.0">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/appcompat-v7-26.1.0.aar/d7b805d26acb11cecad454fb76602feb/jars/classes.jar!/" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/appcompat-v7-26.1.0.aar/d7b805d26acb11cecad454fb76602feb/res" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.support/appcompat-v7/26.1.0/2b34456c30d6b6e5db5fa3e8fa02f6cebd5531fd/appcompat-v7-26.1.0-sources.jar!/" />
</SOURCES>
</library>
</component>

View File

@ -1,12 +0,0 @@
<component name="libraryTable">
<library name="Gradle: com.android.support:design-26.1.0">
<CLASSES>
<root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/design-26.1.0.aar/0aca89f8362a06101759246087c383dc/res" />
<root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/design-26.1.0.aar/0aca89f8362a06101759246087c383dc/jars/classes.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.support/design/26.1.0/c7ac62df01dd0a97d93500ad3da7faebf03ba49/design-26.1.0-sources.jar!/" />
</SOURCES>
</library>
</component>

View File

@ -1,12 +0,0 @@
<component name="libraryTable">
<library name="Gradle: com.android.support:recyclerview-v7-26.1.0">
<CLASSES>
<root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/recyclerview-v7-26.1.0.aar/afc596a16be62ca7fc9ff904ce003b11/res" />
<root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/recyclerview-v7-26.1.0.aar/afc596a16be62ca7fc9ff904ce003b11/jars/classes.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.support/recyclerview-v7/26.1.0/63d6891b399433c913fe91ce95a8456de02d367f/recyclerview-v7-26.1.0-sources.jar!/" />
</SOURCES>
</library>
</component>

View File

@ -1,11 +0,0 @@
<component name="libraryTable">
<library name="Gradle: com.android.support:support-annotations:26.1.0@jar">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.support/support-annotations/26.1.0/814258103cf26a15fcc26ecce35f5b7d24b73f8/support-annotations-26.1.0.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.support/support-annotations/26.1.0/29ca6aaf2d4976c13dd7c836e91bd2a61b697bf3/support-annotations-26.1.0-sources.jar!/" />
</SOURCES>
</library>
</component>

View File

@ -1,11 +0,0 @@
<component name="libraryTable">
<library name="Gradle: com.android.support:support-annotations:27.1.1@jar">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.support/support-annotations/27.1.1/39ded76b5e1ce1c5b2688e1d25cdc20ecee32007/support-annotations-27.1.1.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.support/support-annotations/27.1.1/46bebf5bd40146178cb33c7678f3782a09dea6e4/support-annotations-27.1.1-sources.jar!/" />
</SOURCES>
</library>
</component>

View File

@ -1,12 +0,0 @@
<component name="libraryTable">
<library name="Gradle: com.android.support:support-compat-26.1.0">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/support-compat-26.1.0.aar/ca5c1ef39794160edaff7bf981a986f6/jars/classes.jar!/" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/support-compat-26.1.0.aar/ca5c1ef39794160edaff7bf981a986f6/res" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.support/support-compat/26.1.0/73bfdb5cca1949a51219d3676700996990ea3b52/support-compat-26.1.0-sources.jar!/" />
</SOURCES>
</library>
</component>

View File

@ -1,12 +0,0 @@
<component name="libraryTable">
<library name="Gradle: com.android.support:support-core-ui-26.1.0">
<CLASSES>
<root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/support-core-ui-26.1.0.aar/b33fb7ed5ef644699f94079c56acc169/res" />
<root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/support-core-ui-26.1.0.aar/b33fb7ed5ef644699f94079c56acc169/jars/classes.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.support/support-core-ui/26.1.0/4d52cef4a24bf9939de1d256ca9f0974c6e636a4/support-core-ui-26.1.0-sources.jar!/" />
</SOURCES>
</library>
</component>

View File

@ -1,12 +0,0 @@
<component name="libraryTable">
<library name="Gradle: com.android.support:support-core-utils-26.1.0">
<CLASSES>
<root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/support-core-utils-26.1.0.aar/3c00b385845512b5eb0e8adcf6d4824c/res" />
<root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/support-core-utils-26.1.0.aar/3c00b385845512b5eb0e8adcf6d4824c/jars/classes.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.support/support-core-utils/26.1.0/2b0c3da7f80880bbf365452b354490a77f085c96/support-core-utils-26.1.0-sources.jar!/" />
</SOURCES>
</library>
</component>

View File

@ -1,12 +0,0 @@
<component name="libraryTable">
<library name="Gradle: com.android.support:support-fragment-26.1.0">
<CLASSES>
<root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/support-fragment-26.1.0.aar/8d55dfbe4dab9eef0abd3b94246a83d7/res" />
<root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/support-fragment-26.1.0.aar/8d55dfbe4dab9eef0abd3b94246a83d7/jars/classes.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.support/support-fragment/26.1.0/8279b00f5194701ff18363fa2958c5a26670b0ef/support-fragment-26.1.0-sources.jar!/" />
</SOURCES>
</library>
</component>

View File

@ -1,12 +0,0 @@
<component name="libraryTable">
<library name="Gradle: com.android.support:support-media-compat-26.1.0">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/support-media-compat-26.1.0.aar/de5d5fac66793fe73bea262b806134d1/jars/classes.jar!/" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/support-media-compat-26.1.0.aar/de5d5fac66793fe73bea262b806134d1/res" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.support/support-media-compat/26.1.0/774fd1164ec32514eec562953f723a1920a7fef7/support-media-compat-26.1.0-sources.jar!/" />
</SOURCES>
</library>
</component>

View File

@ -1,12 +0,0 @@
<component name="libraryTable">
<library name="Gradle: com.android.support:support-v4-26.1.0">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/support-v4-26.1.0.aar/bc4e477156d1484b72763c1097e78a7c/jars/classes.jar!/" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/support-v4-26.1.0.aar/bc4e477156d1484b72763c1097e78a7c/res" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.support/support-v4/26.1.0/9c53eab3272b3b26583b17facac2e90d264b2788/support-v4-26.1.0-sources.jar!/" />
</SOURCES>
</library>
</component>

View File

@ -1,12 +0,0 @@
<component name="libraryTable">
<library name="Gradle: com.android.support:support-vector-drawable-26.1.0">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/support-vector-drawable-26.1.0.aar/aef0d078545049e553f0d35b010e8309/jars/classes.jar!/" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/support-vector-drawable-26.1.0.aar/aef0d078545049e553f0d35b010e8309/res" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.support/support-vector-drawable/26.1.0/7a59c417eb560e5ddc2de20792ad45b38e422a5b/support-vector-drawable-26.1.0-sources.jar!/" />
</SOURCES>
</library>
</component>

View File

@ -1,12 +0,0 @@
<component name="libraryTable">
<library name="Gradle: com.android.support:transition-26.1.0">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/transition-26.1.0.aar/7b2b04792323ede7d754cab99fa07578/jars/classes.jar!/" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/transition-26.1.0.aar/7b2b04792323ede7d754cab99fa07578/res" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.support/transition/26.1.0/bf675688e3ad5a0b68c627efa77de94822af2610/transition-26.1.0-sources.jar!/" />
</SOURCES>
</library>
</component>

View File

@ -8,7 +8,7 @@
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
android:theme="@style/Theme.AppCompat.Light.NoActionBar">
<activity
android:name=".MainActivity"

View File

@ -18,6 +18,10 @@ import android.os.Vibrator;
import android.preference.PreferenceManager;
import android.support.annotation.NonNull;
import android.support.annotation.RequiresApi;
import android.support.design.widget.NavigationView;
import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.util.Log;
@ -64,7 +68,7 @@ import fr.chteufleur.mytrackingdog.services.ServiceGps;
import fr.chteufleur.mytrackingdog.services.ServiceTrackingDog;
import fr.chteufleur.mytrackingdog.services.ServiceXmpp;
public class MainActivity extends AppCompatActivity implements IOrientationConsumer, Observer {
public class MainActivity extends AppCompatActivity implements IOrientationConsumer, Observer, NavigationView.OnNavigationItemSelectedListener {
public static final String TAG = MainActivity.class.getName();
@ -80,6 +84,8 @@ public class MainActivity extends AppCompatActivity implements IOrientationConsu
private Context ctx = null;
private MapView map = null;
private DrawerLayout mDrawerLayout;
private NavigationView navigationView;
private int deviceOrientation = 0;
private boolean zoomed = false;
@ -124,6 +130,13 @@ public class MainActivity extends AppCompatActivity implements IOrientationConsu
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
ActionBar actionBar = getSupportActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setHomeAsUpIndicator(R.drawable.ic_menu);
mDrawerLayout = findViewById(R.id.drawer_layout);
navigationView = findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
map = findViewById(R.id.map);
map.setTileSource(TileSourceFactory.OpenTopo);
@ -309,39 +322,78 @@ public class MainActivity extends AppCompatActivity implements IOrientationConsu
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
getMenuInflater().inflate(R.menu.drawer_view, menu);
MenuItem vibrationObjectMenuItem = menu.findItem(R.id.action_active_vibration_object);
vibrationObjectMenuItem.setChecked(serviceTrackingDog.isVibrationNearObjectEnabled());
Menu _menu = navigationView.getMenu();
_menu.findItem(R.id.action_qr_code_generator).setEnabled(false);
_menu.findItem(R.id.action_qr_code_reader).setEnabled(false);
_menu.findItem(R.id.action_active_vibration_object).setIcon(getResources().getDrawable(
serviceTrackingDog.isVibrationNearObjectEnabled() ? R.drawable.ic_check_box_checked : R.drawable.ic_check_box_unchecked));
_menu.findItem(R.id.action_active_vibration_object).setChecked(serviceTrackingDog.isVibrationNearObjectEnabled());
updateSendTraceMenu();
return false;
//return super.onCreateOptionsMenu(menu);
}
MenuItem xmppObjectMenuItem = menu.findItem(R.id.action_active_xmpp);
xmppObjectMenuItem.setChecked(serviceTrackingDog.isXmppEnabled());
return true;
private void updateSendTraceMenu() {
boolean isTrailFileExist = serviceTrackingDog.getLastExportedTrailFile() != null;
boolean isXmppActive = serviceTrackingDog.isXmppEnabled();
navigationView.getMenu().findItem(R.id.action_send_gpx_trail).setEnabled(isTrailFileExist);
navigationView.getMenu().findItem(R.id.action_send_gpx_trail_by_xmpp).setEnabled(isXmppActive && isTrailFileExist);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
if (item.getItemId() == android.R.id.home) {
mDrawerLayout.openDrawer(GravityCompat.START);
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_import_gpx) {
startActivityPickFile();
mDrawerLayout.closeDrawers();
return true;
} else if (id == R.id.action_send_gpx_trail) {
startActivitySendGpxFile();
mDrawerLayout.closeDrawers();
return true;
} else if (id == R.id.action_active_vibration_object) {
activeVibrationObject(item);
return true;
} else if (id == R.id.action_active_xmpp) {
activeXmpp(item);
return true;
} else if (id == R.id.action_qr_code_generator) {
startActivityQrCodeGenerator();
mDrawerLayout.closeDrawers();
return true;
} else if (id == R.id.action_qr_code_reader) {
startActivityQrCodeReader();
mDrawerLayout.closeDrawers();
return true;
} else if (id == R.id.action_send_gpx_trail_by_xmpp) {
sendGpxFileByXmpp();
mDrawerLayout.closeDrawers();
return true;
}
return super.onOptionsItemSelected(item);
}
private void startActivityPickFile() {
Intent intent = new Intent(this, FilePicker.class);
intent.putExtra(FilePicker.EXTRA_FILE_PATH, Environment.getExternalStorageDirectory().getAbsolutePath() + "/" + appName);
startActivityForResult(intent, ACTIVITY_REQUEST_PICK_FILE);
return true;
}
} else if (id == R.id.action_qr_code_generator) {
Intent intent = new Intent(this, QRCodeGeneratorActivity.class);
startActivityForResult(intent, ACTIVITY_QR_CODE_GENERATOR);
} else if (id == R.id.action_qr_code_reader) {
Intent intent = new Intent(this, QRCodeReaderActivity.class);
startActivityForResult(intent, ACTIVITY_QR_CODE_READER);
} else if (id == R.id.action_send_gpx_trail) {
private void startActivitySendGpxFile() {
File trailFile = serviceTrackingDog.getLastExportedTrailFile();
if (trailFile != null) {
Intent shareIntent = new Intent();
@ -353,9 +405,52 @@ public class MainActivity extends AppCompatActivity implements IOrientationConsu
} else {
Toast.makeText(ctx, "Aucune trace enregistré.", Toast.LENGTH_LONG).show();
}
return true;
}
} else if (id == R.id.action_send_gpx_trail_by_xmpp) {
private void activeVibrationObject(MenuItem item) {
boolean checked = item.isChecked();
item.setChecked(!checked);
serviceTrackingDog.setVibrationNearObjectEnabled(!checked);
navigationView.getMenu().findItem(R.id.action_active_vibration_object).setIcon(getResources().getDrawable(
serviceTrackingDog.isVibrationNearObjectEnabled() ? R.drawable.ic_check_box_checked : R.drawable.ic_check_box_unchecked));
}
private void activeXmpp(MenuItem item) {
boolean checked = item.isChecked();
boolean newStat = !checked;
if (newStat) {
try {
serviceTrackingDog.enableXmpp();
Toast.makeText(ctx, "Connexion XMPP réussie", Toast.LENGTH_SHORT).show();
} catch (InterruptedException | IOException | SmackException | XMPPException e) {
e.printStackTrace();
Toast.makeText(ctx, "Echec de connexion XMPP", Toast.LENGTH_LONG).show();
newStat = false;
}
}
if (!newStat) {
serviceTrackingDog.disableXmpp();
}
navigationView.getMenu().findItem(R.id.action_qr_code_generator).setEnabled(newStat);
navigationView.getMenu().findItem(R.id.action_qr_code_reader).setEnabled(newStat);
navigationView.getMenu().findItem(R.id.action_send_gpx_trail_by_xmpp).setEnabled(newStat && serviceTrackingDog.getLastExportedTrailFile() != null);
item.setChecked(newStat);
item.setIcon(getResources().getDrawable(newStat ? R.drawable.ic_check_box_checked : R.drawable.ic_check_box_unchecked));
}
private void startActivityQrCodeGenerator() {
Intent intent = new Intent(this, QRCodeGeneratorActivity.class);
startActivityForResult(intent, ACTIVITY_QR_CODE_GENERATOR);
}
private void startActivityQrCodeReader() {
Intent intent = new Intent(this, QRCodeReaderActivity.class);
startActivityForResult(intent, ACTIVITY_QR_CODE_READER);
}
private void sendGpxFileByXmpp() {
File trailFile = serviceTrackingDog.getLastExportedTrailFile();
if (trailFile != null) {
try {
@ -366,35 +461,6 @@ public class MainActivity extends AppCompatActivity implements IOrientationConsu
} else {
Toast.makeText(ctx, "Aucune trace enregistré.", Toast.LENGTH_LONG).show();
}
return true;
} else if (id == R.id.action_active_vibration_object) {
boolean checked = item.isChecked();
item.setChecked(!checked);
serviceTrackingDog.setVibrationNearObjectEnabled(!checked);
return true;
} else if (id == R.id.action_active_xmpp) {
boolean checked = item.isChecked();
boolean newStat = !checked;
item.setChecked(newStat);
if (newStat) {
try {
serviceTrackingDog.enableXmpp();
Toast.makeText(ctx, "Connexion XMPP réussie", Toast.LENGTH_SHORT).show();
} catch (InterruptedException | IOException | SmackException | XMPPException e) {
e.printStackTrace();
Toast.makeText(ctx, "Echec de connexion XMPP", Toast.LENGTH_LONG).show();
item.setChecked(false);
serviceTrackingDog.disableXmpp();
}
} else {
serviceTrackingDog.disableXmpp();
}
return true;
}
return super.onOptionsItemSelected(item);
}
//</editor-fold>
@ -407,6 +473,7 @@ public class MainActivity extends AppCompatActivity implements IOrientationConsu
serviceTrackingDog.importGpxTrace(new File(data.getStringExtra(FilePicker.EXTRA_FILE_PATH)));
updateDogTrace();
updateTrailTrace();
updateSendTraceMenu();
// Update distance
distance = serviceTrackingDog.calculTrailDistance();
@ -516,6 +583,7 @@ public class MainActivity extends AppCompatActivity implements IOrientationConsu
this.add_object.setVisibility(View.GONE);
this.start_stop_dog_trace.setVisibility(View.VISIBLE);
}
updateSendTraceMenu();
}
private void changeStatusDogTrace() {

View File

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="#FF000000"
android:pathData="M19,3L5,3c-1.11,0 -2,0.9 -2,2v14c0,1.1 0.89,2 2,2h14c1.11,0 2,-0.9 2,-2L21,5c0,-1.1 -0.89,-2 -2,-2zM10,17l-5,-5 1.41,-1.41L10,14.17l7.59,-7.59L19,8l-9,9z"/>
</vector>

View File

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="#FF000000"
android:pathData="M19,5v14H5V5h14m0,-2H5c-1.1,0 -2,0.9 -2,2v14c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2V5c0,-1.1 -0.9,-2 -2,-2z"/>
</vector>

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

View File

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="#FFFFFFFF"
android:pathData="M3,18h18v-2L3,16v2zM3,13h18v-2L3,11v2zM3,6v2h18L21,6L3,6z"/>
</vector>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="#FF000000"
android:pathData="M18,16.08c-0.76,0 -1.44,0.3 -1.96,0.77L8.91,12.7c0.05,-0.23 0.09,-0.46 0.09,-0.7s-0.04,-0.47 -0.09,-0.7l7.05,-4.11c0.54,0.5 1.25,0.81 2.04,0.81 1.66,0 3,-1.34 3,-3s-1.34,-3 -3,-3 -3,1.34 -3,3c0,0.24 0.04,0.47 0.09,0.7L8.04,9.81C7.5,9.31 6.79,9 6,9c-1.66,0 -3,1.34 -3,3s1.34,3 3,3c0.79,0 1.5,-0.31 2.04,-0.81l7.12,4.16c-0.05,0.21 -0.08,0.43 -0.08,0.65 0,1.61 1.31,2.92 2.92,2.92 1.61,0 2.92,-1.31 2.92,-2.92s-1.31,-2.92 -2.92,-2.92z"/>
</vector>

View File

@ -1,33 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/AppTheme.AppBarOverlay">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:popupTheme="@style/AppTheme.PopupOverlay" />
</android.support.design.widget.AppBarLayout>
<include layout="@layout/content_main" />
<android.support.design.widget.FloatingActionButton
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:layout_margin="@dimen/fab_margin"
app:srcCompat="@android:drawable/ic_dialog_email" />
</android.support.design.widget.CoordinatorLayout>

View File

@ -1,20 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context=".MainActivity"
tools:showIn="@layout/activity_main">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</android.support.constraint.ConstraintLayout>

View File

@ -1,4 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
@ -16,7 +23,7 @@
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:popupTheme="@style/AppTheme.PopupOverlay" />
app:popupTheme="@style/ThemeOverlay.AppCompat.ActionBar" />
<TextView android:id="@+id/textViewCurrentLocation"
android:layout_width="fill_parent"
@ -83,3 +90,12 @@
</LinearLayout>
</android.support.design.widget.CoordinatorLayout>
<android.support.design.widget.NavigationView
android:id="@+id/nav_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:fitsSystemWindows="true"
app:menu="@menu/drawer_view"/>
</android.support.v4.widget.DrawerLayout>

View File

@ -0,0 +1,35 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/action_import_gpx"
android:title="@string/action_import_gpx"
android:icon="@drawable/ic_import" />
<item
android:id="@+id/action_send_gpx_trail"
android:title="@string/action_send_gpx_trail"
android:icon="@drawable/ic_share" />
<item
android:id="@+id/action_active_vibration_object"
android:title="@string/action_active_vibration_object"
android:icon="@drawable/ic_check_box_unchecked" />
<item
android:title="@string/menu_title_xmpp" >
<menu>
<item
android:id="@+id/action_active_xmpp"
android:title="@string/action_active_xmpp"
android:icon="@drawable/ic_check_box_unchecked" />
<item
android:id="@+id/action_qr_code_generator"
android:title="@string/action_qr_code_generator" />
<item
android:id="@+id/action_qr_code_reader"
android:title="@string/action_qr_code_reader" />
<item
android:id="@+id/action_send_gpx_trail_by_xmpp"
android:title="@string/action_send_gpx_trail_by_xmpp"
android:icon="@drawable/ic_share" />
</menu>
</item>
</menu>

View File

@ -1,42 +0,0 @@
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context="fr.chteufleur.mytrackingdog.MainActivity">
<item
android:id="@+id/action_import_gpx"
android:orderInCategory="100"
android:title="@string/action_import_gpx"
app:showAsAction="never" />
<item
android:id="@+id/action_send_gpx_trail"
android:orderInCategory="100"
android:title="@string/action_send_gpx_trail"
app:showAsAction="never" />
<item
android:id="@+id/action_send_gpx_trail_by_xmpp"
android:orderInCategory="100"
android:title="@string/action_send_gpx_trail_by_xmpp"
app:showAsAction="never" />
<item
android:id="@+id/action_active_vibration_object"
android:checkable="true"
android:orderInCategory="100"
android:title="@string/action_active_vibration_object"
app:showAsAction="never" />
<item
android:id="@+id/action_qr_code_generator"
android:orderInCategory="100"
android:title="@string/action_qr_code_generator"
app:showAsAction="never" />
<item
android:id="@+id/action_qr_code_reader"
android:orderInCategory="100"
android:title="@string/action_qr_code_reader"
app:showAsAction="never" />
<item
android:id="@+id/action_active_xmpp"
android:checkable="true"
android:orderInCategory="100"
android:title="@string/action_active_xmpp"
app:showAsAction="never" />
</menu>

View File

@ -9,10 +9,11 @@
<string name="action_import_gpx">Import GPX</string>
<string name="action_send_gpx_trail">Envoyer trace du traceur</string>
<string name="action_send_gpx_trail_by_xmpp">Envoyer trace du traceur par XMPP</string>
<string name="action_send_to">Envoyer par</string>
<string name="action_active_vibration_object">Active vibration objets</string>
<string name="action_qr_code_generator">Affiche identifiant</string>
<string name="action_qr_code_reader">Lecture identifiant</string>
<string name="menu_title_xmpp">XMPP</string>
<string name="action_active_xmpp">Active XMPP</string>
<string name="action_send_gpx_trail_by_xmpp">Envoyer trace du traceur par XMPP</string>
</resources>