summaryrefslogtreecommitdiffstats
path: root/tdeui/tests/kwindowtest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tdeui/tests/kwindowtest.cpp')
-rw-r--r--tdeui/tests/kwindowtest.cpp528
1 files changed, 528 insertions, 0 deletions
diff --git a/tdeui/tests/kwindowtest.cpp b/tdeui/tests/kwindowtest.cpp
new file mode 100644
index 000000000..0615d492f
--- /dev/null
+++ b/tdeui/tests/kwindowtest.cpp
@@ -0,0 +1,528 @@
+#include <tqmessagebox.h>
+#include <tqpopupmenu.h>
+#include <tqpixmap.h>
+#include <tqkeycode.h>
+#include <tqwidget.h>
+#include <tqstring.h>
+#include <tqcursor.h>
+
+#include <stdlib.h>
+
+#include <kstatusbar.h>
+#include <kapplication.h>
+#include <kcombobox.h>
+#include <khelpmenu.h>
+#include <kcmdlineargs.h>
+#include <kmenubar.h>
+#include <ktoolbarradiogroup.h>
+#include <kiconloader.h>
+#include <kpopupmenu.h>
+#include <tqmultilineedit.h>
+#include "kwindowtest.h"
+
+#include <kglobal.h>
+
+
+//#include <dclock.h>
+
+/*
+ Ok this is a constructor of our top widget. It inherits KMainWindow.
+ In constructor wi will create all of our interface elements:
+ menubar, toolbar(s), statusbar, and main widget. Non of those
+ interface is obligatory, i.e. you don't have to use menubar,
+ toolbars or statusbar if you don't want to. Theoreticly, you
+ don't need even main widget (but in that case, you'll get blank
+ KMainWindow).
+ */
+
+static int itemId = 0;
+
+testWindow::testWindow (TQWidget *parent, const char *name)
+ : KMainWindow (parent,name)
+{
+ ena=false;
+ setCaption("test window");
+setAutoSaveSettings();
+ /******************************/
+ /* First, we setup setup Menus */
+ /******************************/
+ menuBar = new KMenuBar (this);
+
+ // First popup...
+ fileMenu = new TQPopupMenu;
+ // We insert this popup in menubar with caption "File".
+ // Prefix "&" means that "F" will be underlined
+ menuBar->insertItem ("&File", fileMenu);
+ // We insert item "Exit" with accelerator ALT-Q, and connect
+ // it to application's exit-slot.
+ fileMenu->insertItem ("&Exit", KApplication::kApplication(),
+ TQT_SLOT( quit() ), ALT + Key_Q );
+
+ // Another popup...
+ toolBarMenu = new TQPopupMenu;
+ menuBar->insertItem ("&Toolbars", toolBarMenu);
+ toolBarMenu->insertItem ("(Un)Hide tollbar 1", this, TQT_SLOT(slotHide1()));
+ toolBarMenu->insertItem ("(Un)Hide tollbar 2", this, TQT_SLOT(slotHide2()));
+
+ itemsMenu = new TQPopupMenu;
+ menuBar->insertItem ("&Items", itemsMenu);
+
+ exitB = true; // exit button is shown
+ lineL = true; // Lined is enabled
+ greenF = false; // Frame not inserted
+
+ itemsMenu->insertItem ("delete/insert exit button", this, TQT_SLOT(slotExit()));
+ itemsMenu->insertItem ("insert/delete green frame!", this, TQT_SLOT(slotFrame()));
+ itemsMenu->insertItem ("enable/disable Lined", this, TQT_SLOT(slotLined()));
+ itemsMenu->insertItem ("Toggle fileNew", this, TQT_SLOT(slotNew()));
+ itemsMenu->insertItem ("Clear comboBox", this, TQT_SLOT(slotClearCombo()));
+ itemsMenu->insertItem ("Insert List in Combo", this, TQT_SLOT(slotInsertListInCombo()));
+ itemsMenu->insertItem ("Make item 3 curent", this, TQT_SLOT(slotMakeItem3Current()));
+ //itemsMenu->insertItem ("Insert clock!", this, TQT_SLOT(slotInsertClock()));
+ itemsMenu->insertItem ("Important!", this, TQT_SLOT(slotImportant()));
+
+ menuBar->insertSeparator();
+ helpMenu = new KHelpMenu(this, "KWindowTest was programmed by Sven Radej");
+ menuBar->insertItem( "&Help", helpMenu->menu() );
+
+ /**************************************************/
+ /*Now, we setup statusbar order is not important. */
+ /**************************************************/
+ statusBar = new KStatusBar (this);
+ statusBar->insertItem("Hi there! ", 0);
+ statusBar->insertItem("Look for tooltips to see functions", 1);
+
+ //DigitalClock *clk = new DigitalClock (statusBar);
+ //clk->setFrameStyle(TQFrame::NoFrame);
+ //statusBar->insertWidget(clk, 70, 2);
+
+ /***********************/
+ /* And now the toolbar */
+ /***********************/
+
+ // pixmap which we will use
+ TQPixmap pix;
+
+ // Create toolbar...
+ tb = toolBar();
+
+ // and set it to full width
+ tb->setFullSize(true);
+
+
+
+ // First four buttons
+ pix = BarIcon("filenew");
+ itemId = tb->insertButton(pix, 0, TQT_SIGNAL(clicked()), this, TQT_SLOT(slotNew()),
+ true, "Create.. (toggles upper button)", 50);
+ pix = BarIcon("fileopen");
+ tb->insertButton(pix, 1, TQT_SIGNAL(clicked()), this, TQT_SLOT(slotOpen()),
+ false, "Open");
+ pix = BarIcon("filefloppy");
+ tb->insertButton(pix, 2, TQT_SIGNAL(clicked()), this, TQT_SLOT(slotSave()),
+ true, "Save (beep or delayed popup)");
+ tb->setDelayedPopup(2, itemsMenu);
+ pix = BarIcon("fileprint");
+ tb->insertButton(pix, 3, TQT_SIGNAL(clicked()), this, TQT_SLOT(slotPrint()),
+ true, "Print (enables/disables open)");
+
+ // And a combobox
+ // arguments: text (or strList), ID, writable, signal, object, slot, enabled,
+ // tooltiptext, size
+ tb->insertCombo (TQString("one"), 4, true, TQT_SIGNAL(activated(const TQString&)), this,
+ TQT_SLOT(slotList(const TQString&)), true, "ComboBox", 150);
+
+
+ // Then one line editor
+ // arguments: text, id, signal, object (this), slot, enabled, tooltiptext, size
+ tb->insertLined ("ftp://ftp.kde.org/pub/kde", 5, TQT_SIGNAL(returnPressed()), this,
+ TQT_SLOT(slotReturn()), true, "Location", 200);
+
+ // Set this Lined to auto size itself. Note that only one item (Lined or Combo)
+ // Can be set to autosize; If you specify more of them only last (according to
+ /// index) will be set to autosize itself. Only Lined or Combo can be
+ // set to autosize. All items after autoSized one must be aligned right.
+ // Auto size is valid only for fullWidth toolbars.
+
+ tb->setItemAutoSized (5);
+
+ // Now add another button and align it right
+ pix = BarIcon("exit");
+ tb->insertButton(pix, 6, TQT_SIGNAL(clicked()), KApplication::kApplication(),
+ TQT_SLOT( quit() ), true, "Exit");
+ tb->alignItemRight (6);
+
+ // Another toolbar
+ tb1 = new KToolBar(this, TQMainWindow::DockTop); // this one is normal and has separators
+
+
+ pix = BarIcon("filenew");
+ tb1->insertButton(pix, 0, true, "Create new file2 (Toggle)");
+ tb1->setToggle(0);
+ tb1->addConnection (0, TQT_SIGNAL(toggled(bool)), this, TQT_SLOT(slotToggle(bool)));
+
+ pix = BarIcon("fileopen");
+ tb1->insertButton(pix, 1, TQT_SIGNAL(clicked()), this, TQT_SLOT(slotOpen()),
+ true, "Open (starts progres in sb)");
+
+ tb1->insertSeparator ();
+
+ pix = BarIcon("filefloppy");
+ tb1->insertButton(pix, 2, TQT_SIGNAL(clicked()), this, TQT_SLOT(slotSave()),
+ true, "Save file2 (autorepeat)");
+ tb1->setAutoRepeat(2);
+
+ pix = BarIcon("fileprint");
+ tb1->insertButton(pix, 3, itemsMenu, true, "Print (pops menu)");
+
+ tb1->insertSeparator ();
+ /**** RADIO BUTTONS */
+ pix = BarIcon("filenew");
+ tb1->insertButton(pix, 4, true, "Radiobutton1");
+ tb1->setToggle(4);
+
+ pix = BarIcon("fileopen");
+ tb1->insertButton(pix, 5, true, "Radiobutton2");
+ tb1->setToggle(5);
+
+ pix = BarIcon("filefloppy");
+ tb1->insertButton(pix, 6, true, "Radiobutton3");
+ tb1->setToggle(6);
+
+ pix = BarIcon("fileprint");
+ tb1->insertButton(pix, 7, true, "Radiobutton4");
+ tb1->setToggle(7);
+
+ //Create
+ rg = new KToolBarRadioGroup (tb1);
+
+ rg->addButton(4);
+ rg->addButton(5);
+ rg->addButton(6);
+ rg->addButton(7);
+
+ connect (tb1, TQT_SIGNAL(toggled(int)), this, TQT_SLOT(slotToggled(int)));
+
+ // Set caption for floating toolbars
+ tb->setTitle ("Toolbar 1");
+ tb1->setTitle ("Toolbar 2");
+
+ // Set main widget. In this example it is Qt's multiline editor.
+ widget = new TQMultiLineEdit (this);
+
+ // Setup is now complete
+
+ // add two toolbars
+ //addToolBar (tb1);
+ //addToolBar (tb);
+
+ connect (tb, TQT_SIGNAL(highlighted(int,bool)), this, TQT_SLOT(slotMessage(int, bool)));
+ connect (tb1, TQT_SIGNAL(highlighted(int, bool)), this, TQT_SLOT(slotMessage(int, bool)));
+
+ // Floating is enabled by default, so you don't need this.
+ // tb->enableFloating(true);
+ // tb1->enableFloating(true);
+
+ // Show toolbars
+ tb->show();
+ tb1->show();
+
+ //... and main widget
+ setCentralWidget (widget);
+
+ // This is not strictly related to toolbars, menubars or KMainWindow.
+ // Setup popup for completions
+ completions = new TQPopupMenu;
+
+ completions->insertItem("/");
+ completions->insertItem("/usr/");
+ completions->insertItem("/lib/");
+ completions->insertItem("/var/");
+ completions->insertItem("/bin/");
+ completions->insertItem("/kde/");
+ completions->insertItem("/home/");
+ completions->insertItem("/vmlinuz :-)");
+
+ connect (completions, TQT_SIGNAL(activated(int)), this, TQT_SLOT(slotCompletionsMenu(int)));
+ pr = 0;
+}
+/***********************************/
+/* Now slots for toolbar actions */
+/***********************************/
+void testWindow::slotToggled(int)
+{
+ statusBar->message ("Buton toggled", 1500);
+}
+
+void testWindow::slotInsertClock()
+{
+ //DigitalClock *clock = new DigitalClock(tb1);
+ //clock->setFrameStyle(TQFrame::NoFrame);
+ //tb1->insertWidget(8, 70, clock);
+}
+
+void testWindow::slotNew()
+{
+ tb1->toggleButton(0);
+ toolBar()->removeItem( itemId );
+}
+void testWindow::slotOpen()
+{
+ if (pr == 0)
+ pr = new TQProgressBar (statusBar);
+// statusBar->message(pr);
+ timer = new TQTimer (pr);
+
+ connect (timer, TQT_SIGNAL(timeout()), this, TQT_SLOT(slotGoGoGoo()));
+ timer->start(100);
+}
+
+void testWindow::slotGoGoGoo()
+{
+ pr->setProgress(pr->progress()+1);
+ if (pr->progress()==100)
+ {
+ timer->stop();
+ statusBar->clear();
+ delete pr;
+ pr = 0;
+ }
+}
+
+void testWindow::slotSave()
+{
+ kapp->beep();
+ statusBar->changeItem("Saving properties...", 0);
+}
+
+void testWindow::slotPrint()
+{
+ statusBar->changeItem("Print file pressed", 0);
+ ena=!ena;
+ tb->setItemEnabled(1,ena );
+}
+void testWindow::slotReturn()
+{
+ TQString s = "You entered ";
+ s = s + tb->getLinedText(5);
+ statusBar->changeItem(s, 0);
+
+}
+void testWindow::slotList(const TQString &str)
+{
+ TQString s = "You chose ";
+ s = s + str;
+ statusBar->changeItem(s, 0);
+}
+
+void testWindow::slotCompletion()
+{
+ // Now do a completion
+ // Call your completing function and set that text in klined
+ // TQString s = tb->getLinedText(/* ID */ 4)
+ // TQString completed = complete (s);
+ // tb->setLinedText(/* ID */ 4, completed.data())
+
+ // for now this:
+
+ completions->popup(TQCursor::pos()); // This popup should understunf keys up and down
+
+ /* This is just an example. KLined automatically sets cursor at end of string
+ when ctrl-d or ctrl-s is pressed. KToolBar will also put cursor at end of text in Lined
+ after inserting text with setLinedText (...).
+ */
+
+}
+
+void testWindow::slotListCompletion()
+{
+ /*
+ Combo is not behaving good and it is ugly. I will see how it behaves in Qt-1.3,
+ and then decide should I make a new combobox.
+ */
+ TQString s(tb->getComboItem(4)); // get text in combo
+ s+= "(completing)";
+ //tb->getCombo(4)->changeItem(s.data()); // setTextIncombo
+
+}
+
+void testWindow::slotCompletionsMenu(int id)
+{
+ // Now set text in lined
+ TQString s =completions->text(id);
+ tb->setLinedText(5, s); // Cursor is automatically at the end of string after this
+}
+
+void testWindow::slotHide2 ()
+{
+ tb1->show();
+}
+
+void testWindow::slotHide1 ()
+{
+ tb->show();
+}
+
+testWindow::~testWindow ()
+{
+ /********************************************************/
+ /* */
+ /* THIS IS NOT ANY MORE IMPORTANT BUT ALLOWED!!! */
+ /* */
+ /********************************************************/
+
+ delete tb1->getWidget(8);
+ //debug ("kwindowtest: deleted clock");
+
+ delete tb;
+ delete tb1;
+ delete menuBar;
+
+ qDebug ("kwindowtest finished");
+}
+
+void testWindow::beFixed()
+{
+ widget->setFixedSize (400, 200);
+}
+
+void testWindow::beYFixed()
+{
+ widget->setMinimumSize(400, 200);
+ widget->setMaximumSize(9999, 200);
+}
+
+void testWindow::slotImportant ()
+{
+ statusBar->message("This important message will go away in 15 seconds", 15000);
+}
+
+void testWindow::slotExit ()
+{
+ if (exitB == true)
+ {
+ tb->removeItem(6);
+ exitB = false;
+ }
+ else
+ {
+ TQPixmap pix;
+ pix = BarIcon("exit");
+ tb->insertButton(pix, 6, TQT_SIGNAL(clicked()), KApplication::kApplication(),
+ TQT_SLOT( quit() ), true, "Exit");
+ tb->alignItemRight (6);
+ exitB = true;
+ }
+}
+
+void testWindow::slotLined()
+{
+ lineL = !lineL;
+ tb->setItemEnabled(5, lineL); // enable/disable lined
+}
+
+void testWindow::slotToggle (bool on)
+{
+ if (on == true)
+ statusBar->changeItem("Toggle is on", 0);
+ else
+ statusBar->changeItem("Toggle is off", 0);
+}
+
+void testWindow::slotFrame()
+{
+#if 0
+ if (greenF == false)
+ {
+ tb1->insertFrame(10, 100);
+ tb1->alignItemRight (10); // this is pointless 'cause tb1 is not fullwidth
+
+ TQFrame *myFrame = tb1->getFrame(10); // get frame pointer
+
+ if (myFrame == 0)
+ {
+ warning ("bad frame ID");
+ return;
+ }
+
+ //paint it green
+ // Or do whatever you want with it, just don't change its height (height = hardcoded = 24)
+ // And don't move it
+ // If you want to have something right from your toolbar you can reduce its
+ // max_width with setMaxWidth()
+ myFrame->setBackgroundColor (TQColor("green"));
+
+ greenF = true;
+ }
+ else
+ {
+ tb1->removeItem (10);
+ greenF = false;
+ }
+#endif
+}
+
+void testWindow::slotMessage(int, bool boo)
+{
+ if (boo)
+ statusBar->message("This button does this and that", 1500);
+ else
+ statusBar->clear();
+}
+// Now few Combo slots, for Torben
+
+void testWindow::slotClearCombo()
+{
+ tb->getCombo(4)->clear();
+}
+
+void testWindow::slotInsertListInCombo()
+{
+ TQStringList list;
+ list.append("ListOne");
+ list.append("ListTwo");
+ list.append("ListThree");
+ list.append("ListFour");
+ list.append("ListFive");
+ list.append("ListSix");
+ list.append("ListSeven");
+ list.append("ListEight");
+ list.append("ListNine");
+ list.append("ListTen");
+ list.append("ListEleven");
+ list.append("ListAndSoOn");
+ tb->getCombo(4)->insertStringList (list,0);
+}
+
+void testWindow::slotMakeItem3Current()
+{
+ tb->getCombo(4)->setCurrentItem(3);
+}
+
+int main( int argc, char *argv[] )
+{
+ int i;
+ KCmdLineArgs::init(argc, argv, "KWindowTest", "description", "version");
+
+ KApplication *myApp = new KApplication();
+ testWindow *test = new testWindow;
+
+ myApp->setMainWidget(test);
+
+ i = TQMessageBox::information(0, "Select", "Select type of mainwidget",
+ "Fixed", "Y-fixed", "Resizable");
+ if (i == 0)
+ test->beFixed();
+ else if (i == 1)
+ test->beYFixed();
+
+ test->show();
+ test->resize(400, 500);
+ int ret = myApp->exec();
+
+ //delete test;
+ return ret;
+}
+
+#include "kwindowtest.moc"
+