/* * This file is part of WhereYouGo. * * WhereYouGo is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * WhereYouGo is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with WhereYouGo. If not, see <http://www.gnu.org/licenses/>. * * Copyright (C) 2012 Menion <whereyougo@asamm.cz> */ package menion.android.whereyougo.gui.extension; import menion.android.whereyougo.R; import menion.android.whereyougo.utils.Utils; import android.app.Activity; import android.content.DialogInterface; import android.graphics.Bitmap; import android.view.View; import android.widget.Button; import android.widget.ImageButton; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.LinearLayout.LayoutParams; import android.widget.RelativeLayout; import android.widget.TextView; public class CustomDialog { public static final int NO_IMAGE = Integer.MIN_VALUE; public static final int BOTTOM_COLOR_A3 = 0xFFDDDDDD; public interface OnClickListener { public boolean onClick(CustomDialog dialog, View v, int btn); } public static void setTitle(Activity activity, CharSequence titleText, Bitmap titleImage, int titleExtraImg, final OnClickListener titleExtraClick) { setCustomDialogTitle(activity.findViewById(R.id.linear_layout_main), titleText, titleImage, titleExtraImg, titleExtraClick, NO_IMAGE, null); } private static void setCustomDialogTitle(View view, CharSequence titleText, Bitmap titleImage, int titleExtraImg1, final OnClickListener titleExtraClick1, int titleExtraImg2, final OnClickListener titleExtraClick2) { // set the dialog title if (titleImage == null && titleText == null && titleExtraImg1 == NO_IMAGE && titleExtraImg2 == NO_IMAGE) { // hide title ((LinearLayout) view.findViewById(R.id.linear_layout_title)).setVisibility(View.GONE); } else { // set title image if (titleImage == null) { ((ImageView) view.findViewById(R.id.image_view_title_logo)).setVisibility(View.INVISIBLE); } else { ((ImageView) view.findViewById(R.id.image_view_title_logo)).setImageBitmap(titleImage); } // set title text ((TextView) view.findViewById(R.id.text_view_title_text)).setText(titleText); // set title extra buttons setCustomDialogTitleButton(view, TITLE_BUTTON_RIGHT, titleExtraImg1, titleExtraClick1); setCustomDialogTitleButton(view, TITLE_BUTTON_LEFT, titleExtraImg2, titleExtraClick2); } } private static final int TITLE_BUTTON_RIGHT = 1; private static final int TITLE_BUTTON_LEFT = 2; private static void setCustomDialogTitleButton(View view, int button, int titleExtraImg, final OnClickListener titleExtraClick) { // set title extra if (titleExtraImg != NO_IMAGE && titleExtraClick != null) { ImageView iv = null; ImageButton ib = null; if (button == TITLE_BUTTON_RIGHT) { iv = (ImageView) view.findViewById(R.id.image_view_separator1); ib = (ImageButton) view.findViewById(R.id.image_button_title1); } else { iv = (ImageView) view.findViewById(R.id.image_view_separator2); ib = (ImageButton) view.findViewById(R.id.image_button_title2); } iv.setVisibility(View.VISIBLE); ib.setVisibility(View.VISIBLE); ib.setImageResource(titleExtraImg); ib.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { titleExtraClick.onClick(null, v, 0); } }); } } public static void setBottom(Activity activity, String positiveButtonText, OnClickListener positiveButtonClickListener, String neutralButtonText, OnClickListener neutralButtonClickListener, String negativeButtonText, OnClickListener negativeButtonClickListener) { setCustomDialogBottom(activity.findViewById(R.id.linear_layout_bottom), positiveButtonText, positiveButtonClickListener, neutralButtonText, neutralButtonClickListener, negativeButtonText, negativeButtonClickListener); } private static void setCustomDialogBottom(View view, String positiveButtonText, OnClickListener positiveButtonClickListener, String neutralButtonText, OnClickListener neutralButtonClickListener, String negativeButtonText, OnClickListener negativeButtonClickListener) { // change colors for 3.0+ if (Utils.isAndroid30OrMore()) { view.findViewById(R.id.linear_layout_bottom).setBackgroundColor(BOTTOM_COLOR_A3); } int btnCount = 0; if (setButton(view, R.id.button_positive, DialogInterface.BUTTON_POSITIVE, positiveButtonText, positiveButtonClickListener)) btnCount++; if (setButton(view, R.id.button_negative, DialogInterface.BUTTON_NEGATIVE, negativeButtonText, negativeButtonClickListener)) btnCount++; if (setButton(view, R.id.button_neutral, DialogInterface.BUTTON_NEUTRAL, neutralButtonText, neutralButtonClickListener)) btnCount++; if (btnCount == 0) { view.findViewById(R.id.linear_layout_bottom).setVisibility(View.GONE); } else if (btnCount == 1) { view.findViewById(R.id.linear_layout_left_spacer).setVisibility(View.VISIBLE); view.findViewById(R.id.linear_layout_right_spacer).setVisibility(View.VISIBLE); } } private static boolean setButton(View layout, int btnId, final int btnType, String text, final OnClickListener click) { if (text != null && click != null) { // set button Button btn = (Button) layout.findViewById(btnId); btn.setText(text); btn.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { click.onClick(null, v, btnType); } }); return true; } else { // if no confirm button just set the visibility to GONE layout.findViewById(btnId).setVisibility(View.GONE); return false; } } // public static void setContent(Activity activity, View view, int margins, boolean dialog) { // setContent(activity, view, margins, false, dialog); // } public static void setContent(Activity activity, View view, int margins, boolean fillHeight, boolean dialog) { // set width to correct values if dialog is shown if (dialog) { UtilsGUI.setWindowDialogCorrectWidth(activity.getWindow()); } LayoutParams lp = new LayoutParams(LayoutParams.MATCH_PARENT, fillHeight ? LayoutParams.MATCH_PARENT : LayoutParams.WRAP_CONTENT); if (margins > 0) lp.setMargins(margins, activity.getResources().getDimensionPixelSize(R.dimen.shadow_height) + margins, margins, margins); LinearLayout llCon = (LinearLayout) activity.findViewById(R.id.linear_layout_content); llCon.setLayoutParams(new RelativeLayout.LayoutParams( LayoutParams.MATCH_PARENT, fillHeight ? LayoutParams.MATCH_PARENT : LayoutParams.WRAP_CONTENT)); addViewToContent(llCon, lp, view); } private static void addViewToContent(View viewContent, LinearLayout.LayoutParams llLp, View view) { LinearLayout llContent = (LinearLayout) viewContent; llContent.removeAllViews(); if (llLp == null) { llContent.addView(view, new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)); } else{ llContent.addView(view, llLp); } } }