Updated toolbar spinner to newer implementation
Lowered all-caps navigation labels to something more professional. Added a Spinner to the Toolbar in XML. Reworked many lines of LibreOfficeUIActivity to remove possible NPE's, and also removed redundant lines, which were mostly deprecated, as well as switching to a newer implementation of a toolbar-spinner navigation pattern. There are more deprecated methods, but I wanted them in a separate commit. Change-Id: I15d5365ed7c00880873bf7874bc794008436bb99 Reviewed-on: https://gerrit.libreoffice.org/32497 Reviewed-by: jan iversen <jani@documentfoundation.org> Tested-by: jan iversen <jani@documentfoundation.org>
This commit is contained in:
committed by
jan iversen
parent
11e443bfe1
commit
d976f9151a
@@ -4,11 +4,18 @@
|
|||||||
android:id="@+id/toolbar"
|
android:id="@+id/toolbar"
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:elevation="3dp"
|
android:elevation="3dp"
|
||||||
android:background="@color/toolbar_background"
|
android:background="@color/toolbar_background"
|
||||||
app:theme="@style/LibreOfficeTheme.Toolbar"
|
app:theme="@style/LibreOfficeTheme.Toolbar"
|
||||||
|
tools:theme="@style/LibreOfficeTheme.Toolbar"
|
||||||
app:popupTheme="@style/LibreOfficeTheme">
|
app:popupTheme="@style/LibreOfficeTheme">
|
||||||
|
|
||||||
|
<android.support.v7.widget.AppCompatSpinner
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:id="@+id/toolbar_spinner"/>
|
||||||
|
|
||||||
</android.support.v7.widget.Toolbar>
|
</android.support.v7.widget.Toolbar>
|
||||||
|
@@ -33,11 +33,11 @@
|
|||||||
<!-- Preference Name Arrays
|
<!-- Preference Name Arrays
|
||||||
This has to be in sync with FileUtilities.java. -->
|
This has to be in sync with FileUtilities.java. -->
|
||||||
<string-array name="file_view_modes">
|
<string-array name="file_view_modes">
|
||||||
<item >EVERYTHING</item>
|
<item>Everything</item>
|
||||||
<item >DOCUMENTS</item>
|
<item>Documents</item>
|
||||||
<item>SPREADSHEETS</item>
|
<item>Spreadsheets</item>
|
||||||
<item >PRESENTATIONS</item>
|
<item>Presentations</item>
|
||||||
<item>DRAWINGS</item>
|
<item>Drawings</item>
|
||||||
</string-array>
|
</string-array>
|
||||||
|
|
||||||
<string-array name="FilterTypeNames">
|
<string-array name="FilterTypeNames">
|
||||||
|
@@ -24,6 +24,7 @@ import android.support.v4.widget.DrawerLayout;
|
|||||||
import android.support.v7.app.ActionBar;
|
import android.support.v7.app.ActionBar;
|
||||||
import android.support.v7.app.ActionBarDrawerToggle;
|
import android.support.v7.app.ActionBarDrawerToggle;
|
||||||
import android.support.v7.app.AppCompatActivity;
|
import android.support.v7.app.AppCompatActivity;
|
||||||
|
import android.support.v7.widget.AppCompatSpinner;
|
||||||
import android.support.v7.widget.Toolbar;
|
import android.support.v7.widget.Toolbar;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.view.ContextMenu;
|
import android.view.ContextMenu;
|
||||||
@@ -66,7 +67,7 @@ import java.text.SimpleDateFormat;
|
|||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class LibreOfficeUIActivity extends AppCompatActivity implements ActionBar.OnNavigationListener {
|
public class LibreOfficeUIActivity extends AppCompatActivity {
|
||||||
private String LOGTAG = LibreOfficeUIActivity.class.getSimpleName();
|
private String LOGTAG = LibreOfficeUIActivity.class.getSimpleName();
|
||||||
private SharedPreferences prefs;
|
private SharedPreferences prefs;
|
||||||
private int filterMode = FileUtilities.ALL;
|
private int filterMode = FileUtilities.ALL;
|
||||||
@@ -128,19 +129,34 @@ public class LibreOfficeUIActivity extends AppCompatActivity implements ActionBa
|
|||||||
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
|
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
|
||||||
setSupportActionBar(toolbar);
|
setSupportActionBar(toolbar);
|
||||||
ActionBar actionBar = getSupportActionBar();
|
ActionBar actionBar = getSupportActionBar();
|
||||||
actionBar.setDisplayShowTitleEnabled(false); //This should show current directory if anything
|
|
||||||
|
if (actionBar != null) {
|
||||||
|
actionBar.setDisplayShowTitleEnabled(false);
|
||||||
actionBar.setDisplayHomeAsUpEnabled(true);
|
actionBar.setDisplayHomeAsUpEnabled(true);
|
||||||
|
|
||||||
//make the navigation spinner
|
//make the navigation spinner
|
||||||
Context context = actionBar.getThemedContext();
|
Context context = actionBar.getThemedContext();
|
||||||
ArrayAdapter<CharSequence> list = ArrayAdapter.createFromResource(context, R.array.file_view_modes, android.R.layout.simple_spinner_item);
|
AppCompatSpinner toolbarSpinner = (AppCompatSpinner) findViewById(R.id.toolbar_spinner);
|
||||||
list.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
|
ArrayAdapter<CharSequence> spinnerAdapter = ArrayAdapter.createFromResource(context, R.array.file_view_modes, android.R.layout.simple_spinner_item);
|
||||||
|
spinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
|
||||||
|
toolbarSpinner.setAdapter(spinnerAdapter);
|
||||||
|
toolbarSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
|
||||||
|
@Override
|
||||||
|
public void onItemSelected(AdapterView<?> adapterView, View view, int pos, long id) {
|
||||||
|
filterMode = pos -1; //bit of a hack, I know. -1 is ALL 0 Docs etc
|
||||||
|
openDirectory(currentDirectory);// Uses filter mode
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onNothingSelected(AdapterView<?> adapterView) {
|
||||||
|
filterMode = FileUtilities.ALL;
|
||||||
|
openDirectory(currentDirectory);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
|
|
||||||
actionBar.setListNavigationCallbacks(list, this);
|
|
||||||
|
|
||||||
LinearLayout content = (LinearLayout) findViewById(R.id.browser_main_content);
|
LinearLayout content = (LinearLayout) findViewById(R.id.browser_main_content);
|
||||||
|
|
||||||
if (viewMode == GRID_VIEW) {
|
if (viewMode == GRID_VIEW) {
|
||||||
// code to make a grid view
|
// code to make a grid view
|
||||||
getLayoutInflater().inflate(R.layout.file_grid, content);
|
getLayoutInflater().inflate(R.layout.file_grid, content);
|
||||||
@@ -151,13 +167,13 @@ public class LibreOfficeUIActivity extends AppCompatActivity implements ActionBa
|
|||||||
open(position);
|
open(position);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
actionBar.setSelectedNavigationItem(filterMode + 1);//This triggers the listener which modifies the view.
|
openDirectory(currentDirectory);
|
||||||
registerForContextMenu(gv);
|
registerForContextMenu(gv);
|
||||||
} else {
|
} else {
|
||||||
getLayoutInflater().inflate(R.layout.file_list, content);
|
getLayoutInflater().inflate(R.layout.file_list, content);
|
||||||
lv = (ListView)findViewById(R.id.file_explorer_list_view);
|
lv = (ListView)findViewById(R.id.file_explorer_list_view);
|
||||||
lv.setClickable(true);
|
lv.setClickable(true);
|
||||||
actionBar.setSelectedNavigationItem(filterMode + 1);
|
openDirectory(currentDirectory);
|
||||||
registerForContextMenu(lv);
|
registerForContextMenu(lv);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -678,12 +694,6 @@ public class LibreOfficeUIActivity extends AppCompatActivity implements ActionBa
|
|||||||
Log.d(LOGTAG, "onDestroy");
|
Log.d(LOGTAG, "onDestroy");
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean onNavigationItemSelected(int itemPosition, long itemId) {
|
|
||||||
filterMode = itemPosition -1; //bit of a hack, I know. -1 is ALL 0 Docs etc
|
|
||||||
openDirectory(currentDirectory);// Uses filter mode
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
private int dpToPx(int dp){
|
private int dpToPx(int dp){
|
||||||
final float scale = getApplicationContext().getResources().getDisplayMetrics().density;
|
final float scale = getApplicationContext().getResources().getDisplayMetrics().density;
|
||||||
return (int) (dp * scale + 0.5f);
|
return (int) (dp * scale + 0.5f);
|
||||||
|
Reference in New Issue
Block a user