From: Manuel Nickschas Date: Thu, 29 Nov 2007 02:16:45 +0000 (+0000) Subject: Added nicklist for QuasselTopia. Various cosmetic and visual fixes. X-Git-Tag: 0.1.0~53 X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=commitdiff_plain;h=69952553cf2f5248a0c7e964d6d5844065d26612 Added nicklist for QuasselTopia. Various cosmetic and visual fixes. No more crashing on text input. Is it can be sleepsy tiem now? --- diff --git a/qtopia-build/quasseltopia.pro b/qtopia-build/quasseltopia.pro index a4db28b3..5f26232f 100644 --- a/qtopia-build/quasseltopia.pro +++ b/qtopia-build/quasseltopia.pro @@ -33,14 +33,14 @@ desktop.path=/apps/Applications desktop.hint=nct desktop pics.files=../src/images/qirc-icon.png -pics.path=/pics/quasselirc/ +pics.path=/pics/quasselirc pics.hint=pics #help.source=help #help.files=example.html #help.hint=help -INSTALLS+=desktop +INSTALLS+=desktop pics pkg.name=QuasselTopia pkg.desc=Quassel IRC, a next-gen IRC client diff --git a/src/qtopia/bufferviewwidget.cpp b/src/qtopia/bufferviewwidget.cpp index b884cdef..18afc461 100644 --- a/src/qtopia/bufferviewwidget.cpp +++ b/src/qtopia/bufferviewwidget.cpp @@ -25,7 +25,7 @@ BufferViewWidget::BufferViewWidget(QWidget *parent) : QDialog(parent) { ui.setupUi(this); setModal(true); - setStyleSheet("background-color: rgba(255, 255, 255, 40%); color: rgb(0, 0, 0); font-size: 5pt;"); + setStyleSheet("background-color: rgba(220, 220, 255, 40%); color: rgb(0, 0, 0); font-size: 5pt;"); //ui.tabWidget->tabBar()->setStyleSheet("font-size: 5pt;"); // get rid of the default tab page designer forces upon us :( diff --git a/src/qtopia/mainwidget.cpp b/src/qtopia/mainwidget.cpp index 520ba766..b083a8ec 100644 --- a/src/qtopia/mainwidget.cpp +++ b/src/qtopia/mainwidget.cpp @@ -25,6 +25,7 @@ MainWidget::MainWidget(QWidget *parent) : QWidget(parent) { ui.setupUi(this); + ui.inputLine->hide(); ui.topicBar->hide(); connect(ui.inputLine, SIGNAL(returnPressed()), this, SLOT(enterPressed())); currentBuffer = 0; } @@ -63,6 +64,7 @@ void MainWidget::setBuffer(Buffer *buf) { chatWidgets.insert(buf, chatWidget); chatWidget->setFocusProxy(ui.inputLine); } else chatWidget = chatWidgets[buf]; + ui.inputLine->show(); ui.topicBar->show(); ui.stack->setCurrentWidget(chatWidget); ui.inputLine->setFocus(); currentBuffer = buf; diff --git a/src/qtopia/nicklistwidget.cpp b/src/qtopia/nicklistwidget.cpp index e53b6a39..36f524a6 100644 --- a/src/qtopia/nicklistwidget.cpp +++ b/src/qtopia/nicklistwidget.cpp @@ -19,11 +19,14 @@ ***************************************************************************/ #include "nicklistwidget.h" -//#include "nicktreemodel.h" + +#include "buffer.h" +#include "nickview.h" NickListWidget::NickListWidget(QWidget *parent) : QDialog(parent) { ui.setupUi(this); - + setModal(true); + setStyleSheet("background-color: rgba(220, 220, 255, 40%); color: rgb(0, 0, 0); font-size: 5pt;"); } @@ -34,7 +37,29 @@ NickListWidget::~NickListWidget() { } -void NickListWidget::setNickModel(NickTreeModel *model) { - //ui.nickView->setModel(model); +void NickListWidget::setBuffer(Buffer *buf) { + if(!buf) { + ui.stackedWidget->setCurrentWidget(ui.emptyPage); + return; + } + if(buf->bufferType() != Buffer::ChannelType) { + ui.stackedWidget->setCurrentWidget(ui.emptyPage); + } else { + if(nickViews.contains(buf)) { + ui.stackedWidget->setCurrentWidget(nickViews.value(buf)); + } else { + NickView *view = new NickView(this); + view->setModel(buf->nickModel()); + nickViews[buf] = view; + ui.stackedWidget->addWidget(view); + ui.stackedWidget->setCurrentWidget(view); + } + } +} +void NickListWidget::reset() { + foreach(NickView *view, nickViews.values()) { + ui.stackedWidget->removeWidget(view); + view->deleteLater(); + } } diff --git a/src/qtopia/nicklistwidget.h b/src/qtopia/nicklistwidget.h index 6f357164..7d1b1094 100644 --- a/src/qtopia/nicklistwidget.h +++ b/src/qtopia/nicklistwidget.h @@ -25,7 +25,8 @@ #include "ui_nicklistwidget.h" -class NickTreeModel; +class Buffer; +class NickView; class NickListWidget : public QDialog { Q_OBJECT @@ -35,10 +36,12 @@ class NickListWidget : public QDialog { ~NickListWidget(); public slots: - void setNickModel(NickTreeModel *model); + void setBuffer(Buffer *); + void reset(); private: Ui::NickListWidget ui; + QHash nickViews; }; diff --git a/src/qtopia/qtopiamainwin.cpp b/src/qtopia/qtopiamainwin.cpp index 6348a028..02bbe712 100644 --- a/src/qtopia/qtopiamainwin.cpp +++ b/src/qtopia/qtopiamainwin.cpp @@ -32,6 +32,9 @@ #include "signalproxy.h" #include +#include + +#define DEBUGMODE // This constructor is the first thing to be called for a Qtopia app, so we do the init stuff // here (rather than in a main.cpp). @@ -91,21 +94,42 @@ QtopiaMainWin::~QtopiaMainWin() { } +void QtopiaMainWin::closeEvent(QCloseEvent *event) { +#ifndef DEBUGMODE + QMessageBox *box = new QMessageBox(QMessageBox::Question, tr("Quit Quassel IRC?"), tr("Do you really want to quit Quassel IRC?"), + QMessageBox::Cancel, this); + QAbstractButton *quit = box->addButton(tr("Quit"), QMessageBox::AcceptRole); + box->exec(); + if(box->clickedButton() == quit) event->accept(); + else event->ignore(); + box->deleteLater(); +#else + event->accept(); +#endif +} + void QtopiaMainWin::setupActions() { showBuffersAction = toolBar->addAction(QIcon(":icon/options-hide"), "Show Buffers", this, SLOT(showBufferView())); // FIXME provide real icon showNicksAction = toolBar->addAction(QIcon(":icon/list"), "Show Nicks", this, SLOT(showNickList())); + QMenu *menu = new QMenu(this); + menu->addAction(showBuffersAction); + menu->addAction(showNicksAction); + QSoftMenuBar::addMenuTo(this, menu); } void QtopiaMainWin::connectedToCore() { foreach(BufferInfo id, Client::allBufferInfos()) { emit requestBacklog(id, 100, -1); } + +#ifdef DEBUGMODE // FIXME just for testing: select first available buffer if(Client::allBufferInfos().count() > 1) { Buffer *b = Client::buffer(Client::allBufferInfos()[1]); Client::bufferModel()->selectBuffer(b); } +#endif } void QtopiaMainWin::disconnectedFromCore() { @@ -121,7 +145,7 @@ AbstractUiMsg *QtopiaMainWin::layoutMsg(const Message &msg) { void QtopiaMainWin::showBuffer(Buffer *b) { mainWidget->setBuffer(b); bufferViewWidget->hide(); - //nickListWidget-> + nickListWidget->setBuffer(b); } diff --git a/src/qtopia/qtopiamainwin.h b/src/qtopia/qtopiamainwin.h index 6f93f62b..23981cc4 100644 --- a/src/qtopia/qtopiamainwin.h +++ b/src/qtopia/qtopiamainwin.h @@ -52,6 +52,9 @@ class QtopiaMainWin : public QMainWindow { void showBufferView(); void showNickList(); + protected: + void closeEvent(QCloseEvent *); + private: void init(); void setupActions(); diff --git a/src/qtopia/quasseltopia.desktop b/src/qtopia/quasseltopia.desktop index e1ca46d4..a71b48da 100644 --- a/src/qtopia/quasseltopia.desktop +++ b/src/qtopia/quasseltopia.desktop @@ -5,6 +5,6 @@ [Desktop Entry] Comment[]=A Next-Gen IRC Client Exec=quasseltopia -Icon=/pics/quasselirc/qirc-icon.png +Icon=quasselirc/qirc-icon Type=Application Name[]=QuasselTopia diff --git a/src/qtopia/ui/mainwidget.ui b/src/qtopia/ui/mainwidget.ui index 00027c63..a4c192a7 100644 --- a/src/qtopia/ui/mainwidget.ui +++ b/src/qtopia/ui/mainwidget.ui @@ -52,6 +52,9 @@ 0 + + background-color: rgba(220, 220, 255, 40%) + @@ -59,9 +62,9 @@ <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Trebuchet MS'; font-size:10pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:29pt; color:#7fff00;">Quassel IRC</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:29pt; color:#7fff00;"><span style=" font-size:10pt;">mobile edition</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:29pt; color:#483d8b;"><span style=" font-size:6pt; color:#fff8dc;">Chat anywhere. Comfortably.</span></p></body></html> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:29pt; color:#00008b;">Quassel IRC</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:29pt; color:#7fff00;"><span style=" font-size:10pt; color:#00008b;">mobile edition</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:29pt; color:#483d8b;"><span style=" font-size:6pt; color:#000000;">Chat comfortably. Anywhere.</span></p></body></html> true diff --git a/src/qtopia/ui/nicklistwidget.ui b/src/qtopia/ui/nicklistwidget.ui index 889ddaee..2287049d 100644 --- a/src/qtopia/ui/nicklistwidget.ui +++ b/src/qtopia/ui/nicklistwidget.ui @@ -6,37 +6,23 @@ 0 0 240 - 286 + 285 Nicks in Channel - - 1 - - - 1 - - - 1 - - - 1 - - + + + 0 + + + - - - NickView - QTreeView -
nickview.h
-
-
diff --git a/src/qtui/mainwin.cpp b/src/qtui/mainwin.cpp index c5ab8fdc..8d39122d 100644 --- a/src/qtui/mainwin.cpp +++ b/src/qtui/mainwin.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-07 by The Quassel Team * + * Copyright (C) 2005-07 by the Quassel IRC Team * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * diff --git a/src/uisupport/inputline.cpp b/src/uisupport/inputline.cpp index dbfb61cb..aa1ff85e 100644 --- a/src/uisupport/inputline.cpp +++ b/src/uisupport/inputline.cpp @@ -58,7 +58,7 @@ void InputLine::keyPressEvent(QKeyEvent * event) { bool InputLine::event(QEvent *e) { if(e->type() == QEvent::KeyPress) { - keyPressEvent(dynamic_cast(e)); + keyPressEvent(static_cast(e)); return true; } return QLineEdit::event(e);