/*
* Copyright (C) 2015 The Android Open Source 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.
*/
package org.awesomeapp.messenger.ui;
import android.Manifest;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.content.res.AssetManager;
import android.graphics.Typeface;
import android.graphics.drawable.ColorDrawable;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.os.Environment;
import android.preference.PreferenceManager;
import android.provider.MediaStore;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;
import org.apache.commons.io.IOUtils;
import org.awesomeapp.messenger.ImApp;
import org.awesomeapp.messenger.provider.Imps;
import org.awesomeapp.messenger.ui.stickers.Sticker;
import org.awesomeapp.messenger.ui.stickers.StickerGroup;
import org.awesomeapp.messenger.ui.stickers.StickerManager;
import org.awesomeapp.messenger.ui.stickers.StickerPagerAdapter;
import org.awesomeapp.messenger.ui.stickers.StickerSelectListener;
import org.awesomeapp.messenger.util.SecureMediaStore;
import org.awesomeapp.messenger.util.SystemServices;
import org.ironrabbit.type.CustomTypefaceManager;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.UUID;
import im.zom.messenger.R;
import info.guardianproject.iocipher.FileInputStream;
public class StickerActivity extends BaseActivity {
private ImApp mApp;
private ViewPager mStickerPager;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.awesome_activity_stickers);
setTitle(R.string.action_stickers);
Intent intent = getIntent();
mApp = (ImApp)getApplication();
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
mStickerPager = (ViewPager)findViewById(R.id.stickerPager);
applyStyleForToolbar();
initStickers();
}
public void applyStyleForToolbar() {
//not set color
final SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this);
int selColor = settings.getInt("themeColor",-1);
if (selColor != -1) {
if (Build.VERSION.SDK_INT >= 21) {
getWindow().setNavigationBarColor(selColor);
getWindow().setStatusBarColor(selColor);
}
getSupportActionBar().setBackgroundDrawable(new ColorDrawable(selColor));
}
}
private void initStickers ()
{
Collection<StickerGroup> emojiGroups = StickerManager.getInstance(this).getEmojiGroups();
if (emojiGroups.size() > 0)
{
StickerPagerAdapter emojiPagerAdapter = new StickerPagerAdapter(this, new ArrayList<StickerGroup>(emojiGroups),
new StickerSelectListener() {
@Override
public void onStickerSelected(Sticker s) {
exportAsset(s.assetUri,s.name);
}
});
mStickerPager.setAdapter(emojiPagerAdapter);
}
}
private final static int MY_PERMISSIONS_REQUEST_FILE = 1;
private boolean checkPermissions ()
{
int permissionCheck = ContextCompat.checkSelfPermission(this,
Manifest.permission.WRITE_EXTERNAL_STORAGE);
if (permissionCheck ==PackageManager.PERMISSION_DENIED)
{
// Should we show an explanation?
if (ActivityCompat.shouldShowRequestPermissionRationale(this,
Manifest.permission.READ_EXTERNAL_STORAGE)) {
// Show an expanation to the user *asynchronously* -- don't block
// this thread waiting for the user's response! After the user
// sees the explanation, try again to request the permission.
Snackbar.make(mStickerPager, R.string.grant_perms, Snackbar.LENGTH_LONG).show();
} else {
// No explanation needed, we can request the permission.
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
MY_PERMISSIONS_REQUEST_FILE);
// MY_PERMISSIONS_REQUEST_READ_CONTACTS is an
// app-defined int constant. The callback method gets the
// result of the request.
}
return false;
}
else {
return true;
}
}
private void exportAsset (Uri mediaUri, String name)
{
if (checkPermissions()) {
try {
String mimeType = "image/png";
java.io.File exportPath = new File(Environment.getExternalStorageDirectory(), name + ".png");
java.io.InputStream fis = getResources().getAssets().open(mediaUri.getPath());
java.io.FileOutputStream fos = new java.io.FileOutputStream(exportPath, false);
IOUtils.copyLarge(fis, fos);
fos.close();
fis.close();
Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND);
shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(exportPath));
shareIntent.setType(mimeType);
startActivity(Intent.createChooser(shareIntent, getResources().getText(R.string.export_media)));
} catch (IOException e) {
Toast.makeText(this, "Export Failed " + e.getMessage(), Toast.LENGTH_LONG).show();
e.printStackTrace();
}
}
}
@Override
protected void onResume() {
super.onResume();
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
finish();
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// getMenuInflater().inflate(R.menu.menu_conversation_detail, menu);
return true;
}
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
super.onSaveInstanceState(savedInstanceState);
}
@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
}
}