Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1c97c6de authored by Stephen Bird's avatar Stephen Bird Committed by Gerrit Code Review
Browse files

Quick Search: Bring Design up to par

Change-Id: I5fd21e4bdc916e11a37e465d25ce040831190e34
parent d58c13e4
Loading
Loading
Loading
Loading
+13 −2
Original line number Diff line number Diff line
@@ -140,12 +140,23 @@

            </android.support.v7.widget.CardView>

            <TextView
                android:text="@string/quick_search"
                android:id="@+id/cardChildText"
                android:textSize="14sp"
                android:layout_marginStart="@dimen/quick_search_text_margin_left"
                android:layout_marginTop="@dimen/quick_search_text_margin_top"
                android:layout_marginBottom="@dimen/quick_search_text_margin_top"
                android:layout_gravity="center_vertical"
                android:layout_width="match_parent"
                android:layout_height="@dimen/quick_search_text_height" />

            <com.cyanogenmod.filemanager.ui.widgets.WrappedGridView
                android:id="@+id/easy_modeView"
                android:id="@+id/quick_search_view"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:columnWidth="90dp"
                android:numColumns="auto_fit"
                android:numColumns="3"
                android:verticalSpacing="10dp"
                android:horizontalSpacing="10dp"
                android:stretchMode="columnWidth"
+38 −0
Original line number Diff line number Diff line
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2015 The CyanogenMod Project

     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.
 -->

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/navigation_view_details_item"
    android:layout_width="match_parent"
    android:layout_height="@dimen/quick_search_grid"
    android:orientation="vertical">

    <com.cyanogenmod.filemanager.ui.widgets.FixedSizeImageView
        android:id="@+id/navigation_view_item_icon"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical|center_horizontal"
        android:scaleType="center"
        android:contentDescription="@null"
        android:src="@null" />

    <TextView
        android:id="@+id/navigation_view_item_name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical|center_horizontal" />

</LinearLayout>
+7 −0
Original line number Diff line number Diff line
@@ -192,4 +192,11 @@
    <!-- Search -->
    <dimen name="search_bar_height">48dp</dimen>
    <dimen name="search_image_dimensions">24dp</dimen>

    <!-- The quick search grid -->
    <dimen name="quick_search_grid">80dp</dimen>
    <dimen name="quick_search_text_margin_left">16dp</dimen>
    <dimen name="quick_search_text_margin_top">15dp</dimen>
    <dimen name="quick_search_text_height">16dp</dimen>

</resources>
+10 −1
Original line number Diff line number Diff line
@@ -922,4 +922,13 @@
    
    <!-- File System info -->
    <string name="file_system_info_unavailable">Unable to fetch file system info for this path</string>

    <!--  Quick search strings -->
    <string name="quick_search">Quick Search</string>
    <string name="images">Images</string>
    <string name="audio">Audio</string>
    <string name="videos">Videos</string>
    <string name="docs">Docs</string>
    <string name="apps">Apps</string>
    <string name="archives">Archives</string>
</resources>
+12 −128
Original line number Diff line number Diff line
@@ -24,7 +24,6 @@ import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.nfc.NfcAdapter;
import android.os.Bundle;
@@ -44,22 +43,20 @@ import android.util.Log;
import android.view.Gravity;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.SearchView;
import android.widget.TextView;
import android.widget.Toast;
import com.cyanogen.ambient.storage.provider.ProviderCapabilities;
import com.cyanogen.ambient.storage.provider.StorageProviderInfo;
import com.cyanogenmod.filemanager.FileManagerApplication;
import com.cyanogenmod.filemanager.R;
import com.cyanogenmod.filemanager.activities.preferences.SettingsPreferences;
import com.cyanogenmod.filemanager.adapters.QuickSearchAdapter;
import com.cyanogenmod.filemanager.console.storageapi.StorageApiConsole;
import com.cyanogenmod.filemanager.controllers.NavigationDrawerController;
import com.cyanogenmod.filemanager.model.Bookmark;
@@ -71,8 +68,6 @@ import com.cyanogenmod.filemanager.ui.fragments.NavigationFragment;
import com.cyanogenmod.filemanager.ui.fragments.NavigationFragment.OnGoHomeRequestListener;
import com.cyanogenmod.filemanager.ui.widgets.NavigationView.OnBackRequestListener;
import com.cyanogenmod.filemanager.util.FileHelper;
import com.cyanogenmod.filemanager.util.MimeTypeHelper;
import com.cyanogenmod.filemanager.util.MimeTypeHelper.MimeTypeCategory;
import com.cyanogenmod.filemanager.util.StorageHelper;

import java.io.File;
@@ -80,13 +75,6 @@ import java.io.InvalidClassException;
import java.util.ArrayList;
import java.util.List;

import static com.cyanogenmod.filemanager.util.MimeTypeHelper.MimeTypeCategory.APP;
import static com.cyanogenmod.filemanager.util.MimeTypeHelper.MimeTypeCategory.AUDIO;
import static com.cyanogenmod.filemanager.util.MimeTypeHelper.MimeTypeCategory.DOCUMENT;
import static com.cyanogenmod.filemanager.util.MimeTypeHelper.MimeTypeCategory.IMAGE;
import static com.cyanogenmod.filemanager.util.MimeTypeHelper.MimeTypeCategory.NONE;
import static com.cyanogenmod.filemanager.util.MimeTypeHelper.MimeTypeCategory.VIDEO;

/**
 * The main navigation activity. This activity is the center of the application.
 * From this the user can navigate, search, make actions.<br/>
@@ -141,32 +129,8 @@ public class MainActivity extends ActionBarActivity
    public static final String EXTRA_ADD_TO_HISTORY =
            "extra_add_to_history"; //$NON-NLS-1$

    static java.util.Map<MimeTypeCategory, Drawable> EASY_MODE_ICONS = new
            java.util.HashMap<MimeTypeCategory, Drawable>();

    private static final List<MimeTypeCategory> EASY_MODE_LIST = new ArrayList<MimeTypeCategory>() {
        {
            add(NONE);
            add(IMAGE);
            add(VIDEO);
            add(AUDIO);
            add(DOCUMENT);
            add(APP);
        }
    };

    private Toolbar mToolBar;

    private ArrayAdapter<MimeTypeCategory> mEasyModeAdapter;

    private View.OnClickListener mEasyModeItemClickListener = new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Integer position = (Integer) view.getTag();
            onClicked(position);
        }
    };

    /**
     * Fragment types
     */
@@ -181,13 +145,10 @@ public class MainActivity extends ActionBarActivity
        LOGIN,
    }

    static String MIME_TYPE_LOCALIZED_NAMES[];

    private Fragment currentFragment;
    private DrawerLayout mDrawerLayout;
    private NavigationDrawerController mNavigationDrawerController;

    private List<StorageProviderInfo> mProviderInfoList;
    private boolean mPopBackStack = false;

    private final BroadcastReceiver mNotificationReceiver = new BroadcastReceiver() {
@@ -226,8 +187,6 @@ public class MainActivity extends ActionBarActivity
                (NavigationView) findViewById(R.id.navigation_view);
        mNavigationDrawerController = new NavigationDrawerController(this, navigationDrawer);

        MIME_TYPE_LOCALIZED_NAMES = MimeTypeCategory.getFriendlyLocalizedNames(this);

        showWelcomeMsg();

        //FragmentManager.OnBackStackChangedListener
@@ -256,7 +215,7 @@ public class MainActivity extends ActionBarActivity
        });

        handleSearchBar();

        initQuickSearch();
        setHomeStatusBarColor();

        //Initialize nfc adapter
@@ -519,87 +478,13 @@ public class MainActivity extends ActionBarActivity
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setHomeButtonEnabled(true);
        getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_menu);

        initEasyModePlus();
    }

    private void initEasyModePlus() {

        MIME_TYPE_LOCALIZED_NAMES = MimeTypeCategory.getFriendlyLocalizedNames(this);
        EASY_MODE_ICONS.put(MimeTypeHelper.MimeTypeCategory.NONE, getResources().getDrawable(
                R.drawable.ic_em_all));
        EASY_MODE_ICONS.put(MimeTypeHelper.MimeTypeCategory.IMAGE, getResources().getDrawable(
                R.drawable.ic_em_image));
        EASY_MODE_ICONS.put(MimeTypeHelper.MimeTypeCategory.VIDEO, getResources().getDrawable(
                R.drawable.ic_em_video));
        EASY_MODE_ICONS.put(MimeTypeHelper.MimeTypeCategory.AUDIO, getResources().getDrawable(
                R.drawable.ic_em_music));
        EASY_MODE_ICONS.put(MimeTypeHelper.MimeTypeCategory.DOCUMENT, getResources().getDrawable(
                R.drawable.ic_em_document));
        EASY_MODE_ICONS.put(MimeTypeHelper.MimeTypeCategory.APP, getResources().getDrawable(
                R.drawable.ic_em_application));

        GridView gridview = (GridView) findViewById(R.id.easy_modeView);

        mEasyModeAdapter = new android.widget.ArrayAdapter<MimeTypeCategory>(this, R.layout
                .navigation_view_simple_item) {
            @Override
            public View getView(int position, View convertView, ViewGroup parent) {
                convertView = (convertView == null) ? getLayoutInflater().inflate(R.layout
                        .navigation_view_simple_item, parent, false) : convertView;
                MimeTypeCategory item = getItem(position);
                String typeTitle = MIME_TYPE_LOCALIZED_NAMES[item.ordinal()];
                TextView typeTitleTV = (TextView) convertView
                        .findViewById(R.id.navigation_view_item_name);
                ImageView typeIconIV = (ImageView) convertView
                        .findViewById(R.id.navigation_view_item_icon);

                typeTitleTV.setText(typeTitle);
                typeIconIV.setImageDrawable(EASY_MODE_ICONS.get(item));
                convertView.setOnClickListener(mEasyModeItemClickListener);
                convertView.setTag(position);
                return convertView;
            }
        };
        mEasyModeAdapter.addAll(EASY_MODE_LIST);
        gridview.setAdapter(mEasyModeAdapter);

        gridview.setOnItemClickListener(new OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
                Toast.makeText(MainActivity.this, "" + position, Toast.LENGTH_SHORT).show();
            }
        });
    }

    private void onClicked(int position) {
        Intent intent = new Intent(this, SearchActivity.class);
        intent.setAction(Intent.ACTION_SEARCH);
        intent.putExtra(SearchActivity.EXTRA_SEARCH_DIRECTORY, FileHelper.ROOT_DIRECTORY);
        intent.putExtra(SearchManager.QUERY, "*"); // Use wild-card '*'

        if (position == 0) {
            FragmentManager fragmentManager = getSupportFragmentManager();

            fragmentManager.beginTransaction()
                    .replace(R.id.navigation_fragment_container, new NavigationFragment())
                    .setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE)
                    .commit();
            return;

        } else {
            ArrayList<MimeTypeCategory> searchCategories = new ArrayList<MimeTypeCategory>();
            MimeTypeCategory selectedCategory = EASY_MODE_LIST.get(position);
            searchCategories.add(selectedCategory);
            // a one off case where we implicitly want to also search for TEXT mimetypes when the
            // DOCUMENTS category is selected
            if (selectedCategory == MimeTypeCategory.DOCUMENT) {
                searchCategories.add(
                        MimeTypeCategory.TEXT);
            }
            intent.putExtra(SearchActivity.EXTRA_SEARCH_MIMETYPE, searchCategories);
    }

        startActivity(intent);
    private void initQuickSearch() {
        GridView gridview = (GridView) findViewById(R.id.quick_search_view);
        QuickSearchAdapter quickSearchAdapter = new QuickSearchAdapter(this, R.layout.quick_search_item);
        quickSearchAdapter.addAll(quickSearchAdapter.QUICK_SEARCH_LIST);
        gridview.setAdapter(quickSearchAdapter);
    }

    @Override
@@ -693,19 +578,18 @@ public class MainActivity extends ActionBarActivity
    public void onActionBarItemClick(android.view.View view) {

        if (currentFragment instanceof NavigationFragment) {

            NavigationFragment navigationFragment = ((NavigationFragment)currentFragment);
            switch (view.getId()) {
                //######################
                //Selection Actions
                //######################
                case com.cyanogenmod.filemanager.R.id.ab_selection_done:
                case R.id.ab_selection_done:
                    //Show information of the filesystem
                    ((NavigationFragment)currentFragment)
                            .getCurrentNavigationView().onDeselectAll();
                    navigationFragment.getCurrentNavigationView().onDeselectAll();
                    break;
                case R.id.ab_actions:
                    // Show the actions dialog
                    ((NavigationFragment) currentFragment).openActionsDialog(null, true);
                    navigationFragment.openActionsDialog(null, true);
                default:
                    break;
            }
Loading