Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Sprint 2 - Bug fixing #370

Merged
merged 5 commits into from
Feb 12, 2016
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions alfresco-mobile-android/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,8 @@ android {
//DEBUG BUILD TYPE
debugCompile project(':extensions:hockeyapp')
debugCompile project(':extensions:analytics')
debugCompile project(':extensions:tools')


storeCompile project(':extensions:samsung')
storeCompile project(':extensions:scansnap')
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,10 @@
import java.util.Map;

import org.alfresco.mobile.android.application.R;
import org.alfresco.mobile.android.application.activity.BaseActivity;
import org.alfresco.mobile.android.application.activity.MainActivity;
import org.alfresco.mobile.android.application.capture.DeviceCapture;
import org.alfresco.mobile.android.application.capture.DeviceCaptureHelper;
import org.alfresco.mobile.android.application.configuration.model.view.LocalConfigModel;
import org.alfresco.mobile.android.application.configuration.model.view.LocalFilesConfigModel;
import org.alfresco.mobile.android.application.fragments.MenuFragmentHelper;
Expand All @@ -47,20 +51,18 @@
import org.alfresco.mobile.android.ui.fragments.WaitingDialogFragment;

import android.content.ActivityNotFoundException;
import android.content.DialogInterface;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.DialogFragment;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentTransaction;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.SubMenu;
import android.view.View;
import android.widget.GridView;

import com.cocosw.bottomsheet.BottomSheet;
import com.squareup.otto.Subscribe;

/**
Expand Down Expand Up @@ -345,45 +347,46 @@ private void displayNavigation(File file, boolean backstack)
// MENU
// //////////////////////////////////////////////////////////////////////
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater)
protected View.OnClickListener onPrepareFabClickListener()
{
super.onCreateOptionsMenu(menu, inflater);
if (!MenuFragmentHelper.canDisplayFragmentMenu(getActivity())) { return; }
if (mode == MODE_LISTING)
if (!MenuFragmentHelper.canDisplayFragmentMenu(getActivity())) { return null; }
if (mode != MODE_LISTING) { return null; }
return new View.OnClickListener()
{

if (parent != null && privateFolder != null && !parent.getPath().startsWith(privateFolder.getPath()))
@Override
public void onClick(View v)
{
MenuItem mi = menu.add(Menu.NONE, R.id.menu_create_folder, Menu.FIRST, R.string.folder_create);
mi.setIcon(R.drawable.ic_add_folder);
mi.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
}

SubMenu createMenu = menu.addSubMenu(Menu.NONE, R.id.menu_device_capture, Menu.FIRST + 30,
R.string.add_menu);
createMenu.setIcon(android.R.drawable.ic_menu_add);
createMenu.getItem().setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);

createMenu.add(Menu.NONE, R.id.menu_create_document, Menu.FIRST + 1, R.string.create_document);

createMenu.add(Menu.NONE, R.id.menu_device_capture_camera_photo, Menu.FIRST + 1, R.string.take_photo);

createMenu.add(Menu.NONE, R.id.menu_device_capture_camera_video, Menu.FIRST + 2, R.string.make_video);
BottomSheet.Builder builder = new BottomSheet.Builder(getActivity(), R.style.M_StyleDialog)
.title(R.string.add_menu);

if (ScanSnapManager.getInstance(getActivity()) != null
&& ScanSnapManager.getInstance(getActivity()).hasScanSnapApplication())
{
createMenu.add(Menu.NONE, R.id.menu_scan_document, Menu.FIRST + 4, R.string.scan);
if (parent != null && privateFolder != null && !parent.getPath().startsWith(privateFolder.getPath()))
{
builder.sheet(R.id.menu_create_folder, R.drawable.ic_repository_light, R.string.folder_create);
}
builder.sheet(R.id.menu_create_document, R.drawable.ic_doc_light, R.string.create_document);
builder.sheet(R.id.menu_device_capture_camera_photo, R.drawable.ic_camera, R.string.take_photo);
builder.sheet(R.id.menu_device_capture_camera_video, R.drawable.ic_videos, R.string.make_video);
builder.sheet(R.id.menu_device_capture_mic_audio, R.drawable.ic_microphone, R.string.record_audio);
if (ScanSnapManager.getInstance(getActivity()) != null
&& ScanSnapManager.getInstance(getActivity()).hasScanSnapApplication())
{
builder.sheet(R.id.menu_scan_document, R.drawable.ic_camera, R.string.scan);
}
builder.grid().listener(new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
{
onOptionsItemSelected(which);
}
}).show();
}

createMenu.add(Menu.NONE, R.id.menu_device_capture_mic_audio, Menu.FIRST + 3, R.string.record_audio);
}
};
}

@Override
public boolean onOptionsItemSelected(MenuItem item)
public boolean onOptionsItemSelected(int id)
{
switch (item.getItemId())
switch (id)
{
case R.id.menu_create_folder:
createFolder();
Expand All @@ -393,8 +396,23 @@ public boolean onOptionsItemSelected(MenuItem item)
.newInstance(SessionUtils.getAccount(getActivity()), TAG);
dialogft.show(getFragmentManager(), DocumentTypesDialogFragment.TAG);
return true;
case R.id.menu_device_capture_camera_photo:
case R.id.menu_device_capture_camera_video:
case R.id.menu_device_capture_mic_audio:
DeviceCapture capture = DeviceCaptureHelper.createDeviceCapture((BaseActivity) getActivity(), id);
if (getActivity() instanceof MainActivity)
{
((MainActivity) getActivity()).setCapture(capture);
}
return true;
case R.id.menu_scan_document:
if (ScanSnapManager.getInstance(getActivity()) != null)
{
ScanSnapManager.getInstance(getActivity()).startPresetChooser(getActivity());
}
return true;
}
return super.onOptionsItemSelected(item);
return false;
}

// //////////////////////////////////////////////////////////////////////
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,20 +28,20 @@
import org.alfresco.mobile.android.ui.operation.OperationWaitingDialogFragment;
import org.alfresco.mobile.android.ui.utils.UIUtils;

import android.app.Dialog;
import android.content.res.Configuration;
import android.os.Bundle;
import android.support.v4.app.DialogFragment;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.EditText;

import com.afollestad.materialdialogs.DialogAction;
import com.afollestad.materialdialogs.MaterialDialog;
import com.rengwuxian.materialedittext.MaterialEditText;

public class FileNameDialogFragment extends DialogFragment
{
Expand Down Expand Up @@ -90,59 +90,37 @@ public static DialogFragment newInstance(File parent, File fileToRename)
return adf;
}

@Override
public void onStart()
// ///////////////////////////////////////////////////////////////////////////
// LIFECYCLE
// ///////////////////////////////////////////////////////////////////////////
public Dialog onCreateDialog(Bundle savedInstanceState)
{
getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
if (fileToRename != null)
{
getDialog().setFeatureDrawableResource(Window.FEATURE_LEFT_ICON, R.drawable.ic_edit);
}
else
{
getDialog().setFeatureDrawableResource(Window.FEATURE_LEFT_ICON, R.drawable.mime_folder);
}
super.onStart();
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
// Init File
if (getArguments().containsKey(ARGUMENT_FILE_RENAME))
{
fileToRename = (File) getArguments().get(ARGUMENT_FILE_RENAME);
}
parentFile = (File) getArguments().get(ARGUMENT_FOLDER);

String title = null;
if (fileToRename != null)
{
getDialog().setTitle(getString(R.string.action_rename) + " : " + fileToRename.getName());
title = getString(R.string.action_rename) + " : " + fileToRename.getName();
}
else
{
getDialog().setTitle(R.string.folder_create);
title = getString(R.string.folder_create);
}

getDialog().requestWindowFeature(Window.FEATURE_LEFT_ICON);

ViewGroup v = (ViewGroup) inflater.inflate(R.layout.app_create_document, container, false);
LayoutInflater inflater = LayoutInflater.from(getActivity());
final View v = inflater.inflate(R.layout.app_create_document, (ViewGroup) this.getView());

int width = (int) Math
.round(UIUtils.getScreenDimension(getActivity())[0]
* (Float.parseFloat(getResources().getString(android.R.dimen.dialog_min_width_major).replace(
"%", "")) * 0.01));
v.setLayoutParams(new LayoutParams(width, LayoutParams.MATCH_PARENT));

final EditText textName = ((EditText) v.findViewById(R.id.document_name));
final Button validate = UIUtils.initValidation(v, R.string.create);
validate.setEnabled(false);
final Button cancel = UIUtils.initCancel(v, R.string.cancel);
final MaterialEditText textName = ((MaterialEditText) v.findViewById(R.id.document_name));

if (fileToRename != null)
{
textName.setText("." + IOUtils.extractFileExtension(fileToRename.getName()));
validate.setText(R.string.ok);
}

textName.addTextChangedListener(new TextWatcher()
Expand All @@ -151,16 +129,16 @@ public void afterTextChanged(Editable s)
{
if (s.length() > 0)
{
validate.setEnabled(true);
((MaterialDialog) getDialog()).getActionButton(DialogAction.POSITIVE).setEnabled(true);
if (UIUtils.hasInvalidName(s.toString().trim()))
{
textName.setError(getString(R.string.filename_error_character));
validate.setEnabled(false);
((MaterialDialog) getDialog()).getActionButton(DialogAction.POSITIVE).setEnabled(false);
}
else if ((new File(parentFile, s.toString().trim()).exists()))
{
textName.setError(getString(R.string.create_document_filename_error));
validate.setEnabled(false);
((MaterialDialog) getDialog()).getActionButton(DialogAction.POSITIVE).setEnabled(false);
}
else
{
Expand All @@ -169,7 +147,7 @@ else if ((new File(parentFile, s.toString().trim()).exists()))
}
else
{
validate.setEnabled(false);
((MaterialDialog) getDialog()).getActionButton(DialogAction.POSITIVE).setEnabled(false);
textName.setError(null);
}
}
Expand All @@ -183,47 +161,57 @@ public void onTextChanged(CharSequence s, int start, int before, int count)
}
});

validate.setOnClickListener(new OnClickListener()
{
public void onClick(View v)
{
UIUtils.hideKeyboard(getActivity());
MaterialDialog dialog = new MaterialDialog.Builder(getActivity()).iconRes(R.drawable.ic_application_logo)
.title(title).customView(v, true).positiveText((fileToRename != null) ? R.string.ok : R.string.create)
.negativeText(R.string.cancel).callback(new MaterialDialog.ButtonCallback() {

if (fileToRename != null)
{
String operationId = Operator.with(getActivity()).load(
new RenameFileRequest.Builder(fileToRename, textName.getText().toString().trim())
.setNotificationVisibility(OperationRequest.VISIBILITY_DIALOG));
@Override
public void onNegative(MaterialDialog dialog) {
dialog.dismiss();
}

OperationWaitingDialogFragment.newInstance(CreateDirectoryRequest.TYPE_ID, R.drawable.ic_edit,
getString(R.string.action_rename), null, null, 0, operationId).show(
getActivity().getSupportFragmentManager(), OperationWaitingDialogFragment.TAG);
}
else
{
String operationId = Operator.with(getActivity()).load(
new CreateDirectoryRequest.Builder((File) getArguments().get(ARGUMENT_FOLDER), textName
.getText().toString().trim())
.setNotificationVisibility(OperationRequest.VISIBILITY_DIALOG));

OperationWaitingDialogFragment.newInstance(CreateDirectoryRequest.TYPE_ID,
R.drawable.ic_add_folder, getString(R.string.folder_create), null, null, 0, operationId)
.show(getActivity().getSupportFragmentManager(), OperationWaitingDialogFragment.TAG);
}
@Override
public void onPositive(MaterialDialog dialog) {
UIUtils.hideKeyboard(getActivity());

if (fileToRename != null) {
String operationId = Operator.with(getActivity())
.load(new RenameFileRequest.Builder(fileToRename,
textName.getText().toString().trim())
.setNotificationVisibility(OperationRequest.VISIBILITY_DIALOG));

OperationWaitingDialogFragment
.newInstance(CreateDirectoryRequest.TYPE_ID, R.drawable.ic_edit,
getString(R.string.action_rename), null, null, 0, operationId)
.show(getActivity().getSupportFragmentManager(),
OperationWaitingDialogFragment.TAG);
} else {
String operationId = Operator.with(getActivity())
.load(new CreateDirectoryRequest.Builder((File) getArguments().get(ARGUMENT_FOLDER),
textName.getText().toString().trim())
.setNotificationVisibility(OperationRequest.VISIBILITY_DIALOG));

OperationWaitingDialogFragment
.newInstance(CreateDirectoryRequest.TYPE_ID, R.drawable.ic_add_folder,
getString(R.string.folder_create), null, null, 0, operationId)
.show(getActivity().getSupportFragmentManager(),
OperationWaitingDialogFragment.TAG);
}

dismiss();
}
}).build();

dismiss();
}
});
dialog.getActionButton(DialogAction.POSITIVE).setEnabled(false);

cancel.setOnClickListener(new OnClickListener()
{
public void onClick(View v)
{
FileNameDialogFragment.this.dismiss();
}
});
return dialog;
}

return v;
@Override
public void onStart()
{
getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
super.onStart();
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,20 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle sa
setRootView(inflater.inflate(R.layout.fr_settings, container, false));

TwoLinesViewHolder vh;

// Feedback - Email
vh = HolderUtils.configure(viewById(R.id.settings_feedback_email_container),
getString(R.string.settings_feedback_email), getString(R.string.settings_feedback_email_summary), -1);
HolderUtils.makeMultiLine(vh.bottomText, 3);
viewById(R.id.settings_feedback_email_container).setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
ActionUtils.actionSendFeedbackEmail(GeneralPreferences.this);
}
});

// Feedback - Analytics
if (AnalyticsManager.getInstance(getActivity()) == null
|| AnalyticsManager.getInstance(getActivity()).isBlocked())
Expand Down
Loading