Skip to content

Commit

Permalink
Quick Actions
Browse files Browse the repository at this point in the history
  • Loading branch information
faraazb committed Oct 22, 2020
1 parent cc3e4dc commit c88139a
Show file tree
Hide file tree
Showing 2 changed files with 176 additions and 13 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,21 @@ public void onClick(View v) {
}
});

if(getIntent().getBooleanExtra("isFromQuickActions", false)) {
String type = getIntent().getStringExtra("quickActionType");
if(type != null) {
if(type.equals("image")) {
selectedImagePath = getIntent().getStringExtra("imagePath");
imageNote.setImageBitmap(BitmapFactory.decodeFile(selectedImagePath));
imageNote.setVisibility(View.VISIBLE);
findViewById(R.id.imageRemoveImage).setVisibility(View.VISIBLE);
} else if(type.equals("URL")) {
textWebURL.setText(getIntent().getStringExtra("URL"));
layoutWebURL.setVisibility(View.VISIBLE);
}
}
}

initMiscellaneous();
setSubtitleIndicatorColor();
}
Expand Down Expand Up @@ -435,20 +450,20 @@ protected void onActivityResult(int requestCode, int resultCode, @Nullable Inten
}
}

private String getPathFromUri(Uri contentUri) {
String filePath;
Cursor cursor = getContentResolver()
.query(contentUri, null, null, null, null);
if (cursor == null) {
filePath = contentUri.getPath();
} else {
cursor.moveToFirst();
int index = cursor.getColumnIndex("_data");
filePath = cursor.getString(index);
cursor.close();
private String getPathFromUri(Uri contentUri) {
String filePath;
Cursor cursor = getContentResolver()
.query(contentUri, null, null, null, null);
if (cursor == null) {
filePath = contentUri.getPath();
} else {
cursor.moveToFirst();
int index = cursor.getColumnIndex("_data");
filePath = cursor.getString(index);
cursor.close();
}
return filePath;
}
return filePath;
}

private void showAddURLDialog() {
if (dialogAddURL == null) {
Expand Down
148 changes: 148 additions & 0 deletions app/src/main/java/com/teafifty/mantis/activities/MainActivity.java
Original file line number Diff line number Diff line change
@@ -1,19 +1,33 @@
package com.teafifty.mantis.activities;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import androidx.recyclerview.widget.RecyclerView;
import androidx.recyclerview.widget.StaggeredGridLayoutManager;

import android.Manifest;
import android.annotation.SuppressLint;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.database.Cursor;
import android.graphics.drawable.ColorDrawable;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
import android.provider.MediaStore;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Patterns;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.Toast;

import com.teafifty.mantis.R;
import com.teafifty.mantis.adapters.NotesAdapter;
Expand All @@ -29,13 +43,17 @@ public class MainActivity extends AppCompatActivity implements NotesListener {
public static final int REQUEST_CODE_ADD_NOTE = 1;
public static final int REQUEST_CODE_UPDATE_NOTE = 2;
public static final int REQUEST_CODE_SHOW_NOTES = 3;
public static final int REQUEST_CODE_SELECT_IMAGE = 4;
public static final int REQUEST_CODE_STORAGE_PERMISSION = 5;

private RecyclerView notesRecyclerView;
private List<Note> noteList;
private NotesAdapter notesAdapter;

private int noteClickedPosition = -1;

private AlertDialog dialogAddURL;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Expand Down Expand Up @@ -82,6 +100,75 @@ public void afterTextChanged(Editable s) {
}
}
});

findViewById(R.id.imageAddNote).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivityForResult(
new Intent(getApplicationContext(), CreateNoteActivity.class),
REQUEST_CODE_ADD_NOTE
);
}
});

findViewById(R.id.imageAddImage).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (ContextCompat.checkSelfPermission(
getApplicationContext(), Manifest.permission.READ_EXTERNAL_STORAGE
) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(
MainActivity.this,
new String[] {Manifest.permission.READ_EXTERNAL_STORAGE},
REQUEST_CODE_STORAGE_PERMISSION
);
} else {
selectImage();
}
}
});

findViewById(R.id.imageAddWebLink).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showAddURLDialog();
}
});
}

private void selectImage() {
Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
if (intent.resolveActivity(getPackageManager()) != null) {
startActivityForResult(intent, REQUEST_CODE_SELECT_IMAGE);

}
}

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == REQUEST_CODE_STORAGE_PERMISSION && grantResults.length > 0) {
if(grantResults[0] == PackageManager.PERMISSION_GRANTED) {
selectImage();
} else {
Toast.makeText(this, "Permission Denied", Toast.LENGTH_SHORT).show();
}
}
}

private String getPathFromUri(Uri contentUri) {
String filePath;
Cursor cursor = getContentResolver()
.query(contentUri, null, null, null, null);
if (cursor == null) {
filePath = contentUri.getPath();
} else {
cursor.moveToFirst();
int index = cursor.getColumnIndex("_data");
filePath = cursor.getString(index);
cursor.close();
}
return filePath;
}

@Override
Expand Down Expand Up @@ -140,6 +227,67 @@ protected void onActivityResult(int requestCode, int resultCode, @Nullable Inten
if(data != null) {
getNotes(REQUEST_CODE_UPDATE_NOTE, data.getBooleanExtra("isNoteDeleted", false));
}
} else if(requestCode == REQUEST_CODE_SELECT_IMAGE && resultCode == RESULT_OK) {
if(data != null) {
Uri selectedImageUri = data.getData();
if(selectedImageUri != null) {
try {
String selectedImagePath = getPathFromUri(selectedImageUri);
Intent intent = new Intent(getApplicationContext(), CreateNoteActivity.class);
intent.putExtra("isFromQuickActions", true);
intent.putExtra("quickActionType", "image");
intent.putExtra("imagePath", selectedImagePath);
startActivityForResult(intent, REQUEST_CODE_ADD_NOTE);
} catch (Exception exception) {
Toast.makeText(this, exception.getMessage(), Toast.LENGTH_SHORT).show();
}
}
}
}
}

private void showAddURLDialog() {
if (dialogAddURL == null) {
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
final View view = LayoutInflater.from(this).inflate(
R.layout.layout_add_url,
(ViewGroup) findViewById(R.id.layoutAddUrlContainer)
);
builder.setView(view);

dialogAddURL = builder.create();
if(dialogAddURL.getWindow() != null) {
dialogAddURL.getWindow().setBackgroundDrawable(new ColorDrawable(0));
}

final EditText inputURL = view.findViewById(R.id.inputURL);
inputURL.requestFocus();

view.findViewById(R.id.textAdd).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(inputURL.getText().toString().trim().isEmpty()) {
Toast.makeText(MainActivity.this, "Enter URL", Toast.LENGTH_SHORT).show();
} else if(!Patterns.WEB_URL.matcher(inputURL.getText().toString()).matches()){
Toast.makeText(MainActivity.this, "Enter a valid URL", Toast.LENGTH_SHORT).show();
} else {
dialogAddURL.dismiss();
Intent intent = new Intent(getApplicationContext(), CreateNoteActivity.class);
intent.putExtra("isFromQuickActions", true);
intent.putExtra("quickActionType", "URL");
intent.putExtra("URL", inputURL.getText().toString());
startActivityForResult(intent, REQUEST_CODE_ADD_NOTE);
}
}
});

view.findViewById(R.id.textCancel).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialogAddURL.dismiss();
}
});
}
dialogAddURL.show();
}
}

0 comments on commit c88139a

Please sign in to comment.