| // Copyright 2016 The Vanadium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| package io.v.todos; |
| |
| import android.content.Context; |
| import android.content.DialogInterface; |
| import android.graphics.Paint; |
| import android.support.v7.app.AlertDialog; |
| import android.support.v7.widget.RecyclerView; |
| import android.text.format.DateUtils; |
| import android.util.Log; |
| import android.view.KeyEvent; |
| import android.view.LayoutInflater; |
| import android.view.View; |
| import android.view.ViewGroup; |
| import android.view.WindowManager; |
| import android.view.inputmethod.EditorInfo; |
| import android.widget.EditText; |
| import android.widget.TextView; |
| |
| import java.util.ArrayList; |
| import java.util.HashSet; |
| import java.util.List; |
| import java.util.Set; |
| |
| import io.v.todos.model.ListMetadata; |
| |
| public final class UIUtil { |
| private UIUtil() { |
| } |
| |
| |
| private static final long JUST_NOW_DURATION = 60 * 60 * 1000 - 1; |
| public static final int ALPHA_PRIMARY = (int)(255 * 0.87); |
| public static final int ALPHA_SECONDARY = (int)(255 * 0.54); |
| public static final int ALPHA_HINT = (int)(255 * 0.38); |
| |
| public static String computeTimeAgo(Context context, long startTime) { |
| long now = System.currentTimeMillis(); |
| // TODO(alexfandrianto): We could use even shorter strings for times. |
| return (now - startTime > JUST_NOW_DURATION ? |
| DateUtils.getRelativeTimeSpanString(startTime, now, DateUtils.HOUR_IN_MILLIS, |
| DateUtils.FORMAT_ABBREV_ALL).toString() : |
| context.getString(R.string.just_now)); |
| } |
| |
| private static AlertDialog lastDialog; |
| |
| public static AlertDialog getLastDialog() { |
| return lastDialog; |
| } |
| |
| public static void showAddDialog(Context context, String title, |
| final DialogResponseListener addListener) { |
| final EditText todoItem = new EditText(context); |
| |
| AlertDialog dialog = new AlertDialog.Builder(context) |
| .setTitle(title) |
| .setView(todoItem) |
| .setPositiveButton("Add", new DialogInterface.OnClickListener() { |
| public void onClick(DialogInterface dialog, int whichButton) { |
| addListener.handleResponse(todoItem.getText().toString()); |
| } |
| }) |
| .setNegativeButton("Cancel", new DialogInterface.OnClickListener() { |
| public void onClick(DialogInterface dialog, int whichButton) { |
| } |
| }).show(); |
| dialog.getWindow().setSoftInputMode( |
| WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE); |
| lastDialog = dialog; |
| } |
| |
| public static void showEditDialog(Context context, String title, String defaultValue, |
| final DialogResponseListener editListener) { |
| final EditText todoItem = new EditText(context); |
| todoItem.setText(defaultValue); |
| |
| AlertDialog dialog = new AlertDialog.Builder(context) |
| .setTitle(title) |
| .setView(todoItem) |
| .setPositiveButton("Save", new DialogInterface.OnClickListener() { |
| public void onClick(DialogInterface dialog, int whichButton) { |
| editListener.handleResponse(todoItem.getText().toString()); |
| } |
| }) |
| .setNeutralButton("Delete", new DialogInterface.OnClickListener() { |
| public void onClick(DialogInterface dialog, int whichButton) { |
| editListener.handleDelete(); |
| } |
| }) |
| .setNegativeButton("Cancel", new DialogInterface.OnClickListener() { |
| public void onClick(DialogInterface dialog, int whichButton) { |
| } |
| }).show(); |
| dialog.getWindow().setSoftInputMode( |
| WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE); |
| lastDialog = dialog; |
| } |
| |
| public static abstract class DialogResponseListener { |
| public abstract void handleResponse(String response); |
| |
| public void handleDelete() { |
| } |
| } |
| } |