Android Open Source - android_WallBox Wallpaper Fragment






From Project

Back to project page android_WallBox.

License

The source code is released under:

Apache License

If you think the Android project android_WallBox listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/*
 * Copyright 2014 Jeremie Long//from   w  w  w  .ja  v a 2s . c om
 *
 * 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.
 */

package com.lithidsw.wallbox.app.wallsnap;

import java.io.File;
import java.util.ArrayList;

import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Environment;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.GridView;
import android.widget.RelativeLayout;
import android.widget.TextView;

import com.lithidsw.wallbox.R;
import com.lithidsw.wallbox.app.wallsnap.adapters.WallpaperAdapter;
import com.lithidsw.wallbox.utils.C;
import com.lithidsw.wallbox.utils.CustomDialogs;

public class WallpaperFragment extends Fragment {
    WallpaperAdapter wallAdapter;
    SharedPreferences prefs;

    private WallpaperLoader wallLoader;

    private FragmentActivity fa;

    GridView wallGrid;
    TextView mTextView;

    ArrayList<String[]> aWall = new ArrayList<String[]>();

    private boolean simpleFirstRun = false;

    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        RelativeLayout rl = (RelativeLayout) inflater.inflate(R.layout.wallpaper_frag, container, false);
        if (rl != null) {
            fa = super.getActivity();
            wallGrid = (GridView) rl.findViewById(R.id.grid_view);
            prefs = fa.getSharedPreferences(C.PREF, Context.MODE_PRIVATE);

            if (!prefs.getBoolean(C.PREF_WALLPAPER_CHECK_SAVE_SORT, false)) {
                prefs.edit().putInt(C.PREF_WALLPAPER_CURRENT_SORT, 0).commit();
            }

            wallGrid = (GridView) rl.findViewById(R.id.grid_view);
            mTextView = (TextView) rl.findViewById(R.id.no_content);
            wallAdapter = new WallpaperAdapter(fa, aWall);
            wallGrid.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                  Intent intent = new Intent(fa, WallSnapActivity.class);
                  Bundle bundle = new Bundle();
                  bundle.putString(C.EXTRA_PATH, aWall.get(position)[0]);
                  intent.putExtras(bundle);
                  startActivity(intent);
                }
            });
            wallGrid.setAdapter(wallAdapter);
            setHasOptionsMenu(true);

            if (!prefs.getBoolean(C.PREF_WALLPAPER_FIRST_RUN_MAIN, false)) {
                prefs.edit().putBoolean(C.PREF_WALLPAPER_FIRST_RUN_MAIN, true).commit();
                String title = getResources().getString(R.string.main_title_wallpapers);
                String message = getResources().getString(R.string.wallpaper_description);
                new CustomDialogs().openFirstDialog(fa, title, message);
            }
        }
        return rl;
    }

    @Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        if (menu.size() > 0) {
            if (!simpleFirstRun) {
                if (!prefs.getBoolean(C.PREF_WALLPAPER_CHECK_SAVE_SORT, false)) {
                    prefs.edit().putInt(C.PREF_WALLPAPER_CURRENT_SORT, 0);
                }
                if (!prefs.getBoolean(C.PREF_WALLPAPER_FIRST_RUN_MAIN, false)) {
                    runReload();
                    prefs.edit().putBoolean(C.PREF_WALLPAPER_FIRST_RUN_MAIN, true).commit();
                } else {
                    runReload();
                }
                simpleFirstRun = true;
            }
        }
        super.onCreateOptionsMenu(menu, inflater);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case R.id.action_refresh:
                runReload();
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }

    @Override
    public void onResume() {
        super.onResume();
        runReload();
    }

    private void runReload() {
        stopWallLoader();
        wallLoader = (WallpaperLoader) new WallpaperLoader().execute();
    }

    @Override
    public void onPause() {
        super.onPause();
        stopWallLoader();
    }
    
    private void stopWallLoader() {
        if (wallLoader != null
                && wallLoader.getStatus() != WallpaperLoader.Status.FINISHED) {
            wallLoader.cancel(true);
            wallLoader = null;
        }
    }

    class WallpaperLoader extends AsyncTask<String, String, ArrayList<String[]>> {

        @Override
        protected void onPreExecute() {
            fa.setProgressBarIndeterminateVisibility(true);
            aWall.clear();
            wallGrid.invalidateViews();
        }

        @Override
        protected ArrayList<String[]> doInBackground(String... arg) {
          
            File storageDir = new File(
                    Environment.getExternalStoragePublicDirectory(
                            Environment.DIRECTORY_PICTURES
                    ),
                    "WallSnap"
            );
            
            ArrayList<String[]> list = new ArrayList<String[]>();
            
            if (storageDir.exists()) {
                for (File file : storageDir.listFiles()) {
                  if (!file.isDirectory()) {
                      String[] f = new String[2];
                      f[0] = file.getAbsolutePath();
                      f[1] =   file.getName();
                      list.add(f);
                  }
                }  
            }
            
            return list;
        }

        @Override
        protected void onPostExecute(ArrayList<String[]> list) {
            fa.setProgressBarIndeterminateVisibility(false);
            aWall.addAll(list);
            wallAdapter.notifyDataSetChanged();
            if (list.size() > 0) {
                wallGrid.setVisibility(View.VISIBLE);
                mTextView.setVisibility(View.GONE);
            } else {
                wallGrid.setVisibility(View.GONE);
                mTextView.setVisibility(View.VISIBLE);
            }
        }
    }
}




Java Source Code List

com.lithidsw.wallbox.AboutActivity.java
com.lithidsw.wallbox.ActionReceiver.java
com.lithidsw.wallbox.MainActivity.java
com.lithidsw.wallbox.app.colorwall.ColorWallFrag.java
com.lithidsw.wallbox.app.randomizer.RandomizerFrag.java
com.lithidsw.wallbox.app.randomizer.adapter.RandomizerGridAdapter.java
com.lithidsw.wallbox.app.randomizer.db.DBHelper.java
com.lithidsw.wallbox.app.randomizer.db.TableHelper.java
com.lithidsw.wallbox.app.saturate.SaturateFrag.java
com.lithidsw.wallbox.app.theme.ThemeFragment.java
com.lithidsw.wallbox.app.theme.ThemesMainFragment.java
com.lithidsw.wallbox.app.wallsnap.WallSnapActivity.java
com.lithidsw.wallbox.app.wallsnap.WallSnapFragment.java
com.lithidsw.wallbox.app.wallsnap.WallpaperFragment.java
com.lithidsw.wallbox.app.wallsnap.adapters.WallpaperAdapter.java
com.lithidsw.wallbox.loader.ImageLoader.java
com.lithidsw.wallbox.loader.MemoryCache.java
com.lithidsw.wallbox.utils.BitMapBlur.java
com.lithidsw.wallbox.utils.C.java
com.lithidsw.wallbox.utils.ColorFilterGenerator.java
com.lithidsw.wallbox.utils.ContribDialog.java
com.lithidsw.wallbox.utils.CustomDialogs.java
com.lithidsw.wallbox.utils.DateBuilder.java
com.lithidsw.wallbox.utils.JsonHelper.java
com.lithidsw.wallbox.utils.MenuHelper.java
com.lithidsw.wallbox.utils.Utils.java