/** * Copyright (C) 2012 Iordan Iordanov * Copyright (C) 2010 Michael A. MacDonald * * This 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 2 of the License, or * (at your option) any later version. * * This software 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 this software; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, * USA. */ package com.iiordanov.bVNC.dialogs; import com.iiordanov.bVNC.ConnectionBean; import com.iiordanov.bVNC.Database; import com.iiordanov.bVNC.bVNC; import android.app.Activity; import android.app.Dialog; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import net.sqlcipher.database.SQLiteDatabase; import android.os.Bundle; import android.text.Html; import android.text.method.LinkMovementMethod; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.MenuItem.OnMenuItemClickListener; import android.widget.Button; import android.widget.LinearLayout.LayoutParams; import android.widget.TextView; import com.iiordanov.bVNC.*; import com.iiordanov.freebVNC.*; import com.iiordanov.aRDP.*; import com.iiordanov.freeaRDP.*; import com.iiordanov.aSPICE.*; import com.iiordanov.freeaSPICE.*; /** * @author Michael A. MacDonald * */ public class IntroTextDialog extends Dialog { private PackageInfo packageInfo; private Database database; static IntroTextDialog dialog = null; private boolean donate = false; public static void showIntroTextIfNecessary(Activity context, Database database, boolean show) { PackageInfo pi; try { pi = context.getPackageManager().getPackageInfo(context.getPackageName(), 0); } catch (PackageManager.NameNotFoundException nnfe) { return; } MostRecentBean mr = ConnectionBean.getMostRecent(database.getReadableDatabase()); database.close(); if (dialog == null && show && (mr == null || mr.getShowSplashVersion() != pi.versionCode)) { dialog = new IntroTextDialog(context, pi, database); dialog.show(); } } /** * @param context -- Containing dialog */ private IntroTextDialog(Activity context, PackageInfo pi, Database database) { super(context); setOwnerActivity(context); packageInfo = pi; this.database = database; } /* (non-Javadoc) * @see android.app.Dialog#onCreate(android.os.Bundle) */ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); String pkgName = this.getContext().getPackageName(); if (pkgName.contains("free")) { donate = true; } setContentView(R.layout.intro_dialog); getWindow().setLayout(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); String packageName = getContext().getPackageName(); String title = getContext().getResources().getString(R.string.intro_title); if (Utils.isRdp(packageName)) { title = getContext().getResources().getString(R.string.rdp_intro_title); } else if (Utils.isSpice(packageName)) { title = getContext().getResources().getString(R.string.spice_intro_title); } StringBuilder sb = new StringBuilder(title); setTitle(sb); sb.delete(0, sb.length()); if (pkgName.contains("SPICE")) { sb.append(getContext().getResources().getString(R.string.ad_donate_text_spice)); sb.append("<br>"); sb.append("<br>"); } else if (pkgName.contains("RDP")) { sb.append(getContext().getResources().getString(R.string.ad_donate_text_rdp)); sb.append("<br>"); sb.append("<br>"); } sb.append(getContext().getResources().getString(R.string.ad_donate_text0)); sb.append("<br>"); sb.append("<br>"); String donationPackageName = Utils.getDonationPackageName(getContext()); if (donate) { sb.append("<a href=\"market://DETAILS?id=" + donationPackageName + "\">" + getContext().getResources().getString(R.string.ad_donate_text1) + "</a>"); sb.append("<br>"); sb.append("<br>"); sb.append(getContext().getResources().getString(R.string.ad_donate_text2)); sb.append("<br>"); sb.append("<br>"); sb.append(getContext().getResources().getString(R.string.ad_donate_text3)); sb.append(" <a href=\"market://details?id=com.iiordanov.bVNC\">VNC</a>"); sb.append(", "); sb.append("<a href=\"market://details?id=com.iiordanov.aRDP\">RDP</a>"); sb.append(", "); sb.append("<a href=\"market://details?id=com.iiordanov.aSPICE\">SPICE</a>"); sb.append(", "); sb.append("<a href=\"market://details?id=com.undatech.opaque\">oVirt/RHEV</a>"); sb.append("<br>"); sb.append("<br>"); } sb.append(getContext().getResources().getString(R.string.intro_header)); if (Utils.isVnc(packageName)) { sb.append(getContext().getResources().getString(R.string.intro_text)); } else if (Utils.isRdp(packageName)) { sb.append(getContext().getResources().getString(R.string.rdp_intro_text)); } else if (Utils.isSpice(packageName)) { sb.append(getContext().getResources().getString(R.string.spice_intro_text)); } sb.append("\n"); sb.append(getContext().getResources().getString(R.string.intro_version_text)); TextView introTextView = (TextView)findViewById(R.id.textIntroText); introTextView.setText(Html.fromHtml(sb.toString())); introTextView.setMovementMethod(LinkMovementMethod.getInstance()); ((Button)findViewById(R.id.buttonCloseIntro)).setOnClickListener(new View.OnClickListener() { /* (non-Javadoc) * @see android.view.View.OnClickListener#onClick(android.view.View) */ @Override public void onClick(View v) { showAgain(true); } }); Button buttonCloseIntroDontShow = (Button)findViewById(R.id.buttonCloseIntroDontShow); if (donate) { buttonCloseIntroDontShow.setVisibility(View.GONE); } else { buttonCloseIntroDontShow.setOnClickListener(new View.OnClickListener() { /* (non-Javadoc) * @see android.view.View.OnClickListener#onClick(android.view.View) */ @Override public void onClick(View v) { showAgain(false); } }); } } /* (non-Javadoc) * @see android.app.Dialog#onCreateOptionsMenu(android.view.Menu) */ @Override public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu); getOwnerActivity().getMenuInflater().inflate(R.menu.intro_dialog_menu,menu); // Disabling Manual/Wiki Menu item as the original does not correspond to this project anymore. /* menu.findItem(R.id.itemOpenDoc).setOnMenuItemClickListener(new OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { Utils.showDocumentation(getOwnerActivity()); dismiss(); return true; } }); */ menu.findItem(R.id.itemClose).setOnMenuItemClickListener(new OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { showAgain(true); return true; } }); menu.findItem(R.id.itemDontShowAgain).setOnMenuItemClickListener(new OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { showAgain(false); return true; } }); return true; } /* * (non-Javadoc) * @see android.app.Dialog#onBackPressed() */ @Override public void onBackPressed () { showAgain(true); } private void showAgain(boolean show) { SQLiteDatabase db = database.getWritableDatabase(); MostRecentBean mostRecent = ConnectionBean.getMostRecent(db); if (mostRecent != null) { int value = -1; if (!show) { value = packageInfo.versionCode; } mostRecent.setShowSplashVersion(value); mostRecent.Gen_update(db); } database.close(); dismiss(); dialog = null; } }