package com.quaap.bookymcbookface; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.graphics.Color; import android.net.Uri; import android.os.Bundle; import android.util.Log; import android.view.MenuItem; import android.view.View; import android.view.inputmethod.InputMethodManager; import android.widget.Button; import android.widget.EditText; import android.widget.LinearLayout; import android.widget.PopupMenu; import android.widget.TextView; import android.widget.Toast; import java.util.Map; /** * Copyright (C) 2017 Tom Kliethermes * * This file is part of BookyMcBookface and is 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. * * This program 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. */ public class GetBooksActivity extends Activity implements View.OnClickListener, View.OnLongClickListener{ private EditText nameBox; private EditText urlBox; private LinearLayout list; private BookDb db; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_get_books); db = BookyApp.getDB(this); list = findViewById(R.id.webs_list); nameBox = findViewById(R.id.web_name); urlBox = findViewById(R.id.web_url); Button wadd = findViewById(R.id.web_add); final Button wnew = findViewById(R.id.web_new); final LinearLayout add_layout= findViewById(R.id.web_add_layout); wadd.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (urlBox.getText().length()>0) { String url = urlBox.getText().toString(); String name = url.replaceAll("^https?://([\\w\\-.])(/.*)","$1"); if (nameBox.getText().length()>0) { name = nameBox.getText().toString(); } db.addWebsite(name, url); displayWeb(name, url, true); InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); if (imm!=null) imm.hideSoftInputFromWindow(v.getWindowToken(), 0); add_layout.setVisibility(View.GONE); wnew.setVisibility(View.VISIBLE); } } }); wnew.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { add_layout.setVisibility(View.VISIBLE); wnew.setVisibility(View.GONE); } }); Map<String,String> webs = db.getWebSites(); for (Map.Entry<String,String> web: webs.entrySet()) { displayWeb(web.getValue(), web.getKey()); } } private void displayWeb(String name, String url) { displayWeb(name, url, false); } private void displayWeb(String name, String url, boolean first) { TextView v = new TextView(this); v.setTextSize(24); v.setTextColor(Color.BLUE); v.setPadding(16,16,8,8); v.setText(name); v.setTag(url); v.setOnClickListener(this); v.setOnLongClickListener(this); if (first) { list.addView(v, 0); } else { list.addView(v); } } @Override public void onClick(View v) { try { String url = (String) v.getTag(); if (url != null) { Uri uri = Uri.parse(url); Intent intent = new Intent(Intent.ACTION_VIEW, uri); startActivity(intent); } } catch (Exception e) { Toast.makeText(this, e.getLocalizedMessage(), Toast.LENGTH_LONG).show(); Log.e("Webs", e.getMessage(), e); } } @Override public boolean onLongClick(final View v) { PopupMenu p = new PopupMenu(this, v); MenuItem m = p.getMenu().add("Delete"); m.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { list.removeView(v); db.deleteWebSite((String)v.getTag()); return true; } }); p.show(); return true; } }